diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b750c51f80ab..79b4fd6991b9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -63,3 +63,58 @@ jobs: with: name: ${{ runner.os }} path: bin/ + + snap: + name: Trigger snap edge build + runs-on: ubuntu-22.04 + needs: [test] + if: ${{ github.repository == 'canonical/lxd' && github.event_name == 'push' && github.actor != 'dependabot[bot]' }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Launchpad SSH access + env: + SSH_AUTH_SOCK: /tmp/ssh_agent.sock + LAUNCHPAD_LXD_BOT_KEY: ${{ secrets.LAUNCHPAD_LXD_BOT_KEY }} + run: | + set -eux + mkdir -m 0700 -p ~/.ssh/ + ssh-agent -a "${SSH_AUTH_SOCK}" > /dev/null + ssh-add - <<< "${{ secrets.LAUNCHPAD_LXD_BOT_KEY }}" + ssh-add -L > ~/.ssh/id_ed25519.pub + # In ephemeral environments like GitHub Action runners, relying on TOFU isn't providing any security + # so require the key obtained by `ssh-keyscan` to match the expected hash from https://help.launchpad.net/SSHFingerprints + ssh-keyscan git.launchpad.net >> ~/.ssh/known_hosts + ssh-keygen -qlF git.launchpad.net | grep -xF 'git.launchpad.net RSA SHA256:UNOzlP66WpDuEo34Wgs8mewypV0UzqHLsIFoqwe8dYo' + + - name: Install Go + uses: actions/setup-go@v5 + with: + go-version: 1.22.x + + - name: Trigger Launchpad snap build + env: + SSH_AUTH_SOCK: /tmp/ssh_agent.sock + TARGET: >- + ${{ fromJson('{ + "main": "latest-edge", + "stable-4.0": "4.0-edge", + }')[github.ref_name] }} + run: | + set -eux + git config --global transfer.fsckobjects true + git config --global user.name "Canonical LXD Bot" + git config --global user.email "lxd@lists.canonical.com" + git config --global commit.gpgsign true + git config --global gpg.format "ssh" + git config --global user.signingkey ~/.ssh/id_ed25519.pub + localRev="$(git rev-parse HEAD)" + go install github.com/canonical/lxd-ci/lxd-snapcraft@latest + git clone -b "${TARGET}" git+ssh://lxdbot@git.launchpad.net/~canonical-lxd/lxd ~/lxd-pkg-snap-lp + cd ~/lxd-pkg-snap-lp + lxd-snapcraft -package lxd -set-version "git-${localRev:0:7}" -set-source-commit "${localRev}" + git add --all + git commit --all --quiet -s --allow-empty -m "Automatic upstream build (${TARGET})" -m "Upstream commit: ${localRev}" + git show + git push --quiet