|
@@ -4,17 +4,76 @@ on:
|
|
|
push:
|
|
push:
|
|
|
branches:
|
|
branches:
|
|
|
- main
|
|
- main
|
|
|
|
|
+ tags:
|
|
|
|
|
+ - '*.*.*'
|
|
|
|
|
+ release:
|
|
|
|
|
+ types:
|
|
|
|
|
+ - published
|
|
|
|
|
|
|
|
permissions:
|
|
permissions:
|
|
|
contents: write
|
|
contents: write
|
|
|
|
|
|
|
|
jobs:
|
|
jobs:
|
|
|
|
|
+ bump-version-tag:
|
|
|
|
|
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
|
|
|
+ runs-on: ubuntu-latest
|
|
|
|
|
+
|
|
|
|
|
+ steps:
|
|
|
|
|
+ - name: Check out repository
|
|
|
|
|
+ uses: actions/checkout@v4
|
|
|
|
|
+ with:
|
|
|
|
|
+ fetch-depth: 0
|
|
|
|
|
+
|
|
|
|
|
+ - name: Tag next patch version
|
|
|
|
|
+ run: |
|
|
|
|
|
+ set -eu
|
|
|
|
|
+ git fetch --force --tags origin
|
|
|
|
|
+
|
|
|
|
|
+ if git tag --points-at "$GITHUB_SHA" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+$'; then
|
|
|
|
|
+ echo "semver tag already exists on this commit; skipping"
|
|
|
|
|
+ exit 0
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ LAST="$(
|
|
|
|
|
+ git tag --list \
|
|
|
|
|
+ | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' \
|
|
|
|
|
+ | sort -V \
|
|
|
|
|
+ | tail -n1 || true
|
|
|
|
|
+ )"
|
|
|
|
|
+
|
|
|
|
|
+ if [ -z "$LAST" ]; then
|
|
|
|
|
+ # Bootstrap the first semver release tag at 0.9.1.
|
|
|
|
|
+ NEXT="0.9.1"
|
|
|
|
|
+ else
|
|
|
|
|
+ MAJOR="${LAST%%.*}"
|
|
|
|
|
+ REST="${LAST#*.}"
|
|
|
|
|
+ MINOR="${REST%%.*}"
|
|
|
|
|
+ PATCH="${LAST##*.}"
|
|
|
|
|
+ NEXT="${MAJOR}.${MINOR}.$((PATCH + 1))"
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ git tag "$NEXT" "$GITHUB_SHA"
|
|
|
|
|
+ git push origin "$NEXT"
|
|
|
|
|
+
|
|
|
build-release:
|
|
build-release:
|
|
|
|
|
+ if: github.event_name == 'release' || (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/'))
|
|
|
runs-on: ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
|
|
|
|
|
|
steps:
|
|
steps:
|
|
|
- name: Check out repository
|
|
- name: Check out repository
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
|
|
+ with:
|
|
|
|
|
+ fetch-depth: 0
|
|
|
|
|
+
|
|
|
|
|
+ - name: Resolve release version
|
|
|
|
|
+ id: release_version
|
|
|
|
|
+ run: |
|
|
|
|
|
+ if [ "${{ github.event_name }}" = "release" ]; then
|
|
|
|
|
+ VERSION="${{ github.event.release.tag_name }}"
|
|
|
|
|
+ else
|
|
|
|
|
+ VERSION="${GITHUB_REF_NAME}"
|
|
|
|
|
+ fi
|
|
|
|
|
+ echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
|
|
|
|
|
|
- name: Set up Arduino CLI
|
|
- name: Set up Arduino CLI
|
|
|
uses: arduino/setup-arduino-cli@v2
|
|
uses: arduino/setup-arduino-cli@v2
|
|
@@ -35,6 +94,8 @@ jobs:
|
|
|
arduino-cli core install adafruit:nrf52
|
|
arduino-cli core install adafruit:nrf52
|
|
|
|
|
|
|
|
- name: Generate version header
|
|
- name: Generate version header
|
|
|
|
|
+ env:
|
|
|
|
|
+ OPK_BUILD_VERSION: ${{ steps.release_version.outputs.version }}
|
|
|
run: ./gen_version.sh
|
|
run: ./gen_version.sh
|
|
|
|
|
|
|
|
- name: Compile OpenPuck
|
|
- name: Compile OpenPuck
|
|
@@ -80,12 +141,10 @@ jobs:
|
|
|
run: ./gen_uf2.sh build/openpuck-recovery/OpenPuck.ino.hex build/openpuck-recovery/OpenPuck.ino.uf2
|
|
run: ./gen_uf2.sh build/openpuck-recovery/OpenPuck.ino.hex build/openpuck-recovery/OpenPuck.ino.uf2
|
|
|
|
|
|
|
|
- name: Collect artifacts
|
|
- name: Collect artifacts
|
|
|
|
|
+ env:
|
|
|
|
|
+ VERSION: ${{ steps.release_version.outputs.version }}
|
|
|
run: |
|
|
run: |
|
|
|
mkdir -p release_assets
|
|
mkdir -p release_assets
|
|
|
- REF="${GITHUB_REF_NAME}"
|
|
|
|
|
- SAFE_REF="$(printf '%s' "$REF" | tr -c 'A-Za-z0-9._-' '-')"
|
|
|
|
|
- SHA_SHORT="$(git rev-parse --short=8 HEAD)"
|
|
|
|
|
- VERSION="${SAFE_REF}-${SHA_SHORT}"
|
|
|
|
|
|
|
|
|
|
find build/openpuck build/openpuck-recovery \
|
|
find build/openpuck build/openpuck-recovery \
|
|
|
-maxdepth 1 -type f \
|
|
-maxdepth 1 -type f \
|
|
@@ -116,16 +175,15 @@ jobs:
|
|
|
- name: Create GitHub Release
|
|
- name: Create GitHub Release
|
|
|
uses: softprops/action-gh-release@v2
|
|
uses: softprops/action-gh-release@v2
|
|
|
with:
|
|
with:
|
|
|
- tag_name: ${{ format('build-{0}', github.sha) }}
|
|
|
|
|
- target_commitish: ${{ github.sha }}
|
|
|
|
|
- name: ${{ format('Build {0}', github.sha) }}
|
|
|
|
|
- prerelease: true
|
|
|
|
|
|
|
+ tag_name: ${{ steps.release_version.outputs.version }}
|
|
|
|
|
+ name: ${{ format('OpenPuck {0}', steps.release_version.outputs.version) }}
|
|
|
|
|
+ prerelease: false
|
|
|
files: release_assets/*
|
|
files: release_assets/*
|
|
|
body: |
|
|
body: |
|
|
|
OpenPuck Firmware Release
|
|
OpenPuck Firmware Release
|
|
|
|
|
|
|
|
- Build: ${{ github.sha }}
|
|
|
|
|
- Ref: ${{ github.ref_name }}
|
|
|
|
|
|
|
+ Version: ${{ steps.release_version.outputs.version }}
|
|
|
|
|
+ Commit: ${{ github.sha }}
|
|
|
|
|
|
|
|
### Files included:
|
|
### Files included:
|
|
|
|
|
|