From 4df93b11134a5772f8abb9b3a16894ff0a516c6a Mon Sep 17 00:00:00 2001 From: Xiaofeng Wang Date: Fri, 2 Feb 2024 12:54:55 +0800 Subject: [PATCH] ci: add rhel9.4 trigger and test workflow --- .github/workflows/rhel9-x86.yml | 118 +++++++++++++++++++++++++++++ .github/workflows/trigger-rhel.yml | 95 +++++++++++++++++++++++ 2 files changed, 213 insertions(+) create mode 100644 .github/workflows/rhel9-x86.yml create mode 100644 .github/workflows/trigger-rhel.yml diff --git a/.github/workflows/rhel9-x86.yml b/.github/workflows/rhel9-x86.yml new file mode 100644 index 0000000..4ecdbfd --- /dev/null +++ b/.github/workflows/rhel9-x86.yml @@ -0,0 +1,118 @@ +--- +name: rhel9-rhel_bootc:rhel-9.4 Test + +on: + issue_comment: + types: + - created + +jobs: + pr-info: + if: ${{ github.event.issue.pull_request && + (endsWith(github.event.comment.body, '/test-rhel94') || + endsWith(github.event.comment.body, '/test-rhel94-x86') || + endsWith(github.event.comment.body, '/test-rhel94-x86-openstack-replace') || + endsWith(github.event.comment.body, '/test-rhel94-x86-gcp-replace') || + endsWith(github.event.comment.body, '/test-rhel94-x86-aws-replace') || + endsWith(github.event.comment.body, '/test-rhel94-x86-anaconda')) }} + 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 }} + + # restrict running of tests to users with admin or write permission for the repository + # see https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#get-repository-permissions-for-a-user + - 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 }} + + rhel94-x86-openstack-replace: + needs: pr-info + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v4 + with: + ref: ${{ needs.pr-info.outputs.sha }} + fetch-depth: 0 + + - name: Run the tests + uses: sclorg/testing-farm-as-github-action@v1 + with: + compose: CentOS-Stream-9 + api_key: ${{ secrets.TF_API_KEY }} + git_url: ${{ needs.pr-info.outputs.repo_url }} + git_ref: ${{ needs.pr-info.outputs.ref }} + pull_request_status_name: "bootc-rhel94-x86-openstack-replace" + tmt_plan_regex: "openstack" + tf_scope: private + secrets: "OS_USERNAME=${{ secrets.OS_USERNAME }};OS_PASSWORD=${{ secrets.OS_PASSWORD }};OS_AUTH_URL=${{ secrets.OS_AUTH_URL }};OS_PROJECT_NAME=${{ secrets.OS_PROJECT_NAME }};OS_USER_DOMAIN_NAME=${{ secrets.OS_USER_DOMAIN_NAME }};OS_PROJECT_DOMAIN_NAME=${{ secrets.OS_PROJECT_DOMAIN_NAME }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};RHEL_REGISTRY_URL=${{ RHEL_REGISTRY_URL }};DOWNLOAD_NODE=${{ DOWNLOAD_NODE }};TEST_OS=rhel-9-4" + + rhel94-x86-gcp-replace: + needs: pr-info + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v4 + with: + ref: ${{ needs.pr-info.outputs.sha }} + fetch-depth: 0 + + - name: Run the tests + uses: sclorg/testing-farm-as-github-action@v1 + with: + compose: CentOS-Stream-9 + api_key: ${{ secrets.TF_API_KEY }} + git_url: ${{ needs.pr-info.outputs.repo_url }} + git_ref: ${{ needs.pr-info.outputs.ref }} + pull_request_status_name: "bootc-rhel94-x86-gcp-replace" + tmt_plan_regex: "gcp" + tf_scope: private + secrets: "GCP_PROJECT=${{ secrets.GCP_PROJECT }};GCP_SERVICE_ACCOUNT_NAME=${{ secrets.GCP_SERVICE_ACCOUNT_NAME }};GCP_SERVICE_ACCOUNT_FILE_B64=${{ secrets.GCP_SERVICE_ACCOUNT_FILE_B64 }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};RHEL_REGISTRY_URL=${{ RHEL_REGISTRY_URL }};DOWNLOAD_NODE=${{ DOWNLOAD_NODE }};TEST_OS=centos-stream-9" + + rhel94-x86-aws-replace: + needs: pr-info + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v4 + with: + ref: ${{ needs.pr-info.outputs.sha }} + fetch-depth: 0 + + - name: Run the tests + uses: sclorg/testing-farm-as-github-action@v1 + with: + compose: CentOS-Stream-9 + api_key: ${{ secrets.TF_API_KEY }} + git_url: ${{ needs.pr-info.outputs.repo_url }} + git_ref: ${{ needs.pr-info.outputs.ref }} + pull_request_status_name: "bootc-rhel94-x86-aws-replace" + tmt_plan_regex: "aws" + tf_scope: private + secrets: "AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }};AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }};AWS_REGION=${{ secrets.AWS_REGION }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};RHEL_REGISTRY_URL=${{ RHEL_REGISTRY_URL }};DOWNLOAD_NODE=${{ DOWNLOAD_NODE }};TEST_OS=centos-stream-9" diff --git a/.github/workflows/trigger-rhel.yml b/.github/workflows/trigger-rhel.yml new file mode 100644 index 0000000..f3497cc --- /dev/null +++ b/.github/workflows/trigger-rhel.yml @@ -0,0 +1,95 @@ +--- +name: rhel9-rhel_bootc:rhel-9.4 trigger + +on: + workflow_dispatch: + schedule: + - cron: '0 5 * * *' + +jobs: + check-image: + # Do not run this job on any fork repos + if: github.repository == 'virt-s1/bootc-workflow-test' + runs-on: container-runner + container: quay.io/fedora/fedora:39 + steps: + - name: Check RHEL 9 image info + id: check_image_rhel9 + run: | + sudo dnf install -y skopeo + + IMAGE_DIGEST=$(skopeo inspect --tls-verify=false "docker://${RHEL_REGISTRY_URL}/rhel9-rhel_bootc:rhel-9.4" | jq -r '.Digest') + IMAGE_VERSION=$(skopeo inspect --tls-verify=false "docker://${RHEL_REGISTRY_URL}/rhel9-rhel_bootc:rhel-9.4" | jq -r '.Labels.version') + KERNEL_VERSION=$(skopeo inspect --tls-verify=false "docker://${RHEL_REGISTRY_URL}/rhel9-rhel_bootc:rhel-9.4" | jq -r '.Labels."ostree.linux"') + COMPOSE_ID=$(skopeo inspect --tls-verify=false "docker://${RHEL_REGISTRY_URL}/rhel9-rhel_bootc:rhel-9.4" | jq -r '.Labels."redhat.compose-id"') + + echo "image_digest=$IMAGE_DIGEST" >> $GITHUB_OUTPUT + echo "image_version=$IMAGE_VERSION" >> $GITHUB_OUTPUT + echo "kernel_version=$KERNEL_VERSION" >> $GITHUB_OUTPUT + echo "compose_id=$COMPOSE_ID" >> $GITHUB_OUTPUT + env: + RHEL_REGISTRY_URL: ${{ secrets.RHEL_REGISTRY_URL }} + + outputs: + image_digest: ${{ steps.check_image_rhel9.outputs.image_digest }} + image_version: ${{ steps.check_image_rhel9.outputs.image_version }} + kernel_version: ${{ steps.check_image_rhel9.outputs.kernel_version }} + compose_id: ${{ steps.check_image_rhel9.outputs.compose_id }} + + create-pr: + needs: check-image + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Save tested container image digest + run: echo "${{ needs.check-image.outputs.image_digest }}" >> files/pr_file + + - name: Get current date + id: date + run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + + - name: Create Pull Request + id: cpr + uses: peter-evans/create-pull-request@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: "build: rhel9-rhel_bootc:rhel-9.4 - ${{ needs.check-image.outputs.image_version }} - ${{ steps.date.outputs.date }}" + committer: cloudkitebot + author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> + branch: cpr + branch-suffix: random + delete-branch: true + title: "rhel9-rhel_bootc:rhel-9.4 - ${{ needs.check-image.outputs.image_version }} - ${{ steps.date.outputs.date }}" + labels: auto-merge,rhel9-rhel_bootc:rhel-9.4 + body: | + rhel9-rhel_bootc:rhel-9.4 image ${{ needs.check-image.outputs.image_version }} + - Date: ${{ steps.date.outputs.date }} + - Image URL: quay.io/centos-bootc/centos-bootc:stream9 + - Image Digest: ${{ needs.check-image.outputs.image_digest }} + - Image Version: ${{ needs.check-image.outputs.image_version }} + - Kernel Version: ${{ needs.check-image.outputs.kernel_version }} + - Compose ID: ${{ needs.check-image.outputs.compose_id }} + + - name: Enable Pull Request Automerge + if: steps.cpr.outputs.pull-request-operation == 'created' + uses: peter-evans/enable-pull-request-automerge@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + pull-request-number: ${{ steps.cpr.outputs.pull-request-number }} + merge-method: rebase + + - name: Add a comment to trigger test workflow + uses: peter-evans/create-or-update-comment@v2 + with: + token: ${{ secrets.PAT }} + issue-number: ${{ steps.cpr.outputs.pull-request-number }} + body: /test-rhel94 + + - name: Create a project card to track compose test result + uses: peter-evans/create-or-update-project-card@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + project-name: bootc test + column-name: rhel9-rhel_bootc:rhel-9.4 + issue-number: ${{ steps.cpr.outputs.pull-request-number }}