File: extra.yml

package info (click to toggle)
ecflow 5.16.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 52,220 kB
  • sloc: cpp: 273,994; python: 22,754; sh: 3,643; perl: 774; xml: 333; f90: 204; ansic: 141; makefile: 63
file content (122 lines) | stat: -rw-r--r-- 4,418 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
name: extra

on:
  # Trigger the workflow manually
  workflow_dispatch: ~

jobs:

  # Run 'extra' build
  build-gcc:
    name: build
    if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }}

    strategy:
      max-parallel: 8
      fail-fast: false
      matrix:
        os:
          - almalinux-9.7
          - almalinux-10.1
          - alpine-3.23
          - debian-11.11
          - debian-12.12
          - debian-13.2
          - fedora-37
          - fedora-42
          - opensuse-tumbleweed
          - ubuntu-22.04
          - ubuntu-24.04

        preset:
          - linux.gcc.all.release
          - linux.clang.all.release
        jobs: [ 4 ]
        exclude:
          - os: almalinux-9.7
            preset: linux.clang.all.release
            # This combination is not supported, as Clang fails to compile Chrono.hpp which does #include <boost/date_time/local_time/conversion.hpp
            # and ends up with the following error:
            #   /usr/include/boost/mpl/aux_/integral_wrapper.hpp:73:31: error: non-type template argument is not a constant expression

    runs-on: [self-hosted, Linux, platform-builder-docker-xl]

    container:
      image: marcosbento/lumen:${{ matrix.os }}
      options: --user root

    timeout-minutes: 60

    steps:

      - name: Display build context
        run: |
          echo "Working directory: ${{ github.workspace }}"
          echo "Environment:"
          echo "$(env)"
          echo "OS info:"
          echo "$(cat /etc/os-release)"
          echo "CPU info:"
          echo "$(cat /proc/cpuinfo)"
          echo "Memory info:"
          echo "$(cat /proc/meminfo)"
          echo "Disk info:"
          echo "$(df -h)"

      - name: Checkout 'ecbuild'
        uses: actions/checkout@v4
        with:
          repository: ecmwf/ecbuild
          path: ecbuild

      - name: Checkout 'ecflow'
        uses: actions/checkout@v4
        with:
          path: ecflow

      - name: Configure ecflow
        run: |
          cd ${RUNNER_WORKSPACE}/ecflow/ecflow
          cmake --preset ${{ matrix.preset }}

      - name: Build ecflow
        run: |
          cd ${RUNNER_WORKSPACE}/ecflow/ecflow
          cmake --build --preset ${{ matrix.preset }} --jobs ${{ matrix.jobs }}

      # The goal is to run all tests on all distros, but on Alpine and OpenSUSE, some tests fail due to Boost incompatibilities:
      #  - On Alpine, the test fails due to a crash in Boost.test.
      #  - On openSUSE, the test fails due to an issue in Boost.Process.
      #    Is seems that the bp::stdio_pipe implementation does not work as expected, leading to an exception being thrown
      #    when the test tries to read the output of thea subprocess, complaining that the file descriptor is not valid.

      - name: Test ecflow (default)
        if: ${{ matrix.os != 'alpine-3.23' && matrix.os != 'opensuse-tumbleweed' }} 
        run: |
          cd ${RUNNER_WORKSPACE}/ecflow/ecflow
          ctest --preset  ${{ matrix.preset }} --output-on-failure -L nightly -j ${{ matrix.jobs }}

      - name: Test ecflow (specific to Alpine)
        if: ${{ matrix.os == 'alpine-3.23' }}
        run: |
          cd ${RUNNER_WORKSPACE}/ecflow/ecflow
          ctest --preset  ${{ matrix.preset }} --output-on-failure -L nightly -E s_foolproof -j ${{ matrix.jobs }}

      - name: Test ecflow (specific to openSUSE)
        if: ${{ matrix.os == 'opensuse-tumbleweed' }}
        run: |
          cd ${RUNNER_WORKSPACE}/ecflow/ecflow
          ctest --preset  ${{ matrix.preset }} --output-on-failure -L nightly -E 's_(udp|foolproof)' -j ${{ matrix.jobs }}

      - name: Lint ecflow
        if: ${{ matrix.preset == 'linux.clang.all.release' && matrix.os == 'ubuntu-24.04' && !always() }} # Disable until we have a stable build
        run: |
          cd ${RUNNER_WORKSPACE}/ecflow/ecflow
          run-clang-tidy -j ${{ matrix.jobs }} -p ${RUNNER_WORKSPACE}/ecflow/ecflow/.deploy/build/${{ matrix.preset }} | tee clang-tidy-report.txt

      - name: Archive lint report 
        if: ${{ matrix.preset == 'linux.clang.all.release' && matrix.os == 'ubuntu-24.04' && !always() }} # Disable until we have a stable build
        uses: actions/upload-artifact@v4
        with:
          name: cling-tidy-report
          path: ${RUNNER_WORKSPACE}/ecflow/ecflow/clang-tidy-report.txt