Spotube Release Binary #3
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: Spotube Release Binary | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: Version to release (x.x.x) | |
default: 3.4.1 | |
required: true | |
channel: | |
type: choice | |
description: Release Channel | |
required: true | |
options: | |
- stable | |
- nightly | |
default: nightly | |
debug: | |
description: Debug on failed when channel is nightly | |
required: true | |
type: boolean | |
default: false | |
dry_run: | |
description: Dry run | |
required: true | |
type: boolean | |
default: true | |
env: | |
FLUTTER_VERSION: '3.16.3' | |
jobs: | |
windows: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: subosito/[email protected] | |
with: | |
cache: true | |
flutter-version: ${{ env.FLUTTER_VERSION }} | |
- name: Replace pubspec version and BUILD_VERSION Env (nightly) | |
if: ${{ inputs.channel == 'nightly' }} | |
run: | | |
choco install sed make yq -y | |
yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml | |
yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml | |
"BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $env:GITHUB_ENV | |
- name: BUILD_VERSION Env (stable) | |
if: ${{ inputs.channel == 'stable' }} | |
run: | | |
"BUILD_VERSION=${{ inputs.version }}" >> $env:GITHUB_ENV | |
- name: Replace version in files | |
run: | | |
choco install sed make -y | |
sed -i "s/%{{SPOTUBE_VERSION}}%/${{ env.BUILD_VERSION }}/" windows/runner/Runner.rc | |
sed -i "s/%{{SPOTUBE_VERSION}}%/${{ env.BUILD_VERSION }}/" choco-struct/tools/VERIFICATION.txt | |
sed -i "s/%{{SPOTUBE_VERSION}}%/${{ env.BUILD_VERSION }}/" choco-struct/spotube.nuspec | |
- name: Create Stable .env | |
if: ${{ inputs.channel == 'stable' }} | |
run: echo '${{ secrets.DOTENV_RELEASE }}' > .env | |
- name: Create Nightly .env | |
if: ${{ inputs.channel == 'nightly' }} | |
run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env | |
- name: Generating Secrets | |
run: | | |
flutter config --enable-windows-desktop | |
flutter pub get | |
dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns | |
- name: Build Windows Executable | |
run: | | |
dart pub global activate flutter_distributor | |
make innoinstall | |
flutter_distributor package --platform=windows --targets=exe --skip-clean | |
mv dist/**/spotube-*-windows-setup.exe dist/Spotube-windows-x86_64-setup.exe | |
- name: Create Chocolatey Package and set hash | |
if: ${{ inputs.channel == 'stable' }} | |
run: | | |
Set-Variable -Name HASH -Value (Get-FileHash dist\Spotube-windows-x86_64-setup.exe).Hash | |
sed -i "s/%{{WIN_SHA256}}%/$HASH/" choco-struct/tools/VERIFICATION.txt | |
make choco | |
mv dist/spotube.*.nupkg dist/Spotube-windows-x86_64.nupkg | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
name: Spotube-Release-Binaries | |
path: | | |
dist/Spotube-windows-x86_64.nupkg | |
dist/Spotube-windows-x86_64-setup.exe | |
- name: Debug With SSH When fails | |
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
limit-access-to-actor: true | |
upload: | |
runs-on: ubuntu-latest | |
needs: | |
- windows | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: Spotube-Release-Binaries | |
path: ./Spotube-Release-Binaries | |
- name: Install dependencies | |
run: sudo apt-get install tree -y | |
- name: Generate Checksums | |
run: | | |
tree . | |
md5sum Spotube-Release-Binaries/* >> RELEASE.md5sum | |
sha256sum Spotube-Release-Binaries/* >> RELEASE.sha256sum | |
sed -i 's|Spotube-Release-Binaries/||' RELEASE.sha256sum RELEASE.md5sum | |
- uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
name: Spotube-Release-Binaries | |
path: | | |
RELEASE.md5sum | |
RELEASE.sha256sum | |
- name: Upload Release Binaries (stable) | |
if: ${{ !inputs.dry_run && inputs.channel == 'stable' }} | |
uses: ncipollo/release-action@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag: v${{ inputs.version }} # mind the "v" prefix | |
omitBodyDuringUpdate: true | |
omitNameDuringUpdate: true | |
omitPrereleaseDuringUpdate: true | |
allowUpdates: true | |
artifacts: Spotube-Release-Binaries/*,RELEASE.sha256sum,RELEASE.md5sum | |
- name: Upload Release Binaries (nightly) | |
if: ${{ !inputs.dry_run && inputs.channel == 'nightly' }} | |
uses: ncipollo/release-action@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag: nightly | |
omitBodyDuringUpdate: true | |
omitNameDuringUpdate: true | |
omitPrereleaseDuringUpdate: true | |
allowUpdates: true | |
artifacts: Spotube-Release-Binaries/*,RELEASE.sha256sum,RELEASE.md5sum |