Skip to content

Commit

Permalink
Merge pull request #483 from mdavidsaver/add-gha
Browse files Browse the repository at this point in the history
Add github actions build w/ ci-scripts
  • Loading branch information
MarkRivers authored Sep 30, 2023
2 parents 04802cb + 92a6cea commit ac9bbf8
Show file tree
Hide file tree
Showing 7 changed files with 243 additions and 0 deletions.
1 change: 1 addition & 0 deletions .ci
Submodule .ci added at aea790
31 changes: 31 additions & 0 deletions .ci-local/adsupport-config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env python

import os

with open(os.path.join('configure', 'CONFIG_SITE'), 'w') as F:
F.write('''
# ADSupport doesn't include CONFIG_SITE.local...
WITH_BOOST=YES
BOOST_EXTERNAL=YES
WITH_HDF5=YES
HDF5_EXTERNAL=NO
XML2_EXTERNAL=NO
WITH_NETCDF=YES
NETCDF_EXTERNAL=NO
WITH_NEXUS=YES
NEXUS_EXTERNAL=NO
WITH_TIFF=YES
TIFF_EXTERNAL=NO
WITH_JPEG=YES
JPEG_EXTERNAL=NO
WITH_SZIP=YES
SZIP_EXTERNAL=NO
WITH_ZLIB=YES
ZLIB_EXTERNAL=NO
WITH_BLOSC=YES
BLOSC_EXTERNAL=NO
WITH_BITSHUFFLE=YES
BITSHUFFLE_EXTERNAL=NO
''')

print('Wrote configure/CONFIG_SITE')
24 changes: 24 additions & 0 deletions .ci-local/adsupport.set
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
MODULES=PVDATA PVACCESS NT PVDATABASE asyn ADSupport

BASE_DIRNAME=base
BASE_REPONAME=epics-base
BASE_REPOOWNER=epics-base
BASE_VARNAME=EPICS_BASE
BASE_RECURSIVE=no

PVDATA_REPONAME=pvDataCPP
PVDATA_REPOOWNER=epics-base

PVACCESS_REPONAME=pvAccessCPP
PVACCESS_REPOOWNER=epics-base

NT_REPONAME=normativeTypesCPP
NT_REPOOWNER=epics-base

PVDATABASE_REPONAME=pvDatabaseCPP
PVDATABASE_REPOOWNER=epics-base

ASYN_REPOOWNER=epics-modules

ADSUPPORT_REPOOWNER=areaDetector
ADSUPPORT_HOOK=.ci-local/adsupport-config.py
Empty file added .ci-local/defaults.set
Empty file.
21 changes: 21 additions & 0 deletions .ci-local/os.set
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MODULES=PVDATA PVACCESS NT PVDATABASE asyn

BASE_DIRNAME=base
BASE_REPONAME=epics-base
BASE_REPOOWNER=epics-base
BASE_VARNAME=EPICS_BASE
BASE_RECURSIVE=no

PVDATA_REPONAME=pvDataCPP
PVDATA_REPOOWNER=epics-base

PVACCESS_REPONAME=pvAccessCPP
PVACCESS_REPOOWNER=epics-base

NT_REPONAME=normativeTypesCPP
NT_REPOOWNER=epics-base

PVDATABASE_REPONAME=pvDatabaseCPP
PVDATABASE_REPOOWNER=epics-base

ASYN_REPOOWNER=epics-modules
163 changes: 163 additions & 0 deletions .github/workflows/ci-scripts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
name: ADCore

# Trigger on pushes and PRs to any branch
on:
push:
paths-ignore:
- '**/*.md'
- '**/*.txt'
pull_request:

env:
SETUP_PATH: .ci-local

jobs:
test:
name: ${{ matrix.os }}/${{ matrix.deps }}/${{ matrix.base }}/${{ matrix.cmp }}/${{ matrix.configuration }}
runs-on: ${{ matrix.os }}
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
BASE: ${{ matrix.base }}
SET: ${{ matrix.deps }}

strategy:
fail-fast: false
matrix:
# Job names also name artifacts, character limitations apply
include:
- os: ubuntu-latest
cmp: gcc
configuration: default
base: "7.0"
deps: os
test: true

- os: ubuntu-latest
cmp: gcc
configuration: static
base: "7.0"
deps: os
test: true

- os: ubuntu-latest
cmp: gcc
configuration: static
base: "7.0"
deps: adsupport

- os: ubuntu-latest
cmp: gcc
configuration: default
base: "3.15"
deps: os

- os: ubuntu-latest
cmp: gcc
configuration: static
base: "3.15"
deps: os

# - os: windows-2019
# cmp: vs2019
# configuration: default
# base: "7.0"
# deps: adsupport

- os: windows-2019
cmp: vs2019
configuration: static
base: "7.0"
deps: adsupport
steps:
- uses: actions/checkout@v2
with:
submodules: true

- name: "Linux OS Deps"
if: ${{ matrix.deps == 'os' && matrix.os == 'ubuntu-latest' }}
shell: bash
run: |
sudo apt-get update
sudo apt-get -y install \
libgraphicsmagick++-dev libhdf5-dev libjpeg-dev libnetcdf-dev libtiff-dev libxml2-dev libz-dev \
libblosc-dev libnexus-dev libnetcdf-dev libusb-1.0-0-dev libboost-test-dev libboost-system-dev
cat <<EOF > configure/CONFIG_SITE.linux-x86_64.Common
WITH_PVA=YES
WITH_BOOST=YES
BOOST_EXTERNAL=YES
WITH_HDF5=YES
HDF5_EXTERNAL=YES
USR_CPPFLAGS+=-I/usr/include/hdf5/serial
USR_LDFLAGS+=-L/usr/lib/x86_64-linux-gnu/hdf5/serial
XML2_EXTERNAL=YES
XML2_INCLUDE=/usr/include/libxml2
WITH_NETCDF=YES
NETCDF_EXTERNAL=YES
WITH_NEXUS=YES
NEXUS_EXTERNAL=YES
USR_CPPFLAGS+=-I/usr/include/nexus
WITH_TIFF=YES
TIFF_EXTERNAL=YES
WITH_JPEG=YES
JPEG_EXTERNAL=YES
WITH_SZIP=NO
WITH_ZLIB=YES
ZLIB_EXTERNAL=YES
WITH_BLOSC=YES
BLOSC_EXTERNAL=YES
WITH_BITSHUFFLE=NO
EOF
cat configure/CONFIG_SITE.linux-x86_64.Common
- name: Prepare and compile EPICS dependencies
run: python .ci/cue.py prepare

- name: "ADSupport Deps"
if: ${{ matrix.deps == 'adsupport' }}
shell: bash
run: |
cat <<EOF >> configure/CONFIG_SITE.local
WITH_PVA=YES
WITH_BOOST=NO
WITH_HDF5=YES
HDF5_EXTERNAL=NO
XML2_EXTERNAL=NO
WITH_NETCDF=YES
NETCDF_EXTERNAL=NO
WITH_NEXUS=YES
NEXUS_EXTERNAL=NO
WITH_TIFF=YES
TIFF_EXTERNAL=NO
WITH_JPEG=YES
JPEG_EXTERNAL=NO
WITH_SZIP=YES
SZIP_EXTERNAL=NO
WITH_ZLIB=YES
ZLIB_EXTERNAL=NO
WITH_BLOSC=YES
BLOSC_EXTERNAL=NO
WITH_BITSHUFFLE=YES
BITSHUFFLE_EXTERNAL=NO
EOF
- name: Build main module
run: python .ci/cue.py build

- name: Run test
if: ${{ matrix.test }}
shell: bash
run: ./bin/*/plugin-test
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule ".ci"]
path = .ci
url = https://github.com/epics-base/ci-scripts

0 comments on commit ac9bbf8

Please sign in to comment.