Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auto promote to beta when tests pass #81

Merged
merged 14 commits into from
Oct 4, 2024
Merged
134 changes: 0 additions & 134 deletions .github/workflows/build-and-test-snap.yml

This file was deleted.

92 changes: 92 additions & 0 deletions .github/workflows/snap-ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Snap CI

on:
schedule:
- cron: "20 2 * * 1" # Monday mornings 02:20 UTC
push:
branches: [main]
pull_request:
branches: [main]
# Allow manual trigger
workflow_dispatch:

env:
SNAP_NAME: chip-tool

jobs:
build:
name: Build, Test, Publish
strategy:
jpm-canonical marked this conversation as resolved.
Show resolved Hide resolved
matrix:
runs:
- architecture: amd64
runner: ubuntu-latest
- architecture: arm64
runner: [self-hosted, ARM64, Linux]
runs-on: ${{ matrix.runs.runner }}

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Build snap
uses: snapcore/action-build@v1
id: snapcraft

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{env.SNAP_NAME}}_${{github.run_number}}_${{matrix.runs.architecture}}
path: ${{ steps.snapcraft.outputs.snap }}
if-no-files-found: error

- name: Publish snap to edge
uses: snapcore/action-publish@v1
if: github.ref == 'refs/heads/main'
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }}
with:
snap: ${{ steps.snapcraft.outputs.snap }}
release: latest/edge

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.*"
cache: false

- name: Run tests
shell: bash
working-directory: tests
env:
TEARDOWN: false
SNAP_PATH: ../${{ steps.snapcraft.outputs.snap }}
run: |
go test -failfast -p 1 -timeout 30m -v

- name: Upload snap logs
if: always()
uses: actions/upload-artifact@v4
with:
name: logs_${{ github.run_number}}_${{matrix.runs.architecture}}
path: tests/logs/*.log

promote-beta:
name: Promote to Beta
# Only promote if we are on the main branch
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [build]
steps:
- name: Install Snapcraft
run: |
sudo snap install snapcraft --classic
echo /snap/bin >> $GITHUB_PATH
shell: bash

- name: Promote Snap
env: # Workaround for https://github.com/snapcore/snapcraft/issues/4439
SNAPCRAFT_HAS_TTY: "true"
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }}
run: |
yes | snapcraft promote $SNAP_NAME --from-channel latest/edge --to-channel latest/beta
Loading