name: Build ISO on: workflow_call: inputs: pr: required: false type: string parent_job_name: required: true type: string flatpaks_refs_dir: required: false type: string suffix: required: false type: string jobs: load_vars: name: Load Variables uses: ./.github/workflows/build_vars.yml build_iso: name: Build ISO env: JOB_NAME: Build ISO runs-on: ubuntu-latest needs: - load_vars permissions: contents: read packages: write statuses: write continue-on-error: false strategy: fail-fast: false matrix: version: ${{ fromJson(needs.load_vars.outputs.BUILD_VERSIONS) }} steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: Switch branch if: inputs.pr env: GITHUB_USER: ${{ github.actor }} GITHUB_TOKEN: ${{ github.token }} run: | sudo apt-get update sudo apt-get install -y hub hub pr checkout ${{ inputs.pr }} echo "sha=$(git rev-parse HEAD)" >> $GITHUB_ENV - name: Get Current Job Log URL if: inputs.pr && always() uses: Tiryoh/gha-jobid-action@v1 id: jobs with: github_token: ${{ secrets.GITHUB_TOKEN }} job_name: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }})" - name: Set status if: inputs.pr && always() uses: myrotvorets/set-commit-status-action@v2.0.1 with: token: ${{ secrets.GITHUB_TOKEN }} status: pending context: ${{ env.JOB_NAME }} (${{ matrix.version }}) sha: ${{ env.sha }} targetUrl: ${{ steps.jobs.outputs.html_url }} - name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@main with: # this might remove tools that are actually needed, # if set to "true" but frees about 6 GB tool-cache: false # all of these default to true, but feel free to set to # "false" if necessary for your workflow android: true dotnet: true haskell: true large-packages: true docker-images: true swap-storage: true - name: Lowercase Registry id: registry_case uses: ASzc/change-string-case-action@v6 with: string: ${{ needs.load_vars.outputs.IMAGE_REPO }} - name: Get image version id: meta uses: docker/metadata-action@v5 with: tags: | type=ref,event=branch type=ref,event=pr - name: Login to Registry run: | echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Build ISO uses: ./ id: build with: 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 }} flatpak_remote_refs_dir: ${{ 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: build/${{ needs.load_vars.outputs.IMAGE_NAME }}-${{ matrix.version }}${{ inputs.suffix && format('-{0}', inputs.suffix || '') }}.iso - name: Upload ISO as artifact id: upload uses: actions/upload-artifact@v4 with: name: ${{ needs.load_vars.outputs.IMAGE_NAME }}-${{ matrix.version }}${{ inputs.suffix && format('-{0}', inputs.suffix || '') }} 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 if-no-files-found: error retention-days: 0 compression-level: 0 overwrite: true - name: Set status if: inputs.pr && always() uses: myrotvorets/set-commit-status-action@v2.0.1 with: token: ${{ secrets.GITHUB_TOKEN }} status: ${{ job.status }} context: ${{ env.JOB_NAME }} (${{ matrix.version }}) sha: ${{ env.sha }} targetUrl: ${{ steps.jobs.outputs.html_url }}