# .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 # Set the 'name:' properties to values that work for you (MYMODULE) name: "GHA full build" # Only run manually on: workflow_dispatch env: SETUP_PATH: .ci-local:.ci # For the sequencer on Linux/Windows/MacOS APT: re2c CHOCO: re2c BREW: re2c jobs: build-base: name: ${{ matrix.name }} runs-on: ${{ matrix.os }} # Set environment variables from matrix parameters env: CMP: ${{ matrix.cmp }} BCFG: ${{ matrix.configuration }} BASE: ${{ matrix.base }} WINE: ${{ matrix.wine }} RTEMS: ${{ matrix.rtems }} RTEMS_TARGET: ${{ matrix.rtems_target }} EXTRA: ${{ matrix.extra }} TEST: ${{ matrix.test }} SET: ${{ matrix.set }} strategy: fail-fast: false matrix: # Job names also name artifacts, character limitations apply include: - os: ubuntu-20.04 cmp: gcc configuration: default wine: "64" base: "7.0" set: modules name: "Ub-20 gcc-9 + MinGW" - os: ubuntu-20.04 cmp: gcc configuration: static wine: "64" base: "7.0" set: modules name: "Ub-20 gcc-9 + MinGW, static" - os: ubuntu-20.04 cmp: gcc configuration: static extra: "CMD_CXXFLAGS=-std=c++11" base: "7.0" set: modules name: "Ub-20 gcc-9 C++11, static" - os: ubuntu-20.04 cmp: clang configuration: default extra: "CMD_CXXFLAGS=-std=c++11" base: "7.0" set: modules name: "Ub-20 clang-10 C++11" ### fails building autosave #!- os: ubuntu-20.04 #! cmp: gcc #! configuration: default #! rtems: "4.10" #! base: "7.0" #! set: modules #! name: "Ub-20 gcc-9 + RT-4.10" - os: ubuntu-20.04 cmp: gcc configuration: default rtems: "4.9" base: "7.0" set: modules name: "Ub-20 gcc-9 + RT-4.9" ### fails building asyn #!- os: ubuntu-20.04 #! cmp: gcc #! configuration: default #! rtems: "5" #! rtems_target: RTEMS-pc686-qemu #! base: "7.0" #! set: modules #! name: "Ub-20 gcc-9 + RT-5.1 pc686" ### fails building autosave #!- os: ubuntu-20.04 #! cmp: gcc #! configuration: default #! rtems: "5" #! rtems_target: RTEMS-beatnik #! test: NO #! base: "7.0" #! set: modules #! name: "Ub-20 gcc-9 + RT-5.1 beatnik" - os: ubuntu-18.04 cmp: gcc configuration: default base: "7.0" set: modules name: "Ub-18 gcc-7" ### g++-8 not found #!- os: ubuntu-18.04 #! cmp: gcc-8 #! utoolchain: true #! configuration: default #! base: "7.0" #! set: modules #! name: "Ub-18 gcc-8" #!- os: ubuntu-20.04 #! cmp: gcc-8 #! utoolchain: true #! configuration: default #! base: "7.0" #! set: modules #! name: "Ub-20 gcc-8" - os: ubuntu-20.04 cmp: clang configuration: default base: "7.0" set: modules name: "Ub-20 clang-10" - os: macos-latest cmp: clang configuration: default base: "7.0" set: modules name: "MacOS clang-12" - os: windows-2019 cmp: gcc configuration: default base: "7.0" set: modules name: "Win2019 MinGW" - os: windows-2019 cmp: gcc configuration: static base: "7.0" set: modules name: "Win2019 MinGW, static" - os: windows-2019 cmp: vs2019 configuration: default base: "7.0" set: modules name: "Win2019 MSC-19" - os: windows-2019 cmp: vs2019 configuration: static base: "7.0" set: modules name: "Win2019 MSC-19, static" 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.cmp }} if: matrix.utoolchain - name: Sanity Check run: python .ci-local/github-actions/sanity-check.py - name: Prepare and compile dependencies run: python .ci/cue.py prepare - name: Patch main module run: python .ci-local/github-actions/post-prepare.py - name: Build main module run: python .ci/cue.py build - name: Run main module tests run: python .ci/cue.py test - name: Upload tapfiles Artifact uses: actions/upload-artifact@v2 with: name: tapfiles ${{ matrix.name }} path: '**/O.*/*.tap' - name: Collect and show test results run: python .ci/cue.py test-results