# .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 name: Base # Trigger on pushes and PRs to any branch on: push: paths-ignore: - 'documentation/*' - '.appveyor.yml' - '.readthedocs.yml' pull_request: paths-ignore: - 'documentation/*' - '.appveyor.yml' - '.readthedocs.yml' env: SETUP_PATH: .ci-local:.ci EPICS_TEST_IMPRECISE_TIMING: YES jobs: build-base: name: ${{ matrix.name }} runs-on: ${{ matrix.os }} # Set environment variables from matrix parameters env: BASE: ${{ matrix.base }} CMP: ${{ matrix.cmp }} BCFG: ${{ matrix.configuration }} CI_CROSS_TARGETS: ${{ matrix.cross }} EXTRA: ${{ matrix.extra }} TEST: ${{ matrix.test }} strategy: fail-fast: false matrix: # Job names also name artifacts, character limitations apply include: - os: ubuntu-22.04 cmp: gcc configuration: default base: "7.0" cross: "windows-x64-mingw" name: "7.0 Ub-22 gcc + MinGW" - os: ubuntu-22.04 cmp: gcc configuration: static base: "7.0" cross: "windows-x64-mingw" name: "7.0 Ub-22 gcc + MinGW, static" - os: ubuntu-22.04 cmp: gcc configuration: static base: "7.0" extra: "CMD_CXXFLAGS=-std=c++11" name: "7.0 Ub-22 gcc C++11, static" - os: ubuntu-22.04 cmp: gcc configuration: static base: "7.0" extra: "CMD_CFLAGS=-funsigned-char CMD_CXXFLAGS=-funsigned-char" name: "7.0 Ub-22 gcc uchar" - os: ubuntu-22.04 cmp: clang configuration: default base: "7.0" name: "7.0 Ub-22 clang" - os: ubuntu-22.04 cmp: clang configuration: default base: "7.0" extra: "CMD_CXXFLAGS=-std=c++11" name: "7.0 Ub-22 clang C++11" - os: ubuntu-22.04 cmp: gcc configuration: default base: "7.0" cross: "RTEMS-pc686-qemu@5" name: "7.0 Ub-22 gcc + RT-5.1 pc686" - os: ubuntu-22.04 cmp: gcc configuration: default base: "7.0" cross: "RTEMS-pc386-qemu@4.10" test: NO name: "7.0 Ub-22 gcc + RT-4.10" - os: ubuntu-22.04 cmp: gcc configuration: default base: "7.0" cross: "RTEMS-pc386-qemu@4.9" name: "7.0 Ub-22 gcc + RT-4.9" - os: macos-latest cmp: clang configuration: default base: "7.0" name: "7.0 MacOS clang" - os: windows-2019 cmp: vs2019 configuration: default base: "7.0" name: "7.0 Win2019 MSC-19" extra: "CMD_CXXFLAGS=-analysis" - os: windows-2019 cmp: vs2019 configuration: static base: "7.0" name: "7.0 Win2019 MSC-19, static" extra: "CMD_CXXFLAGS=-analysis" - os: windows-2019 cmp: vs2019 configuration: debug base: "7.0" name: "7.0 Win2019 MSC-19, debug" - os: windows-2019 cmp: gcc configuration: default base: "7.0" name: "7.0 Win2019 mingw" - os: ubuntu-22.04 cmp: gcc configuration: default base: "3.15" wine: "64" name: "3.15 Ub-22 gcc + MinGW" steps: - uses: actions/checkout@v4 with: submodules: true - name: Automatic core dump 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: 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@v4 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