From 7789686480f1e276a54ce7b3108f41de4da088c6 Mon Sep 17 00:00:00 2001 From: Peter Mikus Date: Thu, 25 Sep 2025 14:12:14 +0200 Subject: [PATCH] ci(gha): More flows Signed-off-by: Peter Mikus Change-Id: Ibd4b79ad825d7db207478dc57affa291ab697d38 --- .github/actions/setup_executor_env/README.md | 15 ++- .github/actions/setup_executor_env/action.yml | 29 +++-- .github/workflows/gerrit-csit-perf-mrr-daily.yml | 96 ++++++++++++++ .../gerrit-csit-terraform-aws-eb-version.yml | 140 +++++++++++++++++++++ .github/workflows/gerrit-csit-tox-verify.yml | 32 +++-- 5 files changed, 284 insertions(+), 28 deletions(-) create mode 100644 .github/workflows/gerrit-csit-perf-mrr-daily.yml create mode 100644 .github/workflows/gerrit-csit-terraform-aws-eb-version.yml diff --git a/.github/actions/setup_executor_env/README.md b/.github/actions/setup_executor_env/README.md index 77da6bc816..0b7c645c0f 100644 --- a/.github/actions/setup_executor_env/README.md +++ b/.github/actions/setup_executor_env/README.md @@ -6,17 +6,24 @@ Action to setup FD.io Nomad executor environment inside a GitHub action/workflow ## Usage Example +Sets the OS details used for Git operations inside other actions/workflows. + ```yaml - name: "Setup Environment" uses: fdio/csit/.github/actions/setup_executor_env@master ``` - - ## Outputs -The action has no outputs, but does provide summary step information when -invoked. + + +| Variable Name | Description | +| --------------- | ------------------------------- | +| OS_ID | Operating system ID. | +| OS_VERSION_ID | Operating system Version ID. | +| OS_ARCH | Operating system architecture. | + + ## Requirements/Dependencies diff --git a/.github/actions/setup_executor_env/action.yml b/.github/actions/setup_executor_env/action.yml index 7b8d5268d0..439ff6688a 100644 --- a/.github/actions/setup_executor_env/action.yml +++ b/.github/actions/setup_executor_env/action.yml @@ -3,6 +3,17 @@ name: "🛠️ Setup Executor Environment" description: | This GitHub Action prepares FD.io executor environment. +outputs: + OS_ID: + description: "Operating system ID" + value: ${{ steps.attributes.outputs.OS_ID }} + OS_VERSION_ID: + description: "Operating system Version ID" + value: ${{ steps.attributes.outputs.OS_VERSION_ID }} + OS_ARCH: + description: "Operating system architecture" + value: ${{ steps.attributes.outputs.OS_ARCH }} + runs: using: "composite" steps: @@ -20,6 +31,14 @@ runs: echo "GitHub Run ID: ${GITHUB_RUN_ID:-Unknown}" echo "Runner Hostname: $(hostname)" + # Set GitHub Outputs + echo "OS_ID=$ID" >> "$GITHUB_ENV" + echo "OS_ID=$ID" >> "$GITHUB_OUTPUT" + echo "OS_VERSION_ID=$VERSION_ID" >> "$GITHUB_ENV" + echo "OS_VERSION_ID=$VERSION_ID" >> "$GITHUB_OUTPUT" + echo "OS_ARCH=$OS_ARCH" >> "$GITHUB_ENV" + echo "OS_ARCH=$OS_ARCH" >> "$GITHUB_OUTPUT" + - name: "GitHub Actions Environment" id: environment shell: bash @@ -40,11 +59,9 @@ runs: id: os_packages shell: bash run: | - . /etc/os-release - - if [ "${ID}" = "ubuntu" ] || [ "${ID}" = "debian" ]; then + if [ "${OS_ID}" = "ubuntu" ] || [ "${OS_ID}" = "debian" ]; then dpkg-query -W -f='${binary:Package}\t${Version}\n' | column -t || true - elif [ "${ID}" = "centos" ]; then + elif [ "${OS_ID}" = "centos" ]; then yum list installed || true else echo "Unsupported OS for package listing" @@ -54,8 +71,6 @@ runs: id: ccache_packages shell: bash run: | - . /etc/os-release - OS_ARCH=$(uname -m) downloads_cache="/root/Downloads" # Toggle envs (can be overridden from workflow) @@ -68,7 +83,7 @@ runs: # Ensure CCACHE_DIR is set and exists if [ -z "${CCACHE_DIR:-}" ]; then # Derive a default if not provided (caller may pass one via env) - CCACHE_DIR="/scratch/ccache/${ID}-${VERSION_ID}-${OS_ARCH}" + CCACHE_DIR="/scratch/ccache/${OS_ID}-${OS_VERSION_ID}-${OS_ARCH}" export CCACHE_DIR fi if [ ! -d "${CCACHE_DIR}" ]; then diff --git a/.github/workflows/gerrit-csit-perf-mrr-daily.yml b/.github/workflows/gerrit-csit-perf-mrr-daily.yml new file mode 100644 index 0000000000..345b346514 --- /dev/null +++ b/.github/workflows/gerrit-csit-perf-mrr-daily.yml @@ -0,0 +1,96 @@ +--- +name: csit-vpp-perf-mrr-daily + +# yamllint disable-line rule:truthy +on: + # Runs periodically + #schedule: + # - cron: "30 22 * * 0-4" + workflow_dispatch: + +jobs: + csit-vpp-perf-mrr-daily: + name: csit-vpp-perf-mrr-daily-master-${{ matrix.node }} + runs-on: + - self-hosted + - nomad + - fdio:arch=${{ matrix.executor_arch }} + - fdio:class=builder + - fdio:namespace=sandbox + - fdio:os=${{ matrix.os }} + + strategy: + matrix: + include: + - node: 2n-grc + os: ubuntu2404 + executor_arch: aarch64 + - node: 2n-icx + os: ubuntu2404 + executor_arch: x86_64 + - node: 2n-spr + os: ubuntu2404 + executor_arch: x86_64 + - node: 2n-zn2 + os: ubuntu2404 + executor_arch: x86_64 + - node: 3n-icx + os: ubuntu2404 + executor_arch: x86_64 + - node: 3n-alt + os: ubuntu2404 + executor_arch: aarch64 + - node: 3n-snr + os: ubuntu2404 + executor_arch: x86_64 + - node: 3n-icxd + os: ubuntu2404 + executor_arch: x86_64 + - node: 3na-spr + os: ubuntu2404 + executor_arch: x86_64 + - node: 3nb-spr + os: ubuntu2404 + executor_arch: x86_64 + - node: 2n-emr + os: ubuntu2404 + executor_arch: x86_64 + - node: 3n-emr + os: ubuntu2404 + executor_arch: x86_64 + - node: 3n-oct + os: ubuntu2404 + executor_arch: aarch64 + + env: + JOB_NAME: "${{ github.job }}-master-${{ matrix.node }}" + + steps: + - name: Gerrit Checkout + # yamllint disable-line rule:line-length + uses: lfit/checkout-gerrit-change-action@54d751e8bd167bc91f7d665dabe33fae87aaaa63 # v0.9 + with: + gerrit-refspec: refs/heads/master + gerrit-project: "csit" + gerrit-url: ${{ vars.GERRIT_URL }} + delay: "0s" + ref: refs/heads/master + + - name: "Retrieve GIT commit message" + uses: lfit/releng-reusable-workflows/.github/actions/git-commit-message-action@main + + - name: Setup Environment + uses: pmikus/csit/.github/actions/setup_executor_env@master + + - name: Run Performance Bootstrap + run: | + csit_entry_dir="./resources/libraries/bash/entry" + #source ${csit_entry_dir}/with_oper_for_vpp.sh "bootstrap_verify_perf.sh" + + - name: Archive Logs + if: always() + uses: actions/upload-artifact@v4 + with: + name: ${{ env.JOB_NAME }}-${{ github.run_number }} + path: archives/ + if-no-files-found: "ignore" \ No newline at end of file diff --git a/.github/workflows/gerrit-csit-terraform-aws-eb-version.yml b/.github/workflows/gerrit-csit-terraform-aws-eb-version.yml new file mode 100644 index 0000000000..b09634c4d9 --- /dev/null +++ b/.github/workflows/gerrit-csit-terraform-aws-eb-version.yml @@ -0,0 +1,140 @@ +--- +name: csit-terraform-aws-eb-version + +# yamllint disable-line rule:truthy +on: + workflow_dispatch: + inputs: + GERRIT_BRANCH: + description: "Branch that change is against" + required: true + type: string + GERRIT_CHANGE_ID: + description: "The ID for the change" + required: true + type: string + GERRIT_CHANGE_NUMBER: + description: "The Gerrit number" + required: true + type: string + GERRIT_CHANGE_URL: + description: "URL to the change" + required: true + type: string + GERRIT_EVENT_TYPE: + description: "Type of Gerrit event" + required: true + type: string + GERRIT_PATCHSET_NUMBER: + description: "The patch number for the change" + required: true + type: string + GERRIT_PATCHSET_REVISION: + description: "The revision sha" + required: true + type: string + GERRIT_PROJECT: + description: "Project in Gerrit" + required: true + type: string + GERRIT_REFSPEC: + description: "Gerrit refspec of change" + required: true + type: string + +concurrency: + # yamllint disable-line rule:line-length + group: verify-${{ github.workflow }}-${{ github.event.inputs.GERRIT_BRANCH }}-${{ github.event.inputs.GERRIT_CHANGE_ID || github.run_id }} + cancel-in-progress: true + +jobs: + verify: + runs-on: + - self-hosted + - nomad + - fdio:arch=${{ matrix.executor_arch }} + - fdio:class=builder + - fdio:namespace=sandbox + - fdio:os=${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu2404] + executor_arch: [x86_64] + + env: + JOB_NAME: "csit-terraform-aws-eb-version-verify" + BUILD_ID: "${{ github.run_number }}" + + steps: + - name: Gerrit Checkout + # yamllint disable-line rule:line-length + uses: lfit/checkout-gerrit-change-action@54d751e8bd167bc91f7d665dabe33fae87aaaa63 # v0.9 + with: + gerrit-refspec: ${{ github.event.inputs.GERRIT_REFSPEC }} + gerrit-project: ${{ github.event.inputs.GERRIT_PROJECT }} + gerrit-url: ${{ vars.GERRIT_URL }} + delay: "30s" + ref: refs/heads/${{ github.event.inputs.GERRIT_BRANCH }} + + - name: "Retrieve GIT commit message" + # yamllint disable-line rule:line-length + uses: lfit/releng-reusable-workflows/.github/actions/git-commit-message-action@main + + - name: Setup Environment + uses: pmikus/csit/.github/actions/setup_executor_env@master + + - name: Run Terraform Bootstrap + run: | + csit_entry_dir="./resources/libraries/bash/entry" + source ${csit_entry_dir}/bootstrap_aws_eb_version_verify.sh + + deploy: + needs: verify + runs-on: + - self-hosted + - nomad + - fdio:arch=${{ matrix.executor_arch }} + - fdio:class=builder + - fdio:namespace=sandbox + - fdio:os=${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu2404] + executor_arch: [x86_64] + + env: + JOB_NAME: "csit-terraform-aws-eb-version-deploy" + BUILD_ID: "${{ github.run_number }}" + + steps: + - name: Gerrit Checkout + # yamllint disable-line rule:line-length + uses: lfit/checkout-gerrit-change-action@54d751e8bd167bc91f7d665dabe33fae87aaaa63 # v0.9 + with: + gerrit-refspec: ${{ github.event.inputs.GERRIT_REFSPEC }} + gerrit-project: ${{ github.event.inputs.GERRIT_PROJECT }} + gerrit-url: ${{ vars.GERRIT_URL }} + delay: "30s" + ref: refs/heads/${{ github.event.inputs.GERRIT_BRANCH }} + + - name: "Retrieve GIT commit message" + # yamllint disable-line rule:line-length + uses: lfit/releng-reusable-workflows/.github/actions/git-commit-message-action@main + + - name: Setup Environment + uses: pmikus/csit/.github/actions/setup_executor_env@master + + - name: Run Terraform Bootstrap + run: | + csit_entry_dir="./resources/libraries/bash/entry" + source ${csit_entry_dir}/bootstrap_aws_eb_version_deploy.sh + + - name: Archive Logs + if: always() + uses: actions/upload-artifact@v4 + with: + name: ${{ env.JOB_NAME }}-${{ github.run_number }} + path: archives/ + if-no-files-found: "ignore" \ No newline at end of file diff --git a/.github/workflows/gerrit-csit-tox-verify.yml b/.github/workflows/gerrit-csit-tox-verify.yml index b89deaffa8..c51e241d98 100644 --- a/.github/workflows/gerrit-csit-tox-verify.yml +++ b/.github/workflows/gerrit-csit-tox-verify.yml @@ -1,5 +1,5 @@ --- -name: CSIT Tox +name: csit-verify-tox # yamllint disable-line rule:truthy on: @@ -41,52 +41,50 @@ on: description: "Gerrit refspec of change" required: true type: string - TARGET_REPO: - # yamllint disable-line rule:line-length - description: "The target GitHub repository needing the required workflow" - required: true - type: string concurrency: # yamllint disable-line rule:line-length - group: required-verify-${{ github.workflow }}-${{ github.event.inputs.GERRIT_BRANCH }}-${{ github.event.inputs.GERRIT_CHANGE_ID || github.run_id }} + group: csit-verify-tox-${{ github.workflow }}-${{ github.event.inputs.GERRIT_BRANCH }}-${{ github.event.inputs.GERRIT_CHANGE_ID || github.run_id }} cancel-in-progress: true jobs: csit-verify-tox: - name: csit-verify-tox-${{ matrix.os }}-${{ matrix.executor_arch }} + name: "csit-verify-tox" runs-on: - self-hosted - nomad - fdio:arch=${{ matrix.executor_arch }} - fdio:class=builder - - fdio:namespace=${{ matrix.builder_type }} + - fdio:namespace=sandbox - fdio:os=${{ matrix.os }} strategy: matrix: os: [ubuntu2404] executor_arch: [x86_64] - builder_type: [prod] env: - JOB_NAME: "${{ github.job }}-${{ matrix.os }}-${{ matrix.executor_arch }}" + JOB_NAME: "${{ github.job }}" steps: - name: Gerrit Checkout # yamllint disable-line rule:line-length uses: lfit/checkout-gerrit-change-action@54d751e8bd167bc91f7d665dabe33fae87aaaa63 # v0.9 with: - gerrit-refspec: ${{ github.event.inputs.GERRIT_REFSPEC }} - gerrit-project: ${{ github.event.inputs.GERRIT_PROJECT }} + gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }} + gerrit-project: ${{ inputs.GERRIT_PROJECT }} gerrit-url: ${{ vars.GERRIT_URL }} delay: "30s" - ref: refs/heads/${{ github.event.inputs.GERRIT_BRANCH }} + ref: refs/heads/${{ inputs.GERRIT_BRANCH }} + + - name: "Retrieve GIT commit message" + # yamllint disable-line rule:line-length + uses: lfit/releng-reusable-workflows/.github/actions/git-commit-message-action@main - name: Setup Environment - uses: fdio/csit/.github/actions/setup_executor_env@master + uses: pmikus/csit/.github/actions/setup_executor_env@master - - name: Run tox + - name: Run Tox run: | source ./resources/libraries/bash/entry/tox.sh @@ -94,6 +92,6 @@ jobs: if: always() uses: actions/upload-artifact@v4 with: - name: ${{ github.job }}-${{ matrix.os }}-${{ matrix.executor_arch }}-logs + name: ${{ env.JOB_NAME }}-${{ github.run_number }} path: archives/ if-no-files-found: "ignore" \ No newline at end of file -- 2.16.6