diff --git a/.github/workflows/build_iso.yml b/.github/workflows/build_iso.yml index 98e1c46..d85229c 100644 --- a/.github/workflows/build_iso.yml +++ b/.github/workflows/build_iso.yml @@ -9,15 +9,6 @@ on: parent_job_name: required: true type: string - flatpaks_refs: - required: false - type: string - flatpaks_refs_dir: - required: false - type: string - suffix: - required: false - type: string jobs: load_vars: @@ -38,8 +29,7 @@ jobs: continue-on-error: false strategy: fail-fast: false - matrix: - version: ${{ fromJson(needs.load_vars.outputs.BUILD_VERSIONS) }} + matrix: ${{ fromJson(needs.load_vars.outputs.BUILD_MATRIX) }} steps: - name: Checkout uses: actions/checkout@v4 @@ -63,7 +53,7 @@ jobs: id: jobs with: github_token: ${{ secrets.GITHUB_TOKEN }} - job_name: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }})" + job_name: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }}, ${{ matrix.flatpaks }})" per_page: 100 - name: Set status @@ -72,7 +62,7 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} status: pending - context: ${{ env.JOB_NAME }} (${{ matrix.version }}) + context: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }}, ${{ matrix.flatpaks }})" sha: ${{ env.sha }} targetUrl: ${{ steps.jobs.outputs.html_url }} @@ -111,31 +101,35 @@ jobs: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Build ISO - if: matrix.version != 'eln' || ( inputs.flatpak_remote_refs_dir == '' && inputs.flatpaks_refs == '') uses: ./ id: build + env: + IMAGE_NAME: "${{ matrix.version == 'eln' && 'fedora-bootc' || needs.load_vars.outputs.IMAGE_NAME }}" + IMAGE_REPO: "${{ matrix.version == 'eln' && 'quay.io/centos-bootc' || needs.load_vars.outputs.IMAGE_REPO }}" with: arch: ${{ needs.load_vars.outputs.ARCH }} - image_name: ${{ matrix.version == 'eln' && 'fedora-bootc' || needs.load_vars.outputs.IMAGE_NAME }} - image_repo: ${{ matrix.version == 'eln' && 'quay.io/centos-bootc' || needs.load_vars.outputs.IMAGE_REPO }} - image_tag: ${{ matrix.version || matrix.version }} + image_name: ${{ env.IMAGE_NAME }} + image_repo: ${{ env.IMAGE_REPO}} + image_tag: ${{ matrix.version }} version: ${{ matrix.version == 'eln' && '39' || matrix.version }} variant: ${{ needs.load_vars.outputs.VARIANT }} - flatpak_remote_refs: ${{ inputs.flatpaks_refs }} - flatpak_remote_refs_dir: ${{ inputs.flatpaks_refs_dir }} + flatpak_remote_refs: ${{ matrix.flatpaks == 'flatpak_refs' && needs.load_vars.outputs.FLATPAK_REMOTE_REFS || '' }} + flatpak_remote_refs_dir: ${{ matrix.flatpaks == 'flatpak_refs_dir' && needs.load_vars.outputs.FLATPAK_REMOTE_REFS_DIR || '' }} secure_boot_key_url: ${{ needs.load_vars.outputs.SECURE_BOOT_KEY_URL }} enrollment_password: ${{ needs.load_vars.outputs.ENROLLMENT_PASSWORD }} - iso_name: build/${{ needs.load_vars.outputs.IMAGE_NAME }}-${{ matrix.version }}${{ inputs.suffix && format('-{0}', inputs.suffix || '') }}.iso + iso_name: build/${{ env.IMAGE_NAME }}-${{ matrix.version }}${{ matrix.flatpaks == 'false' && '' || format('-{0}', matrix.flatpaks) }}.iso - name: Upload ISO as artifact - if: matrix.version != 'eln' || ( inputs.flatpak_remote_refs_dir == '' && inputs.flatpaks_refs == '') id: upload uses: actions/upload-artifact@v4 + env: + IMAGE_NAME: "${{ matrix.version == 'eln' && 'fedora-bootc' || needs.load_vars.outputs.IMAGE_NAME }}" + IMAGE_REPO: "${{ matrix.version == 'eln' && 'quay.io/centos-bootc' || needs.load_vars.outputs.IMAGE_REPO }}" with: - name: ${{ needs.load_vars.outputs.IMAGE_NAME }}-${{ matrix.version }}${{ inputs.suffix && format('-{0}', inputs.suffix || '') }} + name: ${{ env.IMAGE_NAME }}-${{ matrix.version }}${{ matrix.flatpaks == 'false' && '' || format('-{0}', matrix.flatpaks) }} path: | - build/${{ needs.load_vars.outputs.IMAGE_NAME }}-${{ matrix.version }}${{ inputs.suffix && format('-{0}', inputs.suffix || '') }}.iso - build/${{ needs.load_vars.outputs.IMAGE_NAME }}-${{ matrix.version }}${{ inputs.suffix && format('-{0}', inputs.suffix || '') }}.iso-CHECKSUM + build/${{ env.IMAGE_NAME }}-${{ matrix.version }}${{ matrix.flatpaks == 'false' && '' || format('-{0}', matrix.flatpaks) }}.iso + build/${{ env.IMAGE_NAME }}-${{ matrix.version }}${{ matrix.flatpaks == 'false' && '' || format('-{0}', matrix.flatpaks) }}.iso-CHECKSUM if-no-files-found: error retention-days: 0 compression-level: 0 @@ -147,7 +141,7 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} status: ${{ job.status }} - context: ${{ env.JOB_NAME }} (${{ matrix.version }}) + context: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }}, ${{ matrix.flatpaks }})" sha: ${{ env.sha }} targetUrl: ${{ steps.jobs.outputs.html_url }} diff --git a/.github/workflows/build_vars.yml b/.github/workflows/build_vars.yml index 578ee96..51368d4 100644 --- a/.github/workflows/build_vars.yml +++ b/.github/workflows/build_vars.yml @@ -5,8 +5,31 @@ on: outputs: ARCH: value: 'x86_64' - BUILD_VERSIONS: - value: '["38", "39", "40", "eln"]' + BUILD_MATRIX: + value: ' + { + "version": [ + "38", + "39", + "40", + "eln" + ], + "flatpaks": [ + "false", + "flatpak_dir", + "flatpak_refs" + ], + "exclude": [ + { + "version": "eln", + "flatpaks": "flatpak_dir" + }, + { + "version": "eln", + "flatpaks": "flatpak_refs" + } + ] + }' IMAGE_NAME: value: 'base' IMAGE_REPO: @@ -15,6 +38,8 @@ on: value: 'Server' FLATPAK_REMOTE_REFS_DIR: value: flatpak_refs + FLATPAK_REMOTE_REFS: + value: "app/org.mozilla.firefox/x86_64/stable app/org.videolan.VLC/x86_64/stable" SECURE_BOOT_KEY_URL: value: 'https://github.com/ublue-os/akmods/raw/main/certs/public_key.der' ENROLLMENT_PASSWORD: diff --git a/.github/workflows/test_deployment.yml b/.github/workflows/test_deployment.yml index da2a2b2..e5e34eb 100644 --- a/.github/workflows/test_deployment.yml +++ b/.github/workflows/test_deployment.yml @@ -9,15 +9,6 @@ on: parent_job_name: required: true type: string - flatpaks_refs: - required: false - type: string - flatpaks_refs_dir: - required: false - type: string - suffix: - required: false - type: string jobs: load_vars: @@ -37,8 +28,7 @@ jobs: continue-on-error: false strategy: fail-fast: false - matrix: - version: ${{ fromJson(needs.load_vars.outputs.BUILD_VERSIONS) }} + matrix: ${{ fromJson(needs.load_vars.outputs.BUILD_MATRIX) }} steps: - name: Checkout uses: actions/checkout@v4 @@ -62,7 +52,7 @@ jobs: id: jobs with: github_token: ${{ secrets.GITHUB_TOKEN }} - job_name: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }})" + job_name: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }}, ${{ matrix.flatpaks }})" per_page: 100 - name: Set status @@ -71,7 +61,7 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} status: pending - context: ${{ env.JOB_NAME }} (${{ matrix.version }}) + context: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }}, ${{ matrix.flatpaks }})" sha: ${{ env.sha }} targetUrl: ${{ steps.jobs.outputs.html_url }} @@ -83,8 +73,11 @@ jobs: - name: Download generated ISO uses: actions/download-artifact@v4 + env: + IMAGE_NAME: "${{ matrix.version == 'eln' && 'fedora-bootc' || needs.load_vars.outputs.IMAGE_NAME }}" + IMAGE_REPO: "${{ matrix.version == 'eln' && 'quay.io/centos-bootc' || needs.load_vars.outputs.IMAGE_REPO }}" with: - name: ${{ format('{0}-{1}', needs.load_vars.outputs.IMAGE_NAME, matrix.version) }}${{ inputs.suffix && format('-{0}', inputs.suffix || '') }} + name: ${{ env.IMAGE_NAME }}-${{ matrix.version }}${{ matrix.flatpaks == 'false' && '' || format('-{0}', matrix.flatpaks) }} - name: Run VM Tests env: @@ -92,19 +85,25 @@ jobs: VM_PASS: foobar VM_IP: "127.0.0.1" VM_PORT: "5555" + IMAGE_NAME: "${{ matrix.version == 'eln' && 'fedora-bootc' || needs.load_vars.outputs.IMAGE_NAME }}" + IMAGE_REPO: "${{ matrix.version == 'eln' && 'quay.io/centos-bootc' || needs.load_vars.outputs.IMAGE_REPO }}" run: | - make test/vm ISO_NAME=${{ format('{0}-{1}', needs.load_vars.outputs.IMAGE_NAME, matrix.version) }}${{ inputs.suffix && format('-{0}', inputs.suffix || '') }}.iso \ - VM_IP=${VM_IP} VM_PORT=${VM_PORT} VM_USER=${VM_USER} VM_PASS=${VM_PASS} \ + make test/vm \ ARCH=${{ needs.load_vars.outputs.ARCH}} \ + ENROLLMENT_PASSWORD=${{ needs.load_vars.outputs.ENROLLMENT_PASSWORD }} \ + ${{ matrix.flatpaks == 'flatpak_refs' && format('FLATPAK_REMOTE_REFS="{0}"', needs.load_vars.outputs.FLATPAK_REMOTE_REFS) || '' }} \ + ${{ matrix.flatpaks == 'flatpak_refs_dir' && format('FLATPAK_REMOTE_REFS_DIR="{0}"', needs.load_vars.outputs.FLATPAK_REMOTE_REFS_DIR) || '' }} \ IMAGE_NAME=${{ needs.load_vars.outputs.IMAGE_NAME}} \ IMAGE_REPO=${{ needs.load_vars.outputs.IMAGE_REPO}} \ IMAGE_TAG=${{ matrix.version }} \ - VERSION=${{ matrix.version }} \ - VARIANT=${{ needs.load_vars.outputs.VARIANT }} \ - ${{ inputs.flatpaks_refs && format('FLATPAK_REMOTE_REFS="{0}"', inputs.flatpaks_refs) || '' }} \ - ${{ inputs.flatpaks_refs_dir && format('FLATPAK_REMOTE_REFS_DIR="{0}"', inputs.flatpaks_refs_dir) || '' }} \ + ISO_NAME=${{ env.IMAGE_NAME }}-${{ matrix.version }}${{ matrix.flatpaks == 'false' && '' || format('-{0}', matrix.flatpaks) }}.iso \ SECURE_BOOT_KEY_URL=${{ needs.load_vars.outputs.SECURE_BOOT_KEY_URL }} \ - ENROLLMENT_PASSWORD=${{ needs.load_vars.outputs.ENROLLMENT_PASSWORD }} + VARIANT=${{ needs.load_vars.outputs.VARIANT }} \ + VERSION=${{ matrix.version }} \ + VM_IP=${VM_IP} \ + VM_PASS=${VM_PASS} \ + VM_PORT=${VM_PORT} \ + VM_USER=${VM_USER} - name: Set status if: inputs.pr && always() @@ -112,6 +111,6 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} status: ${{ job.status }} - context: ${{ env.JOB_NAME }} (${{ matrix.version }}) + context: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }}, ${{ matrix.flatpaks }})" sha: ${{ env.sha }} targetUrl: ${{ steps.jobs.outputs.html_url }} diff --git a/.github/workflows/test_iso.yml b/.github/workflows/test_iso.yml index b78c2a5..a418732 100644 --- a/.github/workflows/test_iso.yml +++ b/.github/workflows/test_iso.yml @@ -9,15 +9,6 @@ on: parent_job_name: required: true type: string - flatpaks_refs: - required: false - type: string - flatpaks_refs_dir: - required: false - type: string - suffix: - required: false - type: string jobs: load_vars: @@ -37,8 +28,7 @@ jobs: continue-on-error: false strategy: fail-fast: false - matrix: - version: ${{ fromJson(needs.load_vars.outputs.BUILD_VERSIONS) }} + matrix: ${{ fromJson(needs.load_vars.outputs.BUILD_MATRIX) }} steps: - name: Checkout uses: actions/checkout@v4 @@ -62,7 +52,7 @@ jobs: id: jobs with: github_token: ${{ secrets.GITHUB_TOKEN }} - job_name: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }})" + job_name: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }}, ${{ matrix.flatpaks }})" per_page: 100 - name: Set status @@ -71,7 +61,7 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} status: pending - context: ${{ env.JOB_NAME }} (${{ matrix.version }}) + context: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }}, ${{ matrix.flatpaks }})" sha: ${{ env.sha }} targetUrl: ${{ steps.jobs.outputs.html_url }} @@ -83,23 +73,29 @@ jobs: - name: Download generated ISO uses: actions/download-artifact@v4 + env: + IMAGE_NAME: "${{ matrix.version == 'eln' && 'fedora-bootc' || needs.load_vars.outputs.IMAGE_NAME }}" + IMAGE_REPO: "${{ matrix.version == 'eln' && 'quay.io/centos-bootc' || needs.load_vars.outputs.IMAGE_REPO }}" with: - name: ${{ format('{0}-{1}', needs.load_vars.outputs.IMAGE_NAME, matrix.version) }}${{ inputs.suffix && format('-{0}', inputs.suffix || '') }} + name: ${{ env.IMAGE_NAME }}-${{ matrix.version }}${{ matrix.flatpaks == 'false' && '' || format('-{0}', matrix.flatpaks) }} - name: Run ISO checks + env: + IMAGE_NAME: "${{ matrix.version == 'eln' && 'fedora-bootc' || needs.load_vars.outputs.IMAGE_NAME }}" + IMAGE_REPO: "${{ matrix.version == 'eln' && 'quay.io/centos-bootc' || needs.load_vars.outputs.IMAGE_REPO }}" run: | make test/iso \ ARCH=${{ needs.load_vars.outputs.ARCH}} \ - IMAGE_NAME=${{ needs.load_vars.outputs.IMAGE_NAME}} \ - IMAGE_REPO=${{ needs.load_vars.outputs.IMAGE_REPO}} \ - IMAGE_TAG=${{ matrix.version }} \ - VERSION=${{ matrix.version }} \ - VARIANT=${{ needs.load_vars.outputs.VARIANT }} \ - ${{ inputs.flatpaks_refs && format('FLATPAK_REMOTE_REFS="{0}"', inputs.flatpaks_refs) || '' }} \ - ${{ inputs.flatpaks_refs_dir && format('FLATPAK_REMOTE_REFS_DIR="{0}"', inputs.flatpaks_refs_dir) || '' }} \ - SECURE_BOOT_KEY_URL=${{ needs.load_vars.outputs.SECURE_BOOT_KEY_URL }} \ ENROLLMENT_PASSWORD=${{ needs.load_vars.outputs.ENROLLMENT_PASSWORD }} \ - ISO_NAME=${{ format('{0}-{1}', needs.load_vars.outputs.IMAGE_NAME, matrix.version) }}${{ inputs.suffix && format('-{0}', inputs.suffix || '') }}.iso + ${{ matrix.flatpaks == 'flatpak_refs' && format('FLATPAK_REMOTE_REFS="{0}"', needs.load_vars.outputs.FLATPAK_REMOTE_REFS) || '' }} \ + ${{ matrix.flatpaks == 'flatpak_refs_dir' && format('FLATPAK_REMOTE_REFS_DIR="{0}"', needs.load_vars.outputs.FLATPAK_REMOTE_REFS_DIR) || '' }} \ + IMAGE_NAME=${{ env.IMAGE_NAME}} \ + IMAGE_REPO=${{ env.IMAGE_REPO}} \ + IMAGE_TAG=${{ matrix.version }} \ + ISO_NAME=${{ env.IMAGE_NAME }}-${{ matrix.version }}${{ matrix.flatpaks == 'false' && '' || format('-{0}', matrix.flatpaks) }}.iso \ + SECURE_BOOT_KEY_URL=${{ needs.load_vars.outputs.SECURE_BOOT_KEY_URL }} \ + VARIANT=${{ needs.load_vars.outputs.VARIANT }} \ + VERSION=${{ matrix.version == 'eln' && '39' || matrix.version }} - name: Set status if: inputs.pr && always() @@ -107,6 +103,6 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} status: ${{ job.status }} - context: ${{ env.JOB_NAME }} (${{ matrix.version }}) + context: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }}, ${{ matrix.flatpaks }})" sha: ${{ env.sha }} targetUrl: ${{ steps.jobs.outputs.html_url }} \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b715490..651d3f0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -31,95 +31,29 @@ jobs: pr: ${{ inputs.pr }} parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Build Container - build_iso_flatpaks: - name: Build ISO with Flatpaks + build_isos: + name: Build ISOs needs: - build_container uses: ./.github/workflows/build_iso.yml with: pr: ${{ inputs.pr }} - parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Build ISO with Flatpaks - flatpaks_refs_dir: flatpak_refs - suffix: flatpaks + parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Build ISOs - test_iso_flatpaks: - name: Test ISO with Flatpaks + test_isos: + name: Test ISOs needs: - - build_iso_flatpaks + - build_isos uses: ./.github/workflows/test_iso.yml with: pr: ${{ inputs.pr }} - parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Test ISO with Flatpaks - flatpaks_refs_dir: flatpak_refs - suffix: flatpaks + parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Test ISOs - test_deployment_flatpaks: - name: Test Deployment with Flatpaks + test_deployments: + name: Test Deployments needs: - - build_iso_flatpaks + - build_isos uses: ./.github/workflows/test_deployment.yml with: pr: ${{ inputs.pr }} - parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Test Deployment with Flatpaks - flatpaks_refs_dir: flatpak_refs - suffix: flatpaks - - build_iso_flatpak_refs: - name: Build ISO with Flatpak Refs - needs: - - build_container - uses: ./.github/workflows/build_iso.yml - with: - pr: ${{ inputs.pr }} - parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Build ISO with Flatpak Refs - flatpaks_refs: "app/org.mozilla.firefox/x86_64/stable app/org.videolan.VLC/x86_64/stable" - suffix: flatpaks_refs - - test_iso_flatpak_refs: - name: Test ISO with Flatpak Refs - needs: - - build_iso_flatpak_refs - uses: ./.github/workflows/test_iso.yml - with: - pr: ${{ inputs.pr }} - parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Test ISO with Flatpak Refs - flatpaks_refs: "app/org.mozilla.firefox/x86_64/stable app/org.videolan.VLC/x86_64/stable" - suffix: flatpaks_refs - - test_deployment_flatpak_refs: - name: Test Deployment with Flatpak Refs - needs: - - build_iso_flatpak_refs - uses: ./.github/workflows/test_deployment.yml - with: - pr: ${{ inputs.pr }} - parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Test Deployment with Flatpak Refs - flatpaks_refs: "app/org.mozilla.firefox/x86_64/stable app/org.videolan.VLC/x86_64/stable" - suffix: flatpaks_refs - - build_iso: - name: Build ISO - needs: - - build_container - uses: ./.github/workflows/build_iso.yml - with: - pr: ${{ inputs.pr }} - parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Build ISO - - test_iso: - name: Test ISO - needs: - - build_iso - uses: ./.github/workflows/test_iso.yml - with: - pr: ${{ inputs.pr }} - parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Test ISO - - test_deployment: - name: Test Deployment - needs: - - build_iso - uses: ./.github/workflows/test_deployment.yml - with: - pr: ${{ inputs.pr }} - parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Test Deployment \ No newline at end of file + parent_job_name: ${{ inputs.parent_job_name && format('{0} / ', inputs.parent_job_name) }}Test Deployments