diff --git a/.github/workflows/arm.yml b/.github/workflows/arm.yml index c81d3d448..a9aa4d387 100644 --- a/.github/workflows/arm.yml +++ b/.github/workflows/arm.yml @@ -3,56 +3,7 @@ name: arm flow on: [workflow_call, workflow_dispatch] jobs: - start-runner: - name: Start self-hosted EC2 runner - runs-on: ubuntu-latest - outputs: - label: ${{ steps.start-ec2-runner.outputs.label }} - ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }} - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v6 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ secrets.AWS_REGION }} - - name: Start EC2 runner - id: start-ec2-runner - uses: machulav/ec2-github-runner@v2.6.1 - with: - mode: start - github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} - # Ubuntu 22.04 region AMI for ARM - ec2-image-id: ami-062b37d89f25c958f - ec2-instance-type: t4g.medium - subnet-id: ${{ secrets.AWS_EC2_SUBNET_ID }} - security-group-id: ${{ secrets.AWS_EC2_SG_ID }} - ec2-volume-size: 30 - arm: - needs: start-runner # required to start the main job when the runner is ready uses: ./.github/workflows/task-unit-test.yml with: - env: ${{ needs.start-runner.outputs.label }} # run the job on the newly created runner - - stop-runner: - name: Stop self-hosted EC2 runner - needs: - - start-runner # required to get output from the start-runner job - - arm # required to wait when the main job is done - runs-on: ubuntu-latest - if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v6 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ secrets.AWS_REGION }} - - name: Stop EC2 runner - uses: machulav/ec2-github-runner@v2.6.1 - with: - mode: stop - github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} - label: ${{ needs.start-runner.outputs.label }} - ec2-instance-id: ${{ needs.start-runner.outputs.ec2-instance-id }} + env: ubuntu-22.04-arm diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 27ceec891..7cc32d727 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -19,11 +19,36 @@ jobs: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.AWS_REGION }} + - name: Prepare EC2 owner tag + id: ec2-tags + # Keep the original workflow actor as owner, including on reruns. + env: + OWNER_HANDLE: ${{ github.actor }} + shell: python + run: | + import os + import re + + # Allow only lowercase ASCII letters, digits, and underscores. + owner = os.environ["OWNER_HANDLE"].lower() + owner = re.sub(r"[^a-z0-9_]", "_", owner) + # Collapse repeated separators, cap at 63 characters, and trim edges. + owner = re.sub(r"_+", "_", owner)[:63].strip("_") + if not owner: + raise SystemExit("Cannot derive an EC2 owner tag from github.actor") + + with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as output: + output.write(f"owner={owner}\n") - name: Start EC2 runner id: start-ec2-runner uses: machulav/ec2-github-runner@v2 with: mode: start + aws-resource-tags: >- + [ + {"Key": "team", "Value": "ai_and_search"}, + {"Key": "owner", "Value": "${{ steps.ec2-tags.outputs.owner }}"} + ] github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} # Ubuntu 22.04 128GB Storage AMI ec2-image-id: ami-0ba430d4b7b64de57 diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 4096eb395..b0abcbf9b 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -14,11 +14,36 @@ jobs: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.AWS_REGION }} + - name: Prepare EC2 owner tag + id: ec2-tags + # Keep the original workflow actor as owner, including on reruns. + env: + OWNER_HANDLE: ${{ github.actor }} + shell: python + run: | + import os + import re + + # Allow only lowercase ASCII letters, digits, and underscores. + owner = os.environ["OWNER_HANDLE"].lower() + owner = re.sub(r"[^a-z0-9_]", "_", owner) + # Collapse repeated separators, cap at 63 characters, and trim edges. + owner = re.sub(r"_+", "_", owner)[:63].strip("_") + if not owner: + raise SystemExit("Cannot derive an EC2 owner tag from github.actor") + + with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as output: + output.write(f"owner={owner}\n") - name: Start EC2 runner id: start-ec2-runner uses: machulav/ec2-github-runner@v2.6.1 with: mode: start + aws-resource-tags: >- + [ + {"Key": "team", "Value": "ai_and_search"}, + {"Key": "owner", "Value": "${{ steps.ec2-tags.outputs.owner }}"} + ] github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} # Ubuntu 20.04 AMI ec2-image-id: ami-0f4feb99425e13b50 diff --git a/.github/workflows/debian11.yml b/.github/workflows/debian13.yml similarity index 59% rename from .github/workflows/debian11.yml rename to .github/workflows/debian13.yml index 50d8d3826..6e40bc612 100644 --- a/.github/workflows/debian11.yml +++ b/.github/workflows/debian13.yml @@ -1,9 +1,9 @@ -name: debian bullseye flow +name: debian trixie flow on: [workflow_dispatch, workflow_call] jobs: - bullseye: + trixie: uses: ./.github/workflows/task-unit-test.yml with: - container: gcc:11-bullseye + container: gcc:14-trixie diff --git a/.github/workflows/event-merge-to-queue.yml b/.github/workflows/event-merge-to-queue.yml index df18698b0..978479736 100644 --- a/.github/workflows/event-merge-to-queue.yml +++ b/.github/workflows/event-merge-to-queue.yml @@ -29,8 +29,8 @@ jobs: # uses: ./.github/workflows/task-unit-test.yml # with: # container: ubuntu:xenial - bullseye: - uses: ./.github/workflows/debian11.yml + trixie: + uses: ./.github/workflows/debian13.yml # amazonlinux2: # needs: [check-if-docs-only] # if: ${{ needs.check-if-docs-only.outputs.only-docs-changed == 'false' }} @@ -55,7 +55,6 @@ jobs: uses: ./.github/workflows/macos.yml arm: uses: ./.github/workflows/arm.yml - secrets: inherit coverage: uses: ./.github/workflows/coverage.yml @@ -67,7 +66,7 @@ jobs: # - focal # - bionic # - xenial - - bullseye + - trixie # - centos7 # - amazonlinux2 - mariner2 diff --git a/.github/workflows/event-nightly.yml b/.github/workflows/event-nightly.yml index d1c885c62..322c389b1 100644 --- a/.github/workflows/event-nightly.yml +++ b/.github/workflows/event-nightly.yml @@ -25,8 +25,8 @@ jobs: # uses: ./.github/workflows/task-unit-test.yml # with: # container: ubuntu:bionic - bullseye: - uses: ./.github/workflows/debian11.yml + trixie: + uses: ./.github/workflows/debian13.yml # amazonlinux2: # uses: ./.github/workflows/amazon2.yml mariner2: @@ -43,7 +43,6 @@ jobs: uses: ./.github/workflows/macos.yml arm: uses: ./.github/workflows/arm.yml - secrets: inherit coverage: uses: ./.github/workflows/coverage.yml secrets: inherit diff --git a/.install/debian_gnu_linux_11.sh b/.install/debian_gnu_linux_13.sh similarity index 100% rename from .install/debian_gnu_linux_11.sh rename to .install/debian_gnu_linux_13.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index ec8df6f06..c2b2fd888 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,7 +62,7 @@ if(VECSIM_BUILD_TESTS) option(BENCHMARK_ENABLE_TESTING "" OFF) FetchContent_Declare( google_benchmark - URL https://github.com/google/benchmark/archive/refs/tags/v1.7.0.zip + URL https://github.com/google/benchmark/archive/refs/tags/v1.8.0.zip ) FetchContent_MakeAvailable(google_benchmark)