--- /dev/null
+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 }}