name: release-nightly-snapcraft on: push: branches: - main workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: build-and-publish: strategy: fail-fast: false matrix: runner: [ubuntu-24.04, ubuntu-24.04-arm] runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 - name: Build snap id: build env: SNAPCRAFT_IMAGE_INFO: '{"build_url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"}' run: | # snapcraft installs build-snaps and apt packages system-wide, which needs root sudo snap install --classic snapcraft sudo SNAPCRAFT_BUILD_INFO=1 SNAPCRAFT_IMAGE_INFO="$SNAPCRAFT_IMAGE_INFO" snapcraft pack --destructive-mode echo "snap=$(ls ./*.snap)" >> "$GITHUB_OUTPUT" # retry snapcraft uploads which can be flaky - name: Publish snap run: | for attempt in 1 2 3 4 5; do snapcraft upload "$SNAP" --release latest/edge && exit 0 echo "::warning::snap upload attempt $attempt failed, retrying in 15s" sleep 15 done exit 1 env: SNAP: ${{ steps.build.outputs.snap }} SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}