diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml new file mode 100644 index 000000000..4185288e8 --- /dev/null +++ b/.github/workflows/ci-scripts-build.yml @@ -0,0 +1,148 @@ +# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts +# (see: https://github.com/epics-base/ci-scripts) + +# This is YAML - indentation levels are crucial + +# Workflow name, shared by all branches + +name: PCAS + +# Trigger on pushes and PRs to any branch +on: + push: + paths-ignore: + - '.gitattributes' + - '**/*.html' + - '**/*.md' + pull_request: + paths-ignore: + - '.gitattributes' + - '**/*.html' + - '**/*.md' + +env: + SETUP_PATH: .ci-local:.ci + +jobs: + build-pcas: + name: ${{ matrix.name }} + runs-on: ${{ matrix.os }} + # Set environment variables from matrix parameters + env: + CMP: ${{ matrix.cmp }} + BCFG: ${{ matrix.configuration }} + WINE: ${{ matrix.wine }} + EXTRA: ${{ matrix.extra }} + TEST: ${{ matrix.test }} + strategy: + fail-fast: false + matrix: + # Job names also name artifacts, character limitations apply + include: + - os: ubuntu-20.04 + cmp: gcc + configuration: default + wine: "64" + name: "Ub-20 gcc-9 + MinGW" + + - os: ubuntu-20.04 + cmp: gcc + configuration: static + wine: "64" + name: "Ub-20 gcc-9 + MinGW, static" + + - os: ubuntu-20.04 + cmp: gcc + configuration: static + extra: "CMD_CXXFLAGS=-std=c++11" + name: "Ub-20 gcc-9 C++11, static" + + - os: ubuntu-20.04 + cmp: clang + configuration: default + name: "Ub-20 clang-10" + + - os: ubuntu-20.04 + cmp: clang + configuration: default + extra: "CMD_CXXFLAGS=-std=c++11" + name: "Ub-20 clang-10 C++11" + + - os: ubuntu-18.04 + cmp: gcc + configuration: default + name: "Ub-18 gcc-7" + + - os: ubuntu-18.04 + cmp: gcc-8 + utoolchain: true + utoolchain-install: "gcc-8 g++-8" + configuration: default + name: "Ub-18 gcc-8" + + - os: ubuntu-20.04 + cmp: gcc-8 + utoolchain: true + utoolchain-install: "gcc-8 g++-8" + configuration: default + name: "Ub-20 gcc-8" + + - os: macos-latest + cmp: clang + configuration: default + name: "MacOS clang-12" + + - os: windows-2019 + cmp: gcc + configuration: default + name: "Win2019 MinGW" + + - os: windows-2019 + cmp: vs2019 + configuration: default + name: "Win2019 MSC-19" + + - os: windows-2019 + cmp: vs2019 + configuration: static + name: "Win2019 MSC-19, static" + + - os: windows-2019 + cmp: vs2019 + configuration: debug + name: "Win2019 MSC-19, debug" + + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Automatic core dumper analysis + uses: mdavidsaver/ci-core-dumper@master + - name: "apt-get install" + run: | + sudo apt-get update + sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb + if: runner.os == 'Linux' + - name: "apt-get install ${{ matrix.cmp }}" + run: | + sudo apt-get -y install software-properties-common + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get -y install ${{ matrix.utoolchain-install }} + if: matrix.utoolchain + - name: Prepare and compile dependencies + run: python .ci/cue.py prepare + - name: Build main module + run: python .ci/cue.py build + - name: Run main module tests + run: python .ci/cue.py -T 20M test + - name: Upload tapfiles Artifact + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + name: tapfiles ${{ matrix.name }} + path: '**/O.*/*.tap' + if-no-files-found: ignore + - name: Collect and show test results + if: ${{ always() }} + run: python .ci/cue.py -T 5M test-results