From b6a7c84b3ab61ae18509230dcf85d918a97153b4 Mon Sep 17 00:00:00 2001 From: Mario Cattamo Date: Wed, 22 May 2024 14:43:13 +0200 Subject: [PATCH] test: trigger all test cases with one comment --- .github/workflows/fedora-39.yml | 120 +++++++++++++++++++++++++ tmt/plans/edge-test.fmf | 152 +++++++++++++++++++++----------- tmt/tests/test.sh | 6 +- 3 files changed, 221 insertions(+), 57 deletions(-) create mode 100644 .github/workflows/fedora-39.yml diff --git a/.github/workflows/fedora-39.yml b/.github/workflows/fedora-39.yml new file mode 100644 index 0000000..da36b40 --- /dev/null +++ b/.github/workflows/fedora-39.yml @@ -0,0 +1,120 @@ +--- +name: Run Edge Test on Fedora 39 + +on: + issue_comment: + types: + - created + +jobs: + pr-info: + if: ${{ github.event.issue.pull_request && + (endsWith(github.event.comment.body, '/test-f39') }} + runs-on: ubuntu-latest + steps: + - name: Query author repository permissions + uses: octokit/request-action@v2.x + id: user_permission + with: + route: GET /repos/${{ github.repository }}/collaborators/${{ github.event.sender.login }}/permission + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Check if user does have correct permissions + if: contains('admin write', fromJson(steps.user_permission.outputs.data).permission) + id: check_user_perm + run: | + echo "User '${{ github.event.sender.login }}' has permission '${{ fromJson(steps.user_permission.outputs.data).permission }}' allowed values: 'admin', 'write'" + echo "allowed_user=true" >> $GITHUB_OUTPUT + + - name: Get information for pull request + uses: octokit/request-action@v2.x + id: pr-api + with: + route: GET /repos/${{ github.repository }}/pulls/${{ github.event.issue.number }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + outputs: + allowed_user: ${{ steps.check_user_perm.outputs.allowed_user }} + sha: ${{ fromJson(steps.pr-api.outputs.data).head.sha }} + ref: ${{ fromJson(steps.pr-api.outputs.data).head.ref }} + repo_url: ${{ fromJson(steps.pr-api.outputs.data).head.repo.html_url }} + + pre-iot-commit-f39: + needs: pr-info + if: ${{ needs.pr-info.outputs.allowed_user == 'true' && github.event.issue.pull_request && + (endsWith(github.event.comment.body, '/test-f39') || + endsWith(github.event.comment.body, '/test-f39-virt')) }} + runs-on: ubuntu-latest + env: + STATUS_NAME: iot-commit-f39 + + steps: + - name: Create in-progress status + uses: octokit/request-action@v2.x + with: + route: 'POST /repos/${{ github.repository }}/statuses/${{ needs.pr-info.outputs.sha }}' + context: ${{ env.STATUS_NAME }} + state: pending + description: 'Runner has been deploying...' + target_url: 'https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + iot-f39-x86: + needs: pr-info + if: ${{ needs.pr-info.outputs.allowed_user == 'true' && github.event.issue.pull_request }} + continue-on-error: true + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + with: + ref: ${{ needs.pr-info.outputs.sha }} + fetch-depth: 0 + + - name: Run the tests + uses: sclorg/testing-farm-as-github-action@v2 + with: + compose: Fedora-39-Updated + arch: x86_64 + api_key: ${{ secrets.TF_API_KEY }} + git_url: ${{ needs.pr-info.outputs.repo_url }} + git_ref: ${{ needs.pr-info.outputs.ref }} + update_pull_request_status: true + pull_request_status_name: "iot-f39-x86" + tmt_plan_regex: iot-x86 + tf_scope: private + secrets: "DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};OCP4_TOKEN=${{ secrets.OCP4_TOKEN }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};DOCKERHUB_USERNAME=${{ secrets.DOCKERHUB_USERNAME }};DOCKERHUB_PASSWORD=${{ secrets.DOCKERHUB_PASSWORD }};AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }};AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }};GOVC_URL=${{ secrets.GOVC_URL }};GOVC_USERNAME=${{ secrets.GOVC_USERNAME }};GOVC_PASSWORD=${{ secrets.GOVC_PASSWORD }}" + variables: "ARCH=x86_64;AWS_DEFAULT_REGION=us-east-1;GOVC_INSECURE=1" + + iot-f39-arm: + needs: pr-info + if: ${{ needs.pr-info.outputs.allowed_user == 'true' && github.event.issue.pull_request }} + continue-on-error: true + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + with: + ref: ${{ needs.pr-info.outputs.sha }} + fetch-depth: 0 + + - name: Run the tests + uses: sclorg/testing-farm-as-github-action@v2 + with: + compose: Fedora-39-Updated + arch: aarch64 + api_key: ${{ secrets.TF_API_KEY }} + git_url: ${{ needs.pr-info.outputs.repo_url }} + git_ref: ${{ needs.pr-info.outputs.ref }} + update_pull_request_status: true + pull_request_status_name: "iot-f39-arm" + tmt_plan_regex: iot-arm + tf_scope: private + secrets: "DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};OCP4_TOKEN=${{ secrets.OCP4_TOKEN }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};DOCKERHUB_USERNAME=${{ secrets.DOCKERHUB_USERNAME }};DOCKERHUB_PASSWORD=${{ secrets.DOCKERHUB_PASSWORD }};AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }};AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }};GOVC_URL=${{ secrets.GOVC_URL }};GOVC_USERNAME=${{ secrets.GOVC_USERNAME }};GOVC_PASSWORD=${{ secrets.GOVC_PASSWORD }}" + variables: "ARCH=x86_64;AWS_DEFAULT_REGION=us-east-1;GOVC_INSECURE=1" + diff --git a/tmt/plans/edge-test.fmf b/tmt/plans/edge-test.fmf index d66b901..37607e3 100644 --- a/tmt/plans/edge-test.fmf +++ b/tmt/plans/edge-test.fmf @@ -1,4 +1,4 @@ -summary: Edge commit test +summary: Edge test plan discover: how: fmf test: edge-test @@ -8,93 +8,141 @@ provision: hardware: virtualization: is-supported: true + cpu: + processors: ">= 2" + memory: ">= 6 GB" -/iot-commit: - summary: Test iot commit +/edge-x86-commit: + summary: Test edge commit environment+: - TEST_CASE: iot-commit + TEST_CASE: edge-commit + adjust+: + - when: arch != x86_64 + enabled: false -/iot-installer: - summary: Test iot installer +/edge-x86-installer: + summary: Test edge installer image environment+: - TEST_CASE: iot-installer + TEST_CASE: edge-installer + adjust+: + - when: arch != x86_64 + enabled: false -/iot-raw-image: - summary: Test iot raw image +/edge-x86-raw-image: + summary: Test edge raw image environment+: - TEST_CASE: iot-raw-image + TEST_CASE: edge-raw-image + adjust+: + - when: arch != x86_64 + enabled: false -/iot-simplified-installer: - summary: Test iot simplified installer +/edge-x86-simplified-installer: + summary: Test edge simplified installer image environment+: - TEST_CASE: iot-simplified-installer + TEST_CASE: edge-simplified-installer + adjust+: + - when: arch != x86_64 + enabled: false -/iot-minimal: - summary: Test iot minimal raw +/edge-x86-fdo-aio: + summary: Test edge with fdo aio service environment+: - TEST_CASE: iot-minimal + TEST_CASE: edge-fdo-aio + adjust+: + - when: arch != x86_64 + enabled: false -/edge-commit: - summary: Test edge commit +/edge-x86-fdo-db: + summary: Test edge with fdo package with db environment+: - TEST_CASE: edge-commit + TEST_CASE: edge-fdo-db + adjust+: + - when: arch != x86_64 + enabled: false -/edge-installer: - summary: Test edge installer image +/edge-x86-ignition: + summary: Test edge ignition feature environment+: - TEST_CASE: edge-installer + TEST_CASE: edge-ignition + adjust+: + - when: arch != x86_64 + enabled: false -/edge-raw-image: - summary: Test edge raw image +/edge-x86-pulp: + summary: Test edge pulp feature environment+: - TEST_CASE: edge-raw-image + TEST_CASE: edge-pulp + adjust+: + - when: arch != x86_64 + enabled: false + +/edge-x86-vsphere: + summary: Test edge vsphere image + environment+: + TEST_CASE: edge-vsphere + adjust+: + - when: arch != x86_64 + enabled: false -/edge-ami-image: +/edge-x86-ami-image: summary: Test edge ami image environment+: TEST_CASE: edge-ami-image -/edge-simplified-installer: - summary: Test edge simplified installer image +/edge-x86-minimal: + summary: Test edge minimal raw image environment+: - TEST_CASE: edge-simplified-installer + TEST_CASE: edge-minimal -/edge-minimal: +/edge-arm-ami-image: + summary: Test edge ami image + environment+: + TEST_CASE: edge-ami-image + +/edge-arm-minimal: summary: Test edge minimal raw image environment+: TEST_CASE: edge-minimal -/edge-vsphere: - summary: Test edge vsphere image +/iot-x86-commit: + summary: Test iot commit environment+: - TEST_CASE: edge-vsphere + TEST_CASE: iot-commit + adjust+: + - when: arch != x86_64 + enabled: false -/edge-fdo-aio: - summary: Test edge with fdo aio service +/iot-x86-installer: + summary: Test iot installer image environment+: - TEST_CASE: edge-fdo-aio + TEST_CASE: iot-installer + adjust+: + - when: arch != x86_64 + enabled: false -/edge-fdo-db: - summary: Test edge with fdo package with db +/iot-x86-raw-image: + summary: Test iot raw image environment+: - TEST_CASE: edge-fdo-db + TEST_CASE: iot-raw-image + adjust+: + - when: arch != x86_64 + enabled: false -/edge-ignition: - summary: Test edge ignition feature +/iot-x86-simplified-installer: + summary: Test iot simplified installer image environment+: - TEST_CASE: edge-ignition + TEST_CASE: iot-simplified-installer + adjust+: + - when: arch != x86_64 + enabled: false -/edge-pulp: - summary: Test edge pulp feature +/iot-x86-minimal: + summary: Test iot minimal raw image environment+: - TEST_CASE: edge-pulp + TEST_CASE: iot-minimal -/edge-8to9: - summary: Test edge upgrade from 8 to 9 +/iot-arm-minimal: + summary: Test iot minimal raw image environment+: - TEST_CASE: edge-8to9 + TEST_CASE: iot-minimal -/edge-9to9: - summary: Test edge rebase from 9 to 9 - environment+: - TEST_CASE: edge-9to9 diff --git a/tmt/tests/test.sh b/tmt/tests/test.sh index 2eaf511..5d6b9e8 100755 --- a/tmt/tests/test.sh +++ b/tmt/tests/test.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -exuo pipefail +set -euox pipefail cd ../../ || exit 1 @@ -38,7 +38,3 @@ function run_tests() { run_tests exit 0 - - - -