| name: Google Cloud Import | |
| on: | |
| push: | |
| branches: | |
| - gcetest | |
| workflow_dispatch: | |
| env: | |
| MAKEFLAGS: "-j4 GITVERSION=${{ github.sha }}" | |
| jobs: | |
| build: | |
| name: Build / ${{ matrix.arch }}-${{ matrix.platform }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - arch: arm64 | |
| platform: efi | |
| - arch: x86_64 | |
| platform: efi | |
| - arch: x86_64 | |
| platform: pcbios | |
| container: | |
| image: ghcr.io/ipxe/ipxe-builder-${{ matrix.arch }} | |
| env: | |
| bindir: bin-${{ matrix.arch }}-${{ matrix.platform }} | |
| steps: | |
| - name: Check out code | |
| uses: actions/checkout@v6 | |
| - name: Build | |
| working-directory: src | |
| run: | | |
| make CONFIG=cloud EMBED=config/cloud/gce.ipxe \ | |
| ${{ env.bindir }}/ipxe.usb | |
| - name: Upload | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: ${{ env.bindir }} | |
| if-no-files-found: error | |
| path: | | |
| src/${{ env.bindir }}/ipxe.usb | |
| import: | |
| name: Import | |
| runs-on: ubuntu-latest | |
| needs: | |
| - build | |
| container: | |
| image: ghcr.io/ipxe/ipxe-builder-cloud | |
| env: | |
| binaries: >- | |
| bin-arm64-efi/ipxe.usb | |
| bin-x86_64-efi/ipxe.usb | |
| bin-x86_64-pcbios/ipxe.usb | |
| family: >- | |
| ${{ github.ref == 'refs/heads/gcetest' && '--family ipxetest' || '' }} | |
| environment: gce-import | |
| permissions: | |
| id-token: write | |
| contents: read | |
| steps: | |
| - name: Check out code | |
| uses: actions/checkout@v6 | |
| - name: Download | |
| uses: actions/download-artifact@v7 | |
| with: | |
| path: src | |
| pattern: "bin-*" | |
| - name: Log in | |
| uses: 'google-github-actions/auth@v3' | |
| with: | |
| project_id: ${{ vars.GCLOUD_PROJECT }} | |
| workload_identity_provider: ${{ vars.GCLOUD_WORKLOAD_IDP }} | |
| service_account: ${{ vars.GCLOUD_SERVICE_ACCOUNT }} | |
| - name: Import | |
| working-directory: src | |
| run: | | |
| ../contrib/cloud/gce-import \ | |
| --public \ | |
| --overwrite \ | |
| --project ${GCLOUD_PROJECT} \ | |
| ${{ env.family }} \ | |
| ${{ env.binaries }} |