diff --git a/.github/workflows/ci_coverage.yml b/.github/workflows/ci_coverage.yml index 6d4b94d372..6af3a94342 100644 --- a/.github/workflows/ci_coverage.yml +++ b/.github/workflows/ci_coverage.yml @@ -48,7 +48,6 @@ jobs: uses: actions/cache@v4 with: path: /home/runner/.ccache - save-always: true key: ccache-${{ runner.os }}-${{ github.workflow }}-${{ matrix.compiler }}-${{ github.ref }}-${{ github.run_id }} restore-keys: | ccache-${{ runner.os }}-${{ github.workflow }}-${{ matrix.compiler }}-${{ github.ref }} diff --git a/.github/workflows/ci_linux.yml b/.github/workflows/ci_linux.yml index e6438f7eb7..6e207e6c8d 100644 --- a/.github/workflows/ci_linux.yml +++ b/.github/workflows/ci_linux.yml @@ -49,7 +49,6 @@ jobs: uses: actions/cache@v4 with: path: /home/runner/.ccache - save-always: true key: ccache-${{ runner.os }}-${{ github.workflow }}-${{ matrix.compiler }}-${{ github.ref }}-${{ github.run_id }} restore-keys: | ccache-${{ runner.os }}-${{ github.workflow }}-${{ matrix.compiler }}-${{ github.ref }} diff --git a/.github/workflows/ci_misc.yml b/.github/workflows/ci_misc.yml index 7e7b457e44..cbb95fc56d 100644 --- a/.github/workflows/ci_misc.yml +++ b/.github/workflows/ci_misc.yml @@ -50,7 +50,6 @@ jobs: uses: actions/cache@v4 with: path: /home/runner/.ccache - save-always: true key: ccache-${{ runner.os }}-${{ github.workflow }}-${{ matrix.build }}-${{ matrix.compiler }}-${{ github.ref }}-${{ github.run_id }} restore-keys: | ccache-${{ runner.os }}-${{ github.workflow }}-${{ matrix.build }}-${{ matrix.compiler }}-${{ github.ref }} diff --git a/.github/workflows/cron_avx2.yml b/.github/workflows/cron_avx2.yml index fdeb836d7f..7bb494aa25 100644 --- a/.github/workflows/cron_avx2.yml +++ b/.github/workflows/cron_avx2.yml @@ -26,39 +26,32 @@ defaults: jobs: build: - name: ${{ matrix.build }} gcc${{ matrix.compiler }} + name: ${{ matrix.build }} ${{ matrix.compiler }} runs-on: ubuntu-22.04 timeout-minutes: 300 if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' strategy: fail-fast: false matrix: - compiler: [11, 12, 13] + compiler: ["clang-18", "clang-17", "gcc-14", "gcc-13", "gcc-12", "gcc-11", "intel"] build: [unit, snippet, performance, header] - + include: + - compiler: "intel" + cxx_flags: "-fp-model=strict -Wno-overriding-option" + container: + image: ghcr.io/seqan/${{ matrix.compiler }} + volumes: + - /home/runner:/home/runner steps: - - name: Checkout SeqAn3 + - name: Checkout uses: actions/checkout@v4 - with: - path: seqan3 - - - name: Setup compiler - uses: seqan/actions/setup-compiler@main - with: - compiler: gcc-${{ matrix.compiler }} - - - name: Install CMake - uses: seqan/actions/setup-cmake@main - with: - cmake: 3.16.9 - name: Configure tests run: | - mkdir seqan3-build - cd seqan3-build - cmake ../seqan3/test/${{ matrix.build }} -DCMAKE_BUILD_TYPE=Release \ - -DSEQAN3_BENCHMARK_MIN_TIME=0.01 \ - -DCMAKE_CXX_FLAGS="-mavx2" + mkdir build && cd build + cmake ../test/${{ matrix.build }} -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="-mavx2 ${{ matrix.cxx_flags }}" \ + -DSEQAN3_BENCHMARK_MIN_TIME=0.01 case "${{ matrix.build }}" in unit) make gtest_main;; snippet) make gtest_main;; @@ -67,8 +60,8 @@ jobs: esac - name: Build tests + working-directory: build run: | - cd seqan3-build make -k 2>&1 | tee build.log - name: Setup Python @@ -80,38 +73,47 @@ jobs: - name: Process Log if: ${{ failure() }} run: | - FILE="seqan3/.github/ISSUE_TEMPLATE/cron_comment_template.md" - python3 seqan3/.github/workflows/scripts/process_compiler_error_log.py seqan3-build/build.log >> $FILE + FILE=".github/ISSUE_TEMPLATE/cron_comment_template.md" + python3 .github/workflows/scripts/process_compiler_error_log.py build/build.log >> $FILE - name: Create comment body if: ${{ failure() }} id: comment-body run: | - FILE="seqan3/.github/ISSUE_TEMPLATE/cron_comment_template.md" - URL="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" - sed -i "s@{{ build }}@${{ matrix.build }}@" $FILE - sed -i "s@{{ compiler }}@${{ matrix.compiler }}@" $FILE - sed -i "s@{{ url }}@$URL@" $FILE - echo "body<> $GITHUB_OUTPUT - cat $FILE >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT + if [[ "${{ job.status }}" == "success" ]]; then + echo "body=Success ${{ matrix.build }} on ${{ matrix.compiler }}" >> $GITHUB_OUTPUT + else + FILE=".github/ISSUE_TEMPLATE/cron_comment_template.md" + URL="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" + sed -i "s@{{ build }}@${{ matrix.build }}@" $FILE + sed -i "s@{{ compiler }}@${{ matrix.compiler }}@" $FILE + sed -i "s@{{ url }}@$URL@" $FILE + echo "body<> $GITHUB_OUTPUT + cat $FILE >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + fi - name: Reopen issue - if: ${{ failure() }} - uses: octokit/request-action@v2.x - with: - route: PATCH /repos/{owner}/{repo}/issues/{issue_number} - owner: ${{ github.repository_owner }} - repo: seqan3 - issue_number: ${{ env.ISSUE }} - state: "open" + if: failure() + run: gh issue reopen ${{ env.ISSUE }} env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_TOKEN: ${{ secrets.SEQAN_ACTIONS_PAT }} + GH_REPO: ${{ github.repository }} - - name: Create comment - if: ${{ failure() }} + - name: Find Comment + if: always() + uses: peter-evans/find-comment@v3 + id: find_comment + with: + issue-number: ${{ env.ISSUE }} + body-includes: ${{ matrix.build }} on ${{ matrix.compiler }} + + - name: Update comment + if: always() uses: peter-evans/create-or-update-comment@v4 with: + comment-id: ${{ steps.find_comment.outputs.comment-id }} issue-number: ${{ env.ISSUE }} body: ${{ steps.comment-body.outputs.body }} - + edit-mode: replace + token: ${{ secrets.SEQAN_ACTIONS_PAT }} diff --git a/.github/workflows/cron_latest_libraries.yml b/.github/workflows/cron_latest_libraries.yml index fcfaa208f0..98b59d3d37 100644 --- a/.github/workflows/cron_latest_libraries.yml +++ b/.github/workflows/cron_latest_libraries.yml @@ -5,6 +5,9 @@ name: Latest Libraries on: + # Will always run on the default branch + schedule: + - cron: "0 4 * * SUN" # Enables a manual trigger, may run on any branch workflow_dispatch: @@ -23,7 +26,7 @@ defaults: jobs: build: - name: ${{ matrix.build }} gcc${{ matrix.compiler }} + name: ${{ matrix.build }} ${{ matrix.compiler }} runs-on: ubuntu-22.04 timeout-minutes: 300 if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' @@ -54,9 +57,9 @@ jobs: - name: Configure tests run: | mkdir build && cd build - cmake ../seqan3/test/${{ matrix.build }} -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" \ - -DSEQAN3_BENCHMARK_MIN_TIME=0.01 + cmake ../test/${{ matrix.build }} -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" \ + -DSEQAN3_BENCHMARK_MIN_TIME=0.01 case "${{ matrix.build }}" in unit) make gtest_main;; snippet) make gtest_main;; diff --git a/test/performance/range/container_push_back_benchmark.cpp b/test/performance/range/container_push_back_benchmark.cpp index 277ff54143..5f25e9ead7 100644 --- a/test/performance/range/container_push_back_benchmark.cpp +++ b/test/performance/range/container_push_back_benchmark.cpp @@ -20,13 +20,13 @@ template using sdsl_int_vec = sdsl::int_vector; template -using small_vec = seqan3::small_vector; +using small_vec = seqan3::small_vector; // ============================================================================ // push_back // ============================================================================ -template