From 8eb4c99f5c6eff8e1e83547250cacd44d833e875 Mon Sep 17 00:00:00 2001 From: Xiaofeng Wang Date: Sat, 11 May 2024 01:02:55 +0800 Subject: [PATCH] test: use NoCloud ISO as datasource user-data and meta-data are stored in ISO and boot with ISO attached Signed-off-by: Xiaofeng Wang --- .github/workflows/anaconda.yml | 86 ++--- .github/workflows/bib-image.yml | 329 ++---------------- .github/workflows/os-replace.yml | 120 +++---- .tekton/testing-farm.yaml | 4 + bib-image.sh | 53 ++- playbooks/deploy-azure.yaml | 4 +- playbooks/deploy-libvirt.yaml | 65 +++- playbooks/install.yaml | 8 +- playbooks/templates/virt-install.bash.j2 | 9 +- tmt/plans/bib-image.fmf | 61 +++- tmt/plans/os-replace.fmf | 22 +- tmt/tests/os-replace.fmf | 2 +- ...el9_ami.sh => upload_rhel9_rawhide_ami.sh} | 20 +- 13 files changed, 314 insertions(+), 469 deletions(-) rename tools/{upload_rhel9_ami.sh => upload_rhel9_rawhide_ami.sh} (81%) diff --git a/.github/workflows/anaconda.yml b/.github/workflows/anaconda.yml index a50b0d0..b7f61d2 100644 --- a/.github/workflows/anaconda.yml +++ b/.github/workflows/anaconda.yml @@ -65,11 +65,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - partition: [standard, lvm] - firmware: [bios, uefi] - exclude: - - firmware: bios - arch: aarch64 runs-on: ubuntu-latest steps: @@ -80,7 +75,7 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.5.0-Nightly api_key: ${{ secrets.TF_API_KEY }} @@ -89,11 +84,10 @@ jobs: arch: ${{ matrix.arch }} tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-rhel95-${{ matrix.arch }}-anaconda-${{ matrix.firmware }}-${{ matrix.partition }}" - tmt_plan_regex: "${{ matrix.firmware }}-${{ matrix.partition }}" + pull_request_status_name: "bootc-rhel95-anaconda-${{ matrix.arch }}" + tmt_plan_regex: "/anaconda/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.RHEL95_TIER1_IMAGE_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};RHEL_REGISTRY_URL=${{ secrets.RHEL_REGISTRY_URL }};CERT_URL=${{ secrets.CERT_URL }};DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};RHC_AK=${{ secrets.RHC_AK }};RHC_ORGID=${{ secrets.RHC_ORGID }}" - variables: "FIRMWARE=${{ matrix.firmware }};PARTITION=${{ matrix.partition }}" rhel94-anaconda: needs: pr-info @@ -104,11 +98,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - partition: [standard, lvm] - firmware: [bios, uefi] - exclude: - - firmware: bios - arch: aarch64 runs-on: ubuntu-latest steps: @@ -119,7 +108,7 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.4.0-Nightly api_key: ${{ secrets.TF_API_KEY }} @@ -128,11 +117,10 @@ jobs: arch: ${{ matrix.arch }} tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-rhel94-${{ matrix.arch }}-anaconda-${{ matrix.firmware }}-${{ matrix.partition }}" - tmt_plan_regex: "${{ matrix.firmware }}-${{ matrix.partition }}" + pull_request_status_name: "bootc-rhel94-anaconda-${{ matrix.arch }}" + tmt_plan_regex: "/anaconda/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.RHEL94_TIER1_IMAGE_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};RHEL_REGISTRY_URL=${{ secrets.RHEL_REGISTRY_URL }};CERT_URL=${{ secrets.CERT_URL }};DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};RHC_AK=${{ secrets.RHC_AK }};RHC_ORGID=${{ secrets.RHC_ORGID }}" - variables: "FIRMWARE=${{ matrix.firmware }};PARTITION=${{ matrix.partition }}" cs9-anaconda: needs: pr-info @@ -143,11 +131,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - partition: [standard, lvm] - firmware: [bios, uefi] - exclude: - - firmware: bios - arch: aarch64 runs-on: ubuntu-latest steps: @@ -158,7 +141,7 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: Fedora-40 api_key: ${{ secrets.TF_API_KEY }} @@ -167,11 +150,10 @@ jobs: arch: ${{ matrix.arch }} tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-cs9-${{ matrix.arch }}-anaconda-${{ matrix.firmware }}-${{ matrix.partition }}" - tmt_plan_regex: "${{ matrix.firmware }}-${{ matrix.partition }}" + pull_request_status_name: "bootc-cs9-anaconda-${{ matrix.arch }}" + tmt_plan_regex: "/anaconda/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.CS9_TIER1_IMAGE_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};CERT_URL=${{ secrets.CERT_URL }}" - variables: "TEST_OS=centos-stream-9;FIRMWARE=${{ matrix.firmware }};PARTITION=${{ matrix.partition }}" cs9-dev-anaconda: needs: pr-info @@ -182,11 +164,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - partition: [standard, lvm] - firmware: [bios, uefi] - exclude: - - firmware: bios - arch: aarch64 runs-on: ubuntu-latest steps: @@ -197,7 +174,7 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: Fedora-40 api_key: ${{ secrets.TF_API_KEY }} @@ -206,11 +183,10 @@ jobs: arch: ${{ matrix.arch }} tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-cs9-dev-${{ matrix.arch }}-anaconda-${{ matrix.firmware }}-${{ matrix.partition }}" - tmt_plan_regex: "${{ matrix.firmware }}-${{ matrix.partition }}" + pull_request_status_name: "bootc-cs9-dev-anaconda-${{ matrix.arch }}" + tmt_plan_regex: "/anaconda/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.CS9_DEV_TIER1_IMAGE_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};CERT_URL=${{ secrets.CERT_URL }}" - variables: "FIRMWARE=${{ matrix.firmware }};PARTITION=${{ matrix.partition }}" fedora-40-anaconda: needs: pr-info @@ -221,11 +197,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - partition: [standard, lvm, btrfs] - firmware: [bios, uefi] - exclude: - - firmware: bios - arch: aarch64 runs-on: ubuntu-latest steps: @@ -236,7 +207,7 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: Fedora-40 api_key: ${{ secrets.TF_API_KEY }} @@ -245,11 +216,11 @@ jobs: arch: ${{ matrix.arch }} tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-fedora-40-${{ matrix.arch }}-anaconda-${{ matrix.firmware }}-${{ matrix.partition }}" - tmt_plan_regex: "${{ matrix.firmware }}-${{ matrix.partition }}" + pull_request_status_name: "bootc-fedora-40-anaconda-${{ matrix.arch }}" + tmt_plan_regex: "/anaconda/" tf_scope: private secrets: "QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};CERT_URL=${{ secrets.CERT_URL }}" - variables: "FIRMWARE=${{ matrix.firmware }};PARTITION=${{ matrix.partition }};TIER1_IMAGE_URL=${{ vars.FEDORA_40_TIER1_IMAGE_URL }}" + variables: "TIER1_IMAGE_URL=${{ vars.FEDORA_40_TIER1_IMAGE_URL }}" fedora-41-anaconda: needs: pr-info @@ -260,11 +231,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - partition: [standard, lvm, btrfs] - firmware: [bios, uefi] - exclude: - - firmware: bios - arch: aarch64 runs-on: ubuntu-latest steps: @@ -275,7 +241,7 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: Fedora-40 api_key: ${{ secrets.TF_API_KEY }} @@ -284,11 +250,11 @@ jobs: arch: ${{ matrix.arch }} tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-fedora-41-${{ matrix.arch }}-anaconda-${{ matrix.firmware }}-${{ matrix.partition }}" - tmt_plan_regex: "${{ matrix.firmware }}-${{ matrix.partition }}" + pull_request_status_name: "bootc-fedora-41-anaconda-${{ matrix.arch }}" + tmt_plan_regex: "/anaconda/" tf_scope: private secrets: "QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};CERT_URL=${{ secrets.CERT_URL }}" - variables: "FIRMWARE=${{ matrix.firmware }};PARTITION=${{ matrix.partition }};TIER1_IMAGE_URL=${{ vars.FEDORA_41_TIER1_IMAGE_URL }}" + variables: "TIER1_IMAGE_URL=${{ vars.FEDORA_41_TIER1_IMAGE_URL }}" rhel9y-snapshot-anaconda: needs: pr-info @@ -299,11 +265,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - partition: [standard, lvm] - firmware: [bios, uefi] - exclude: - - firmware: bios - arch: aarch64 runs-on: ubuntu-latest steps: @@ -314,7 +275,7 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.4.0-Nightly api_key: ${{ secrets.TF_API_KEY }} @@ -323,8 +284,7 @@ jobs: arch: ${{ matrix.arch }} tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-rhel9y-snapshot-${{ matrix.arch }}-anaconda-${{ matrix.firmware }}-${{ matrix.partition }}" - tmt_plan_regex: "${{ matrix.firmware }}-${{ matrix.partition }}" + pull_request_status_name: "bootc-rhel9y-snapshot-anaconda-${{ matrix.arch }}" + tmt_plan_regex: "/anaconda/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.RHEL9Y_SNAPSHOT_IMAGE_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};RHEL_REGISTRY_URL=${{ secrets.RHEL_REGISTRY_URL }};CERT_URL=${{ secrets.CERT_URL }};DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};RHC_AK=${{ secrets.RHC_AK }};RHC_ORGID=${{ secrets.RHC_ORGID }}" - variables: "FIRMWARE=${{ matrix.firmware }};PARTITION=${{ matrix.partition }}" diff --git a/.github/workflows/bib-image.yml b/.github/workflows/bib-image.yml index 3e936f2..bfe2a03 100644 --- a/.github/workflows/bib-image.yml +++ b/.github/workflows/bib-image.yml @@ -65,36 +65,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - image_type: [ami, qcow2, vmdk, raw, anaconda-iso, to-disk] - firmware: [image] - exclude: - - arch: aarch64 - image_type: vmdk - - image_type: anaconda-iso - firmware: image - include: - - image_type: ami - platform: aws - - image_type: qcow2 - platform: libvirt - - image_type: vmdk - platform: vsphere - - image_type: raw - platform: libvirt - - image_type: to-disk - platform: libvirt - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: bios - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: uefi - - image_type: anaconda-iso - platform: libvirt - arch: aarch64 - firmware: uefi runs-on: ubuntu-latest steps: @@ -105,20 +75,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.5.0-Nightly api_key: ${{ secrets.TF_API_KEY }} git_url: ${{ needs.pr-info.outputs.repo_url }} git_ref: ${{ needs.pr-info.outputs.ref }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-rhel95-${{ matrix.arch }}-bib-${{ matrix.image_type }}-${{ matrix.firmware }}" - tmt_plan_regex: "${{ matrix.image_type }}" + pull_request_status_name: "bootc-rhel95-bib-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }}" + tmt_plan_regex: "/bib-image/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.RHEL95_TIER1_IMAGE_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};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 }};RHC_AK=${{ secrets.RHC_AK }};RHC_ORGID=${{ secrets.RHC_ORGID }};RHEL_REGISTRY_URL=${{ secrets.RHEL_REGISTRY_URL }}" - variables: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};IMAGE_TYPE=${{ matrix.image_type }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1;FIRMWARE=${{ matrix.firmware }}" + variables: "ARCH=${{ matrix.arch }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1" rhel94-bib-image: needs: pr-info @@ -129,36 +99,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - image_type: [ami, qcow2, vmdk, raw, anaconda-iso, to-disk] - firmware: [image] - exclude: - - arch: aarch64 - image_type: vmdk - - image_type: anaconda-iso - firmware: image - include: - - image_type: ami - platform: aws - - image_type: qcow2 - platform: libvirt - - image_type: vmdk - platform: vsphere - - image_type: raw - platform: libvirt - - image_type: to-disk - platform: libvirt - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: bios - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: uefi - - image_type: anaconda-iso - platform: libvirt - arch: aarch64 - firmware: uefi runs-on: ubuntu-latest steps: @@ -169,20 +109,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.4.0-Nightly api_key: ${{ secrets.TF_API_KEY }} git_url: ${{ needs.pr-info.outputs.repo_url }} git_ref: ${{ needs.pr-info.outputs.ref }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-rhel94-${{ matrix.arch }}-bib-${{ matrix.image_type }}-${{ matrix.firmware }}" - tmt_plan_regex: "${{ matrix.image_type }}" + pull_request_status_name: "bootc-rhel94-bib-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }}" + tmt_plan_regex: "/bib-image/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.RHEL94_TIER1_IMAGE_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};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 }};RHC_AK=${{ secrets.RHC_AK }};RHC_ORGID=${{ secrets.RHC_ORGID }};RHEL_REGISTRY_URL=${{ secrets.RHEL_REGISTRY_URL }}" - variables: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};IMAGE_TYPE=${{ matrix.image_type }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1;FIRMWARE=${{ matrix.firmware }}" + variables: "ARCH=${{ matrix.arch }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1" cs9-bib-image: needs: pr-info @@ -193,36 +133,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - image_type: [ami, qcow2, vmdk, raw, anaconda-iso, to-disk] - firmware: [image] - exclude: - - arch: aarch64 - image_type: vmdk - - image_type: anaconda-iso - firmware: image - include: - - image_type: ami - platform: aws - - image_type: qcow2 - platform: libvirt - - image_type: vmdk - platform: vsphere - - image_type: raw - platform: libvirt - - image_type: to-disk - platform: libvirt - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: bios - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: uefi - - image_type: anaconda-iso - platform: libvirt - arch: aarch64 - firmware: uefi runs-on: ubuntu-latest steps: @@ -233,20 +143,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 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 }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-cs9-${{ matrix.arch }}-bib-${{ matrix.image_type }}-${{ matrix.firmware }}" - tmt_plan_regex: "${{ matrix.image_type }}" + pull_request_status_name: "bootc-cs9-bib-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }}" + tmt_plan_regex: "/bib-image/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.CS9_TIER1_IMAGE_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};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: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};IMAGE_TYPE=${{ matrix.image_type }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1;FIRMWARE=${{ matrix.firmware }}" + variables: "ARCH=${{ matrix.arch }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1" cs9-dev-bib-image: needs: pr-info @@ -257,81 +167,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - image_type: [ami, qcow2, vmdk, raw, anaconda-iso, to-disk] - build_arch: [x86_64, aarch64] - firmware: [image] - exclude: - - image_type: anaconda-iso - firmware: image - - image_type: vmdk - arch: aarch64 - - image_type: vmdk - build_arch: aarch64 - - image_type: qcow2 - arch: x86_64 - build_arch: aarch64 - - image_type: qcow2 - arch: aarch64 - build_arch: x86_64 - - image_type: raw - arch: x86_64 - build_arch: aarch64 - - image_type: raw - arch: aarch64 - build_arch: x86_64 - - image_type: to-disk - arch: x86_64 - build_arch: aarch64 - - image_type: to-disk - arch: aarch64 - build_arch: x86_64 - - image_type: anaconda-iso - arch: x86_64 - build_arch: aarch64 - - image_type: anaconda-iso - arch: aarch64 - build_arch: x86_64 - include: - - image_type: ami - platform: aws - - image_type: qcow2 - platform: libvirt - - image_type: vmdk - platform: vsphere - - image_type: raw - platform: libvirt - - image_type: to-disk - platform: libvirt - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - build_arch: x86_64 - firmware: bios - runner_compose: RHEL-9.5.0-Nightly - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - build_arch: x86_64 - firmware: uefi - runner_compose: RHEL-9.5.0-Nightly - - image_type: anaconda-iso - platform: libvirt - arch: aarch64 - build_arch: aarch64 - firmware: uefi - runner_compose: RHEL-9.5.0-Nightly - - arch: x86_64 - build_arch: x86_64 - runner_compose: RHEL-9.5.0-Nightly - - arch: aarch64 - build_arch: aarch64 - runner_compose: RHEL-9.5.0-Nightly - - arch: x86_64 - build_arch: aarch64 - runner_compose: Fedora-40 - - arch: aarch64 - build_arch: x86_64 - runner_compose: Fedora-40 runs-on: ubuntu-latest # Only run cross-build test on Fedora-40 TF runner @@ -343,20 +178,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: - compose: ${{ matrix.runner_compose }} + 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 }} - arch: ${{ matrix.build_arch }} - tmt_context: "arch=${{ matrix.arch }}" + arch: ${{ matrix.arch }} update_pull_request_status: true - pull_request_status_name: "bootc-cs9-dev-${{ matrix.arch }}-bib-${{ matrix.image_type }}-${{ matrix.firmware }}-on-${{ matrix.build_arch }}" - tmt_plan_regex: "${{ matrix.image_type }}" + pull_request_status_name: "bootc-cs9-dev-bib-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }}" + tmt_plan_regex: "/bib-image/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.CS9_DEV_TIER1_IMAGE_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};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: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};IMAGE_TYPE=${{ matrix.image_type }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1;FIRMWARE=${{ matrix.firmware }}" + variables: "ARCH=${{ matrix.arch }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1" fedora-40-bib-image: needs: pr-info @@ -367,36 +202,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - image_type: [ami, qcow2, vmdk, raw, anaconda-iso, to-disk] - firmware: [image] - exclude: - - arch: aarch64 - image_type: vmdk - - image_type: anaconda-iso - firmware: image - include: - - image_type: ami - platform: aws - - image_type: qcow2 - platform: libvirt - - image_type: vmdk - platform: vsphere - - image_type: raw - platform: libvirt - - image_type: to-disk - platform: libvirt - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: bios - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: uefi - - image_type: anaconda-iso - platform: libvirt - arch: aarch64 - firmware: uefi runs-on: ubuntu-latest steps: @@ -407,20 +212,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: Fedora-40 api_key: ${{ secrets.TF_API_KEY }} git_url: ${{ needs.pr-info.outputs.repo_url }} git_ref: ${{ needs.pr-info.outputs.ref }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-fedora-40-${{ matrix.arch }}-bib-${{ matrix.image_type }}-${{ matrix.firmware }}" - tmt_plan_regex: "${{ matrix.image_type }}" + pull_request_status_name: "bootc-fedora-40-bib-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }}" + tmt_plan_regex: "/bib-image/" tf_scope: private secrets: "QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};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: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};IMAGE_TYPE=${{ matrix.image_type }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1;FIRMWARE=${{ matrix.firmware }};TIER1_IMAGE_URL=${{ vars.FEDORA_40_TIER1_IMAGE_URL }}" + variables: "ARCH=${{ matrix.arch }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1;TIER1_IMAGE_URL=${{ vars.FEDORA_40_TIER1_IMAGE_URL }}" fedora-41-bib-image: needs: pr-info @@ -431,36 +236,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - image_type: [ami, qcow2, vmdk, raw, anaconda-iso, to-disk] - firmware: [image] - exclude: - - arch: aarch64 - image_type: vmdk - - image_type: anaconda-iso - firmware: image - include: - - image_type: ami - platform: aws - - image_type: qcow2 - platform: libvirt - - image_type: vmdk - platform: vsphere - - image_type: raw - platform: libvirt - - image_type: to-disk - platform: libvirt - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: bios - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: uefi - - image_type: anaconda-iso - platform: libvirt - arch: aarch64 - firmware: uefi runs-on: ubuntu-latest steps: @@ -471,20 +246,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: Fedora-40 api_key: ${{ secrets.TF_API_KEY }} git_url: ${{ needs.pr-info.outputs.repo_url }} git_ref: ${{ needs.pr-info.outputs.ref }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-fedora-41-${{ matrix.arch }}-bib-${{ matrix.image_type }}-${{ matrix.firmware }}" - tmt_plan_regex: "${{ matrix.image_type }}" + pull_request_status_name: "bootc-fedora-41-bib-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }}" + tmt_plan_regex: "/bib-image/" tf_scope: private secrets: "QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};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: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};IMAGE_TYPE=${{ matrix.image_type }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1;FIRMWARE=${{ matrix.firmware }};TIER1_IMAGE_URL=${{ vars.FEDORA_41_TIER1_IMAGE_URL }}" + variables: "ARCH=${{ matrix.arch }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1;TIER1_IMAGE_URL=${{ vars.FEDORA_41_TIER1_IMAGE_URL }}" rhel9y-snapshot-bib-image: needs: pr-info @@ -495,36 +270,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - image_type: [ami, qcow2, vmdk, raw, anaconda-iso, to-disk] - firmware: [image] - exclude: - - arch: aarch64 - image_type: vmdk - - image_type: anaconda-iso - firmware: image - include: - - image_type: ami - platform: aws - - image_type: qcow2 - platform: libvirt - - image_type: vmdk - platform: vsphere - - image_type: raw - platform: libvirt - - image_type: to-disk - platform: libvirt - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: bios - - image_type: anaconda-iso - platform: libvirt - arch: x86_64 - firmware: uefi - - image_type: anaconda-iso - platform: libvirt - arch: aarch64 - firmware: uefi runs-on: ubuntu-latest steps: @@ -535,17 +280,17 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.4.0-Nightly api_key: ${{ secrets.TF_API_KEY }} git_url: ${{ needs.pr-info.outputs.repo_url }} git_ref: ${{ needs.pr-info.outputs.ref }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-rhel9y-snapshot-${{ matrix.arch }}-bib-${{ matrix.image_type }}-${{ matrix.firmware }}" - tmt_plan_regex: "${{ matrix.image_type }}" + pull_request_status_name: "bootc-rhel9y-snapshot-bib-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }}" + tmt_plan_regex: "/bib-image/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.RHEL9Y_SNAPSHOT_IMAGE_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};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 }};RHC_AK=${{ secrets.RHC_AK }};RHC_ORGID=${{ secrets.RHC_ORGID }};RHEL_REGISTRY_URL=${{ secrets.RHEL_REGISTRY_URL }}" - variables: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};IMAGE_TYPE=${{ matrix.image_type }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1;FIRMWARE=${{ matrix.firmware }}" + variables: "ARCH=${{ matrix.arch }};AWS_REGION=${{ secrets.AWS_REGION }};GOVC_INSECURE=1" diff --git a/.github/workflows/os-replace.yml b/.github/workflows/os-replace.yml index afd2a5e..889db3a 100644 --- a/.github/workflows/os-replace.yml +++ b/.github/workflows/os-replace.yml @@ -64,15 +64,7 @@ jobs: continue-on-error: true strategy: matrix: - arch: [x86_64] - platform: [openstack, gcp, aws, azure, libvirt, beaker, bare] - include: - - arch: aarch64 - platform: aws - - arch: aarch64 - platform: bare - - arch: aarch64 - platform: beaker + arch: [x86_64, aarch64] runs-on: ubuntu-latest steps: @@ -83,20 +75,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@main + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.5.0-Nightly api_key: ${{ secrets.TF_API_KEY }} git_url: ${{ needs.pr-info.outputs.repo_url }} git_ref: ${{ needs.pr-info.outputs.ref }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-rhel95-${{ matrix.arch }}-replace-${{ matrix.platform }}" - tmt_plan_regex: "${{ matrix.platform }}" + pull_request_status_name: "bootc-rhel95-replace-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }};distro=rhel" + tmt_plan_regex: "/os-replace/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.RHEL95_TIER1_IMAGE_URL }};OS_USERNAME=${{ secrets.OS_USERNAME }};OS_PASSWORD=${{ secrets.OS_PASSWORD }};OS_AUTH_URL=${{ secrets.OS_AUTH_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};RHEL_REGISTRY_URL=${{ secrets.RHEL_REGISTRY_URL }};DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};GCP_SERVICE_ACCOUNT_FILE_B64=${{ secrets.GCP_SERVICE_ACCOUNT_FILE_B64 }};AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }};AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }};CERT_URL=${{ secrets.CERT_URL }};RHC_AK=${{ secrets.RHC_AK }};RHC_ORGID=${{ secrets.RHC_ORGID }};BEAKER_KEYTAB_B64=${{ secrets.BEAKER_KEYTAB_B64 }};BEAKER_CLIENT_B64=${{ secrets.BEAKER_CLIENT_B64 }};KRB5_CONF_B64=${{ secrets.KRB5_CONF_B64 }};AZURE_SECRET=${{ secrets.AZURE_SECRET }}" - variables: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }}" + variables: "ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }}" rhel94-replace: needs: pr-info @@ -106,13 +98,7 @@ jobs: continue-on-error: true strategy: matrix: - arch: [x86_64] - platform: [openstack, gcp, aws, azure, libvirt, beaker] - include: - - arch: aarch64 - platform: aws - - arch: aarch64 - platform: beaker + arch: [x86_64, aarch64] runs-on: ubuntu-latest steps: @@ -123,20 +109,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@main + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.4.0-Nightly api_key: ${{ secrets.TF_API_KEY }} git_url: ${{ needs.pr-info.outputs.repo_url }} git_ref: ${{ needs.pr-info.outputs.ref }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-rhel94-${{ matrix.arch }}-replace-${{ matrix.platform }}" - tmt_plan_regex: "${{ matrix.platform }}" + pull_request_status_name: "bootc-rhel94-replace-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }};distro=rhel" + tmt_plan_regex: "/os-replace/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.RHEL94_TIER1_IMAGE_URL }};OS_USERNAME=${{ secrets.OS_USERNAME }};OS_PASSWORD=${{ secrets.OS_PASSWORD }};OS_AUTH_URL=${{ secrets.OS_AUTH_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};RHEL_REGISTRY_URL=${{ secrets.RHEL_REGISTRY_URL }};DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};GCP_SERVICE_ACCOUNT_FILE_B64=${{ secrets.GCP_SERVICE_ACCOUNT_FILE_B64 }};AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }};AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }};CERT_URL=${{ secrets.CERT_URL }};RHC_AK=${{ secrets.RHC_AK }};RHC_ORGID=${{ secrets.RHC_ORGID }};BEAKER_KEYTAB_B64=${{ secrets.BEAKER_KEYTAB_B64 }};BEAKER_CLIENT_B64=${{ secrets.BEAKER_CLIENT_B64 }};KRB5_CONF_B64=${{ secrets.KRB5_CONF_B64 }};AZURE_SECRET=${{ secrets.AZURE_SECRET }}" - variables: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }}" + variables: "ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }}" cs9-replace: needs: pr-info @@ -146,13 +132,7 @@ jobs: continue-on-error: true strategy: matrix: - arch: [x86_64] - platform: [openstack, gcp, aws, azure, libvirt, beaker] - include: - - arch: aarch64 - platform: aws - - arch: aarch64 - platform: beaker + arch: [x86_64, aarch64] runs-on: ubuntu-latest steps: @@ -163,20 +143,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@main + uses: sclorg/testing-farm-as-github-action@v2 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 }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-cs9-${{ matrix.arch }}-replace-${{ matrix.platform }}" - tmt_plan_regex: "${{ matrix.platform }}" + pull_request_status_name: "bootc-cs9-replace-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }};distro=centos-stream" + tmt_plan_regex: "/os-replace/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.CS9_TIER1_IMAGE_URL }};OS_USERNAME=${{ secrets.OS_USERNAME }};OS_PASSWORD=${{ secrets.OS_PASSWORD }};OS_AUTH_URL=${{ secrets.OS_AUTH_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};GCP_SERVICE_ACCOUNT_FILE_B64=${{ secrets.GCP_SERVICE_ACCOUNT_FILE_B64 }};AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }};AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }};CERT_URL=${{ secrets.CERT_URL }};BEAKER_KEYTAB_B64=${{ secrets.BEAKER_KEYTAB_B64 }};BEAKER_CLIENT_B64=${{ secrets.BEAKER_CLIENT_B64 }};KRB5_CONF_B64=${{ secrets.KRB5_CONF_B64 }};AZURE_SECRET=${{ secrets.AZURE_SECRET }}" - variables: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }}" + variables: "ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }}" cs9-dev-replace: needs: pr-info @@ -186,15 +166,7 @@ jobs: continue-on-error: true strategy: matrix: - arch: [x86_64] - platform: [openstack, gcp, aws, azure, libvirt, beaker, bare] - include: - - arch: aarch64 - platform: aws - - arch: aarch64 - platform: bare - - arch: aarch64 - platform: beaker + arch: [x86_64, aarch64] runs-on: ubuntu-latest steps: @@ -205,20 +177,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@main + uses: sclorg/testing-farm-as-github-action@v2 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 }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-cs9-dev-${{ matrix.arch }}-replace-${{ matrix.platform }}" - tmt_plan_regex: "${{ matrix.platform }}" + pull_request_status_name: "bootc-cs9-dev-replace-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }};distro=centos-stream" + tmt_plan_regex: "/os-replace/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.CS9_DEV_TIER1_IMAGE_URL }};OS_USERNAME=${{ secrets.OS_USERNAME }};OS_PASSWORD=${{ secrets.OS_PASSWORD }};OS_AUTH_URL=${{ secrets.OS_AUTH_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};GCP_SERVICE_ACCOUNT_FILE_B64=${{ secrets.GCP_SERVICE_ACCOUNT_FILE_B64 }};AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }};AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }};CERT_URL=${{ secrets.CERT_URL }};BEAKER_KEYTAB_B64=${{ secrets.BEAKER_KEYTAB_B64 }};BEAKER_CLIENT_B64=${{ secrets.BEAKER_CLIENT_B64 }};KRB5_CONF_B64=${{ secrets.KRB5_CONF_B64 }};AZURE_SECRET=${{ secrets.AZURE_SECRET }}" - variables: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }}" + variables: "ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }}" fedora-40-replace: needs: pr-info @@ -229,10 +201,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - platform: [openstack, gcp, aws, azure, libvirt, beaker, bare] - exclude: - - arch: aarch64 - platform: openstack runs-on: ubuntu-latest steps: @@ -243,20 +211,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.5.0-Nightly api_key: ${{ secrets.TF_API_KEY }} git_url: ${{ needs.pr-info.outputs.repo_url }} git_ref: ${{ needs.pr-info.outputs.ref }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-fedora-40-${{ matrix.arch }}-replace-${{ matrix.platform }}" - tmt_plan_regex: "${{ matrix.platform }}" + pull_request_status_name: "bootc-fedora-40-replace-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }};distro=fedora" + tmt_plan_regex: "/os-replace/" tf_scope: private secrets: "OS_USERNAME=${{ secrets.OS_USERNAME }};OS_PASSWORD=${{ secrets.OS_PASSWORD }};OS_AUTH_URL=${{ secrets.OS_AUTH_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};GCP_SERVICE_ACCOUNT_FILE_B64=${{ secrets.GCP_SERVICE_ACCOUNT_FILE_B64 }};AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }};AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }};CERT_URL=${{ secrets.CERT_URL }};BEAKER_KEYTAB_B64=${{ secrets.BEAKER_KEYTAB_B64 }};BEAKER_CLIENT_B64=${{ secrets.BEAKER_CLIENT_B64 }};KRB5_CONF_B64=${{ secrets.KRB5_CONF_B64 }};AZURE_SECRET=${{ secrets.AZURE_SECRET }}" - variables: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }};TIER1_IMAGE_URL=${{ vars.FEDORA_40_TIER1_IMAGE_URL }}" + variables: "ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }};TIER1_IMAGE_URL=${{ vars.FEDORA_40_TIER1_IMAGE_URL }}" fedora-41-replace: needs: pr-info @@ -267,10 +235,6 @@ jobs: strategy: matrix: arch: [x86_64, aarch64] - platform: [openstack, gcp, aws, azure, libvirt, beaker, bare] - exclude: - - arch: aarch64 - platform: openstack runs-on: ubuntu-latest steps: @@ -281,20 +245,20 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@v1 + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.5.0-Nightly api_key: ${{ secrets.TF_API_KEY }} git_url: ${{ needs.pr-info.outputs.repo_url }} git_ref: ${{ needs.pr-info.outputs.ref }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-fedora-41-${{ matrix.arch }}-replace-${{ matrix.platform }}" - tmt_plan_regex: "${{ matrix.platform }}" + pull_request_status_name: "bootc-fedora-41-replace-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }};distro=fedora" + tmt_plan_regex: "/os-replace/" tf_scope: private secrets: "OS_USERNAME=${{ secrets.OS_USERNAME }};OS_PASSWORD=${{ secrets.OS_PASSWORD }};OS_AUTH_URL=${{ secrets.OS_AUTH_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};GCP_SERVICE_ACCOUNT_FILE_B64=${{ secrets.GCP_SERVICE_ACCOUNT_FILE_B64 }};AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }};AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }};CERT_URL=${{ secrets.CERT_URL }};BEAKER_KEYTAB_B64=${{ secrets.BEAKER_KEYTAB_B64 }};BEAKER_CLIENT_B64=${{ secrets.BEAKER_CLIENT_B64 }};KRB5_CONF_B64=${{ secrets.KRB5_CONF_B64 }};AZURE_SECRET=${{ secrets.AZURE_SECRET }}" - variables: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }};TIER1_IMAGE_URL=${{ vars.FEDORA_41_TIER1_IMAGE_URL }}" + variables: "ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }};TIER1_IMAGE_URL=${{ vars.FEDORA_41_TIER1_IMAGE_URL }}" rhel9y-snapshot-replace: needs: pr-info @@ -305,12 +269,6 @@ jobs: strategy: matrix: arch: [x86_64] - platform: [openstack, gcp, aws, azure, libvirt, beaker] - include: - - arch: aarch64 - platform: aws - - arch: aarch64 - platform: beaker runs-on: ubuntu-latest steps: @@ -321,17 +279,17 @@ jobs: fetch-depth: 0 - name: Run the tests - uses: sclorg/testing-farm-as-github-action@main + uses: sclorg/testing-farm-as-github-action@v2 with: compose: RHEL-9.4.0-Nightly api_key: ${{ secrets.TF_API_KEY }} git_url: ${{ needs.pr-info.outputs.repo_url }} git_ref: ${{ needs.pr-info.outputs.ref }} arch: ${{ matrix.arch }} - tmt_context: "arch=${{ matrix.arch }}" update_pull_request_status: true - pull_request_status_name: "bootc-rhel9y-snapshot-${{ matrix.arch }}-replace-${{ matrix.platform }}" - tmt_plan_regex: "${{ matrix.platform }}" + pull_request_status_name: "bootc-rhel9y-snapshot-replace-${{ matrix.arch }}" + tmt_context: "arch=${{ matrix.arch }};distro=rhel" + tmt_plan_regex: "/os-replace/" tf_scope: private secrets: "TIER1_IMAGE_URL=${{ secrets.RHEL9Y_SNAPSHOT_IMAGE_URL }};OS_USERNAME=${{ secrets.OS_USERNAME }};OS_PASSWORD=${{ secrets.OS_PASSWORD }};OS_AUTH_URL=${{ secrets.OS_AUTH_URL }};QUAY_USERNAME=${{ secrets.QUAY_USERNAME }};QUAY_PASSWORD=${{ secrets.QUAY_PASSWORD }};QUAY_SECRET=${{ secrets.QUAY_SECRET }};RHEL_REGISTRY_URL=${{ secrets.RHEL_REGISTRY_URL }};DOWNLOAD_NODE=${{ secrets.DOWNLOAD_NODE }};GCP_SERVICE_ACCOUNT_FILE_B64=${{ secrets.GCP_SERVICE_ACCOUNT_FILE_B64 }};AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }};AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }};CERT_URL=${{ secrets.CERT_URL }};RHC_AK=${{ secrets.RHC_AK }};RHC_ORGID=${{ secrets.RHC_ORGID }};BEAKER_KEYTAB_B64=${{ secrets.BEAKER_KEYTAB_B64 }};BEAKER_CLIENT_B64=${{ secrets.BEAKER_CLIENT_B64 }};KRB5_CONF_B64=${{ secrets.KRB5_CONF_B64 }};AZURE_SECRET=${{ secrets.AZURE_SECRET }}" - variables: "PLATFORM=${{ matrix.platform }};ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }}" + variables: "ARCH=${{ matrix.arch }};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 }};GCP_PROJECT=${{ secrets.GCP_PROJECT }};AWS_REGION=${{ secrets.AWS_REGION }};AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION_ID }};AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }};AZURE_TENANT=${{ secrets.AZURE_TENANT }}" diff --git a/.tekton/testing-farm.yaml b/.tekton/testing-farm.yaml index e1ebddf..1004aef 100644 --- a/.tekton/testing-farm.yaml +++ b/.tekton/testing-farm.yaml @@ -139,10 +139,13 @@ spec: COMPOSE_ID=$(jq -r '.Labels."redhat.compose-id"' skopeo_inspect.json) if [[ "${COMPOSE_ID}" == "RHEL-"* ]]; then COMPOSE=$(echo "${COMPOSE_ID}" | grep -o '^RHEL-[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*')-Nightly + DISTRO=rhel elif [[ "${COMPOSE_ID}" == "CentOS-Stream-"* ]]; then COMPOSE=$(echo "${COMPOSE_ID}" | grep -o '^CentOS-Stream-[0-9][0-9]*') + DISTRO=centos-stream else COMPOSE=Fedora-Rawhide + DISTRO=fedora fi elif [[ $IMAGE_NAME =~ ^bootc-image-builder ]]; then BASE_IMAGE_NAME=$(jq -r '.Labels.name' skopeo_inspect.json) @@ -194,6 +197,7 @@ spec: --compose "${COMPOSE}" \ --arch "${ARCH}" \ --context "arch=${ARCH}" \ + --context "distro=${DISTRO}" \ --timeout "${TIMEOUT}" # default to 60m, extend to 90m # https://tekton.dev/docs/pipelines/tasks/#specifying-a-timeout diff --git a/bib-image.sh b/bib-image.sh index 1309445..4d79240 100755 --- a/bib-image.sh +++ b/bib-image.sh @@ -34,8 +34,6 @@ INVENTORY_FILE="${TEMPDIR}/inventory" REPLACE_CLOUD_USER="" -# For anaconda-iso test -FIRMWARE="${FIRMWARE:-bios}" TEST_IMAGE_NAME="bootc-workflow-test" greenprint "Login quay.io" @@ -104,17 +102,23 @@ EOF esac greenprint "Configure container build arch" -case "$ARCH" in +if [[ "$CROSS_ARCH" == "True" ]]; then + if [[ "$ARCH" == "x86_64" ]]; then + BUILD_ARCH="aarch64" + else + BUILD_ARCH="x86_64" + fi +else + BUILD_ARCH="$ARCH" +fi + +case "$BUILD_ARCH" in "x86_64") BUILD_PLATFORM="linux/amd64" ;; "aarch64") BUILD_PLATFORM="linux/arm64" ;; - *) - redprint "Variable ARCH has to be defined" - exit 1 - ;; esac greenprint "Create ${TEST_OS} installation Containerfile" @@ -287,8 +291,16 @@ case "$IMAGE_TYPE" in if [[ "$IMAGE_TYPE" == "raw" ]]; then qemu-img convert -f raw output/image/disk.raw -O qcow2 output/image/disk.qcow2 sudo mv output/image/disk.qcow2 /var/lib/libvirt/images && sudo rm -rf output + # raw image will run test on bios vm for x86_64 + if [[ "$ARCH" == "x86_64" ]]; then + BIB_FIRMWARE=bios + else + BIB_FIRMWARE=uefi + fi else sudo mv output/qcow2/disk.qcow2 /var/lib/libvirt/images && sudo rm -rf output + # qcow2 image will run test on uefi vm + BIB_FIRMWARE=uefi fi greenprint "Deploy $IMAGE_TYPE instance" @@ -299,6 +311,8 @@ case "$IMAGE_TYPE" in -e ssh_user="$SSH_USER" \ -e inventory_file="$INVENTORY_FILE" \ -e bib="true" \ + -e boot_args="$BOOT_ARGS" \ + -e bib_firmware="$BIB_FIRMWARE" \ "playbooks/deploy-libvirt.yaml" ;; "vmdk") @@ -523,6 +537,17 @@ EOFKS greenprint "💾 Create vm qcow2 files for ISO installation" sudo qemu-img create -f qcow2 "/var/lib/libvirt/images/disk.qcow2" 10G + if [[ "$ARCH" == "x86_64" ]]; then + FIRMWARE_LIST=( \ + "bios" \ + "uefi" \ + ) + RND_LINE=$((RANDOM % 2)) + FIRMWARE="${FIRMWARE_LIST[$RND_LINE]}" + else + FIRMWARE="uefi" + fi + greenprint "Deploy $IMAGE_TYPE instance" ansible-playbook -v \ -i "$INVENTORY_FILE" \ @@ -556,6 +581,18 @@ EOFKS bootc install to-disk --filesystem "$ROOTFS" --generic-image --via-loopback /output/disk.raw sudo qemu-img convert -f raw ./disk.raw -O qcow2 "/var/lib/libvirt/images/disk.qcow2" + rm -f disk.raw + + if [[ "$ARCH" == "x86_64" ]]; then + BIB_FIRMWARE_LIST=( \ + "bios" \ + "uefi" \ + ) + RND_LINE=$((RANDOM % 2)) + BIB_FIRMWARE="${BIB_FIRMWARE_LIST[$RND_LINE]}" + else + BIB_FIRMWARE="uefi" + fi greenprint "Deploy $IMAGE_TYPE instance" ansible-playbook -v \ @@ -565,6 +602,8 @@ EOFKS -e ssh_user="$SSH_USER" \ -e inventory_file="$INVENTORY_FILE" \ -e bib="true" \ + -e boot_args="$BOOT_ARGS" \ + -e bib_firmware="$BIB_FIRMWARE" \ "playbooks/deploy-libvirt.yaml" ;; *) diff --git a/playbooks/deploy-azure.yaml b/playbooks/deploy-azure.yaml index 1ec4129..91e968c 100644 --- a/playbooks/deploy-azure.yaml +++ b/playbooks/deploy-azure.yaml @@ -19,8 +19,8 @@ x86_64: Fedora-Cloud-40-x64 aarch64: Fedora-Cloud-40-Arm64 fedora-41: - x86_64: Fedora-Cloud-41-x64 - aarch64: Fedora-Cloud-41-Arm64 + x86_64: Fedora-Cloud-Rawhide-x64 + aarch64: Fedora-Cloud-Rawhide-Arm64 bib: "false" tasks: diff --git a/playbooks/deploy-libvirt.yaml b/playbooks/deploy-libvirt.yaml index 878c269..8bd9a7e 100644 --- a/playbooks/deploy-libvirt.yaml +++ b/playbooks/deploy-libvirt.yaml @@ -12,6 +12,7 @@ instance_name: "bootc-{{ test_os }}" image_path: "/var/lib/libvirt/images" bib: "false" + bib_firmware: "" firmware: "" boot_args: "" os_variant: @@ -19,8 +20,16 @@ rhel-9-5: rhel9-unknown rhel-9-4: rhel9-unknown fedora-40: fedora-unknown + fedora-41: fedora-unknown tasks: + - name: Get temp folder + command: dirname "{{ inventory_file }}" + register: result_temp_folder + + - set_fact: + temp_folder: "{{ result_temp_folder.stdout }}" + - set_fact: random_num: "{{ 9999 | random(start=1001) }}" @@ -57,7 +66,7 @@ - "'rhel' in test_os" - bib == "false" - - name: Get Fedora-Cloud-Base-Generic image filename + - name: Get Fedora-Cloud-Base-Generic 40 image filename block: - name: Get CentOS-Stream-GenericCloud image filename shell: curl -s https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Cloud/{{ arch }}/images/ | grep -ioE '>Fedora-Cloud-Base-Generic.*.qcow2' | tr -d '><' @@ -70,6 +79,19 @@ - test_os == "fedora-40" - bib == "false" + - name: Get Fedora-Cloud-Base-Generic 41 image filename + block: + - name: Get CentOS-Stream-GenericCloud image filename + shell: curl -s https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Cloud/{{ arch }}/images/ | grep -ioE '>Fedora-Cloud-Base-Generic.*.qcow2' | tr -d '><' + register: out + + - set_fact: + download_image_name: "{{ out.stdout }}" + rhel_guest_image_fname: "{{ instance_name }}.qcow2" + when: + - test_os == "fedora-41" + - bib == "false" + - name: Download CentOS-Stream-GenericCloud image get_url: url: "https://composes.stream.centos.org/production/latest-CentOS-Stream/compose/BaseOS/x86_64/images/{{ download_image_name }}" @@ -90,7 +112,7 @@ - "'rhel' in test_os" - bib == "false" - - name: Download Fedora-Cloud-Base-Generic + - name: Download Fedora-Cloud-Base-Generic 40 get_url: url: "https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Cloud/{{ arch }}/images/{{ download_image_name }}" dest: "{{ image_path }}/{{ rhel_guest_image_fname }}" @@ -100,6 +122,16 @@ - test_os == "fedora-40" - bib == "false" + - name: Download Fedora-Cloud-Base-Generic 41 + get_url: + url: "https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Cloud/{{ arch }}/images/{{ download_image_name }}" + dest: "{{ image_path }}/{{ rhel_guest_image_fname }}" + validate_certs: false + become: true + when: + - test_os == "fedora-41" + - bib == "false" + - set_fact: rhel_guest_image_fname: "disk.qcow2" when: bib == "true" @@ -111,24 +143,32 @@ - name: Generate user-data and meta-data template: src: "{{ item }}.j2" - dest: "{{ playbook_dir }}/libvirt-{{ item }}" + dest: "{{ temp_folder }}/{{ item }}" loop: - user-data - meta-data when: firmware == "" - # virt-install with --cloud-init always shutdown vm on the first reboot - # https://github.com/virt-manager/virt-manager/issues/497 - # workaround is shutdown vm in cloud-init when cloud-init finished - # then start vm + # virt-install with uefi, the system has a "system reset" in the first boot and shutdown + # Then the --cloud-init will be dropped when start after system reset + - name: Generate seed.iso for NoCloud cloud-init + command: | + genisoimage -output "{{ image_path }}/seed.iso" \ + -volid cidata \ + -joliet \ + -rock \ + "{{ temp_folder }}/user-data" "{{ temp_folder }}/meta-data" + become: true + when: firmware == "" + - name: Generate virt-install script template: src: virt-install.bash.j2 - dest: "{{ playbook_dir }}/virt-install.bash" + dest: "{{ temp_folder }}/virt-install.bash" mode: 0755 - - name: Define and start VM - command: "{{ playbook_dir }}/virt-install.bash" + - name: Run virt-install + command: "{{ temp_folder }}/virt-install.bash" become: true - name: Wait until VM is shut off @@ -159,6 +199,11 @@ - set_fact: instance_ip: "{{ result.stdout }}" + - name: Remove seed.iso + command: rm -f "{{ image_path }}/seed.iso" + become: true + when: firmware == "" + - name: Waits until instance is reachable wait_for: host: "{{ instance_ip }}" diff --git a/playbooks/install.yaml b/playbooks/install.yaml index 5eaa5c3..5321207 100644 --- a/playbooks/install.yaml +++ b/playbooks/install.yaml @@ -31,7 +31,7 @@ - podman state: present become: true - when: ('rhel' not in test_os) or (platform != 'aws') + when: ('rhel' not in test_os and test_os != 'fedora-41') or (platform != 'aws' and test_os != 'fedora-41') - name: Install podman from internal dnf: @@ -45,6 +45,12 @@ - "'rhel' in test_os" - platform == "aws" + # ansible dnf5 module needs python3-libdnf5 + - name: Install podman on fedora-41(dnf5) + command: dnf -y install podman + become: true + when: test_os == 'fedora-41' + - name: Auth for private image command: podman login \ diff --git a/playbooks/templates/virt-install.bash.j2 b/playbooks/templates/virt-install.bash.j2 index 35519fd..6a90da8 100644 --- a/playbooks/templates/virt-install.bash.j2 +++ b/playbooks/templates/virt-install.bash.j2 @@ -1,15 +1,15 @@ #!/bin/bash virt-install \ -{% if firmware == '' %} - --import \ -{% endif %} --name {{ instance_name }} \ --ram 3072 \ --vcpus 2 \ --os-variant {{ os_variant[test_os] }} \ --network default \ --disk size=10,path="{{ image_path }}/{{ rhel_guest_image_fname }}" \ +{% if bib_firmware == 'uefi' %} + --boot {{ boot_args }} \ +{% endif %} {% if firmware == 'bios' %} --cdrom "{{ image_path }}/install.iso" \ --noreboot \ @@ -19,7 +19,8 @@ virt-install \ --boot {{ boot_args }} \ {% endif %} {% if firmware == '' %} - --cloud-init user-data="{{ playbook_dir }}/libvirt-user-data",meta-data="{{ playbook_dir }}/libvirt-meta-data",disable=on \ + --cdrom "{{ image_path }}/seed.iso" \ + --install no_install=yes \ {% endif %} {% if bib == 'false' %} --filesystem={{ air_gapped_dir }},mount_tag,driver.type=virtiofs,accessmode=passthrough \ diff --git a/tmt/plans/bib-image.fmf b/tmt/plans/bib-image.fmf index dd611fd..6a3e688 100644 --- a/tmt/plans/bib-image.fmf +++ b/tmt/plans/bib-image.fmf @@ -20,6 +20,7 @@ execute: summary: Use bib generate ami image and test on AWS tag: aws environment+: + CROSS_ARCH: False PLATFORM: aws IMAGE_TYPE: ami LAYERED_IMAGE: cloud-init @@ -30,19 +31,58 @@ execute: - how: shell script: curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install +/ami-aarch64-on-x86: + summary: Use bib generate aarch64 ami image on x86_64 machine + tag: aws + environment+: + CROSS_ARCH: True + PLATFORM: aws + IMAGE_TYPE: ami + LAYERED_IMAGE: cloud-init + adjust+: + - when: arch != x86_64 + enabled: false + prepare+: + - how: shell + script: curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install + +/ami-x86-on-aarch64: + summary: Use bib generate x86_64 ami image on aarch64 machine + tag: aws + environment+: + CROSS_ARCH: True + PLATFORM: aws + IMAGE_TYPE: ami + LAYERED_IMAGE: cloud-init + adjust+: + - when: arch != aarch64 + enabled: false + prepare+: + - how: shell + script: curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install + /qcow2: summary: Use bib generate qcow2 image and test locally (nested) tag: [libvirt, stable, bib] environment+: + CROSS_ARCH: False PLATFORM: libvirt IMAGE_TYPE: qcow2 LAYERED_IMAGE: cloud-init prepare+: + - how: shell + script: | + source /etc/os-release + if [[ "$ID" == "rhel" ]] || [[ "$ID" == "centos" ]]; then + # EPEL for genisoimage + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm + fi - how: install package: - qemu-kvm - libvirt - virt-install + - genisoimage adjust+: - when: arch == ppc64le enabled: false @@ -59,16 +99,25 @@ execute: summary: Use bib generate raw image and test locally (nested) tag: [libvirt, stable, bib] environment+: + CROSS_ARCH: False PLATFORM: libvirt IMAGE_TYPE: raw LAYERED_IMAGE: cloud-init prepare+: + - how: shell + script: | + source /etc/os-release + if [[ "$ID" == "rhel" ]] || [[ "$ID" == "centos" ]]; then + # EPEL for genisoimage + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm + fi - how: install package: - qemu-img - qemu-kvm - libvirt - virt-install + - genisoimage adjust+: - when: arch == ppc64le enabled: false @@ -85,6 +134,7 @@ execute: summary: Use bib generate vmdk image and test on vsphere tag: vmdk environment+: + CROSS_ARCH: False PLATFORM: vmdk IMAGE_TYPE: vmdk LAYERED_IMAGE: vmware @@ -99,7 +149,7 @@ execute: summary: Use bib generate ISO image and test locally (nested) tag: [anaconda-iso, stable, bib] environment+: - FIRMWARE: uefi + CROSS_ARCH: False PLATFORM: libvirt IMAGE_TYPE: anaconda-iso LAYERED_IMAGE: useradd-ssh @@ -127,16 +177,25 @@ execute: summary: Use bib generate raw image and test locally (nested) tag: [to-disk, stable] environment+: + CROSS_ARCH: False PLATFORM: libvirt IMAGE_TYPE: to-disk LAYERED_IMAGE: cloud-init prepare+: + - how: shell + script: | + source /etc/os-release + if [[ "$ID" == "rhel" ]] || [[ "$ID" == "centos" ]]; then + # EPEL for genisoimage + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm + fi - how: install package: - qemu-img - qemu-kvm - libvirt - virt-install + - genisoimage adjust+: - when: arch == ppc64le enabled: false diff --git a/tmt/plans/os-replace.fmf b/tmt/plans/os-replace.fmf index 77f4c72..140e74e 100644 --- a/tmt/plans/os-replace.fmf +++ b/tmt/plans/os-replace.fmf @@ -27,7 +27,11 @@ execute: enabled: false prepare+: - how: shell - script: dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm + script: | + source /etc/os-release + if [[ "$ID" == "rhel" ]] || [[ "$ID" == "centos" ]]; then + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm + fi - how: install package: - python3-openstackclient @@ -47,6 +51,10 @@ execute: adjust+: - when: arch != x86_64 and arch != aarch64 enabled: false + - when: arch == aarch64 and distro == rhel + enabled: false + - when: arch == aarch64 and distro == centos-stream + enabled: false /aws: summary: Run os-replace test on aws @@ -70,6 +78,10 @@ execute: adjust+: - when: arch != x86_64 and arch != aarch64 enabled: false + - when: arch == aarch64 and distro == rhel + enabled: false + - when: arch == aarch64 and distro == centos-stream + enabled: false prepare+: - how: shell script: | @@ -85,11 +97,19 @@ execute: LAYERED_IMAGE: qemu-guest-agent AIR_GAPPED: 1 prepare+: + - how: shell + script: | + source /etc/os-release + if [[ "$ID" == "rhel" ]] || [[ "$ID" == "centos" ]]; then + # EPEL for genisoimage + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm + fi - how: install package: - qemu-kvm - libvirt - virt-install + - genisoimage adjust+: - when: arch == ppc64le enabled: false diff --git a/tmt/tests/os-replace.fmf b/tmt/tests/os-replace.fmf index 66fab6b..bec3f2e 100644 --- a/tmt/tests/os-replace.fmf +++ b/tmt/tests/os-replace.fmf @@ -1,4 +1,4 @@ test: ./test.sh -duration: 120m +duration: 150m environment: TEST_CASE: os-replace diff --git a/tools/upload_rhel9_ami.sh b/tools/upload_rhel9_rawhide_ami.sh similarity index 81% rename from tools/upload_rhel9_ami.sh rename to tools/upload_rhel9_rawhide_ami.sh index 1c333f9..a21088b 100755 --- a/tools/upload_rhel9_ami.sh +++ b/tools/upload_rhel9_rawhide_ami.sh @@ -6,13 +6,21 @@ TEMPDIR=$(mktemp -d) trap 'rm -rf -- "$TEMPDIR"' EXIT UNIQUE_STRING=$(tr -dc a-z0-9 < /dev/urandom | head -c 4 ; echo '') -if [[ "$TEST_OS" == "rhel-9-4" ]]; then - IMAGE_URL="http://${DOWNLOAD_NODE}/rhel-9/nightly/RHEL-9/latest-RHEL-9.4.0/compose/BaseOS/${ARCH}/images" -elif [[ "$TEST_OS" == "rhel-9-5" ]]; then - IMAGE_URL="http://${DOWNLOAD_NODE}/rhel-9/nightly/RHEL-9/latest-RHEL-9.5.0/compose/BaseOS/${ARCH}/images" -fi +case "$TEST_OS" in + rhel-9-4) + IMAGE_URL="http://${DOWNLOAD_NODE}/rhel-9/nightly/updates/RHEL-9/latest-RHEL-9.4.0/compose/BaseOS/${ARCH}/images" + IMAGE_FILE=$(curl -s "${IMAGE_URL}/" | grep -ioE ">rhel-ec2-.*.${ARCH}.raw.xz<" | tr -d '><') + ;; + rhel-9-5) + IMAGE_URL="http://${DOWNLOAD_NODE}/rhel-9/nightly/RHEL-9/latest-RHEL-9.5.0/compose/BaseOS/${ARCH}/images" + IMAGE_FILE=$(curl -s "${IMAGE_URL}/" | grep -ioE ">rhel-ec2-.*.${ARCH}.raw.xz<" | tr -d '><') + ;; + fedora-41) + IMAGE_URL="https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Cloud/${ARCH}/images" + IMAGE_FILE=$(curl -s "${IMAGE_URL}/" | grep -ioE ">Fedora-Cloud-Base-AmazonEC2.*.raw.xz<" | tr -d '><') + ;; +esac -IMAGE_FILE=$(curl -s "${IMAGE_URL}/" | grep -ioE ">rhel-ec2-.*.${ARCH}.raw.xz<" | tr -d '><') curl -s -O --output-dir "$TEMPDIR" "${IMAGE_URL}/${IMAGE_FILE}" sudo dnf install -y xz curl wget jq