Create new release #51
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Create new release | |
on: | |
workflow_dispatch: | |
inputs: | |
new_version: | |
description: "New version" | |
required: true | |
type: string | |
jobs: | |
set-new-version: | |
runs-on: ubuntu-latest | |
env: | |
GH_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
outputs: | |
commit_hash: ${{steps.commit_new_version.outputs.commit_hash}} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set new version format | |
run: | | |
if [[ "${{ inputs.new_version }}" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; | |
then | |
echo "New version looks okay"; | |
MAJOR="${BASH_REMATCH[1]}" | |
MINOR="${BASH_REMATCH[2]}" | |
PATCH="${BASH_REMATCH[3]}" | |
sed -r -i "s/TOTP_APP_VERSION_MAJOR\\s+\\([0-9]+\\)/TOTP_APP_VERSION_MAJOR ($MAJOR)/g" totp/version.h | |
sed -r -i "s/TOTP_APP_VERSION_MINOR\\s+\\([0-9]+\\)/TOTP_APP_VERSION_MINOR ($MINOR)/g" totp/version.h | |
sed -r -i "s/TOTP_APP_VERSION_PATCH\\s+\\([0-9]+\\)/TOTP_APP_VERSION_PATCH ($PATCH)/g" totp/version.h | |
sed -r -i "s/fap_version=\"[0-9]+\\.[0-9]+\"/fap_version=\"$MAJOR.$MINOR$PATCH\"/g" totp/application.fam | |
else | |
echo "Invalid version format"; | |
exit 1 | |
fi | |
- id: commit_new_version | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: "chore: Updated version" | |
push_options: "--force" | |
create-release: | |
runs-on: ubuntu-latest | |
needs: set-new-version | |
env: | |
GH_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
outputs: | |
upload_url: ${{steps.create-release.outputs.upload_url}} | |
steps: | |
- uses: actions/checkout@v3 | |
- id: create-release | |
uses: ncipollo/release-action@v1.14.0 | |
with: | |
bodyFile: ".github/release-body.md" | |
artifactErrorsFailBuild: true | |
updateOnlyUnreleased: true | |
allowUpdates: true | |
removeArtifacts: true | |
draft: true | |
tag: "v${{ inputs.new_version }}" | |
commit: "${{needs.set-new-version.outputs.commit_hash}}" | |
build: | |
strategy: | |
matrix: | |
firmware: [od, os, xs, xd, ul, ud, ms, md] | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
needs: [set-new-version, create-release] | |
env: | |
FBT_NO_SYNC: "true" | |
TARGETS: f7 | |
DEFAULT_TARGET: f7 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: "${{needs.set-new-version.outputs.commit_hash}}" | |
fetch-depth: 0 | |
submodules: "recursive" | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
- name: Install uFBT | |
run: python3 -m pip install --upgrade ufbt | |
- name: Build | |
run: ./build.ps1 ${{ matrix.firmware }} | |
shell: pwsh | |
- name: Generate checksum | |
run: | | |
cd build | |
find . -type f -maxdepth 1 -name '*.zip' -exec sha256sum {} \; > checksum.txt | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: release-${{ matrix.firmware }} | |
compression-level: 0 | |
path: | | |
build/*.zip | |
build/checksum.txt | |
publish-artifacts: | |
runs-on: ubuntu-latest | |
needs: ["create-release", "build"] | |
steps: | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: release-* | |
path: release | |
- name: Upload release artifacts | |
uses: shogo82148/actions-upload-release-asset@v1 | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} | |
asset_path: release/**/*.zip | |
- name: Generate checksum | |
run: | | |
cd release | |
find . -type f -mindepth 1 -maxdepth 2 -name 'checksum.txt' | xargs cat > ../checksum.txt | |
- name: Upload checksum | |
uses: shogo82148/actions-upload-release-asset@v1 | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} | |
asset_path: checksum.txt |