chore(release): v0.1.1 #25
Workflow file for this run
This file contains hidden or 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: Release | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| permissions: | |
| contents: write | |
| concurrency: | |
| group: release-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| platform: linux | |
| - os: windows-latest | |
| platform: windows | |
| - os: macos-latest | |
| platform: darwin | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Set up Go | |
| uses: actions/setup-go@v6 | |
| with: | |
| go-version: 'stable' | |
| - name: Set up Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '24' | |
| - name: Cache Go modules | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ~/.cache/go-build | |
| ~/go/pkg/mod | |
| key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
| restore-keys: ${{ runner.os }}-go- | |
| - name: Cache Node modules | |
| uses: actions/cache@v5 | |
| with: | |
| path: frontend/node_modules | |
| key: ${{ runner.os }}-node-${{ hashFiles('frontend/package-lock.json') }} | |
| restore-keys: ${{ runner.os }}-node- | |
| - name: Install Linux dependencies | |
| if: matrix.platform == 'linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libgtk-3-dev \ | |
| libwebkit2gtk-4.1-dev \ | |
| pkg-config \ | |
| build-essential | |
| - name: Install Windows dependencies | |
| if: matrix.platform == 'windows' | |
| shell: pwsh | |
| run: | | |
| choco install nsis -y | |
| echo "C:\Program Files (x86)\NSIS" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| - name: Install Wails CLI | |
| run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest | |
| - name: Install frontend dependencies | |
| run: | | |
| cd frontend | |
| npm ci | |
| # Linux and Windows use the standard package command (x86_64 only) | |
| - name: Package (Linux / Windows) | |
| if: matrix.platform != 'darwin' | |
| run: wails3 package | |
| # macOS builds a universal binary covering both arm64 and x86_64 in one .app | |
| - name: Package (macOS universal) | |
| if: matrix.platform == 'darwin' | |
| run: wails3 task darwin:package:universal | |
| - name: Upload Linux artifacts | |
| if: matrix.platform == 'linux' | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: linux-artifacts | |
| path: | | |
| bin/filamint | |
| bin/filamint.deb | |
| - name: Upload Windows artifacts | |
| if: matrix.platform == 'windows' | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: windows-artifacts | |
| path: bin/filamint*.exe | |
| - name: Create DMG | |
| if: matrix.platform == 'darwin' | |
| run: hdiutil create -volname "Filamint" -srcfolder bin/filamint.app -ov -format UDZO bin/filamint.dmg | |
| - name: Upload macOS artifacts | |
| if: matrix.platform == 'darwin' | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: darwin-artifacts | |
| path: bin/filamint.dmg | |
| release: | |
| needs: build | |
| if: needs.build.result == 'success' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v8 | |
| with: | |
| path: artifacts | |
| - name: Extract version from tag | |
| id: version | |
| run: echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT | |
| - name: Generate latest.json | |
| run: | | |
| VERSION="${{ steps.version.outputs.VERSION }}" | |
| DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) | |
| REPO="${{ github.repository }}" | |
| BASE="https://github.com/${REPO}/releases/download/v${VERSION}" | |
| jq -n \ | |
| --arg version "$VERSION" \ | |
| --arg date "$DATE" \ | |
| --arg base "$BASE" \ | |
| '{ | |
| version: $version, | |
| notes: ("Release v" + $version), | |
| pub_date: $date, | |
| platforms: { | |
| "windows-x86_64-installer": { url: ($base + "/filamint-amd64-installer.exe") }, | |
| "windows-x86_64-portable": { url: ($base + "/filamint.exe") }, | |
| "darwin-aarch64": { url: ($base + "/filamint.dmg") }, | |
| "darwin-x86_64": { url: ($base + "/filamint.dmg") }, | |
| "linux-x86_64": { url: ($base + "/filamint") }, | |
| "linux-x86_64-deb": { url: ($base + "/filamint.deb") } | |
| } | |
| }' > latest.json | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| draft: true | |
| generate_release_notes: true | |
| files: | | |
| artifacts/linux-artifacts/filamint | |
| artifacts/linux-artifacts/filamint.deb | |
| artifacts/windows-artifacts/*.exe | |
| artifacts/darwin-artifacts/*.dmg | |
| latest.json |