11name : Flutter Release
22
3- # Workflow: Create GitHub Release first (with tag v*), then run this workflow manually
4- # pub.dev OIDC only works with 'push' or 'workflow_dispatch' events, not 'release'
3+ # Triggered by pushing a tag (v*)
4+ # pub.dev OIDC requires tag context, so we trigger on tag push
5+ #
6+ # Release process:
7+ # 1. Update version in pubspec.yaml, podspec, CHANGELOG.md
8+ # 2. Commit and push to main
9+ # 3. Create and push tag: git tag v0.2.5 && git push origin v0.2.5
10+ # 4. Workflow runs automatically and publishes everywhere
511on :
6- workflow_dispatch :
7- inputs :
8- version :
9- description : ' Version to publish (leave empty to use latest release tag)'
10- required : false
11- type : string
12- dry_run :
13- description : ' Dry run (do not actually publish)'
14- required : false
15- type : boolean
16- default : false
12+ push :
13+ tags :
14+ - ' v*'
1715
1816env :
1917 CARGO_TERM_COLOR : always
2018 FLUTTER_VERSION : ' 3.24.0'
2119
2220jobs :
23- # Get version from input or latest release
21+ # Get version from tag
2422 get-version :
2523 runs-on : ubuntu-latest
2624 outputs :
2725 version : ${{ steps.version.outputs.version }}
2826 steps :
29- - name : Get version
27+ - name : Get version from tag
3028 id : version
31- env :
32- GH_TOKEN : ${{ github.token }}
3329 run : |
34- if [ -n "${{ inputs.version }}" ]; then
35- echo "version=${{ inputs.version }}" >> $GITHUB_OUTPUT
36- echo "Using provided version: ${{ inputs.version }}"
37- else
38- # Get latest release tag and strip 'v' prefix
39- LATEST=$(gh release view --repo ${{ github.repository }} --json tagName -q '.tagName' | sed 's/^v//')
40- echo "version=$LATEST" >> $GITHUB_OUTPUT
41- echo "Using latest release version: $LATEST"
42- fi
30+ # Strip 'v' prefix from tag
31+ VERSION="${GITHUB_REF_NAME#v}"
32+ echo "version=$VERSION" >> $GITHUB_OUTPUT
33+ echo "Version from tag: $VERSION"
4334
4435 # Generate Dart bindings
4536 generate-bindings :
@@ -325,13 +316,7 @@ jobs:
325316 echo "Package size estimate:"
326317 du -sh packages/fula_client/
327318
328- - name : Publish to pub.dev (dry run)
329- if : inputs.dry_run
330- working-directory : packages/fula_client
331- run : flutter pub publish --dry-run
332-
333319 - name : Publish to pub.dev
334- if : ${{ !inputs.dry_run }}
335320 working-directory : packages/fula_client
336321 run : flutter pub publish --force
337322
@@ -358,25 +343,16 @@ jobs:
358343 ls -la wasm-package/
359344 cat wasm-package/package.json
360345
361- - name : Publish to npm (dry run)
362- if : inputs.dry_run
363- working-directory : wasm-package
364- run : npm publish --access public --dry-run
365- env :
366- NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
367-
368346 - name : Publish to npm
369- if : ${{ !inputs.dry_run }}
370347 working-directory : wasm-package
371348 run : npm publish --access public
372349 env :
373350 NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
374351
375- # Upload artifacts to existing GitHub Release
352+ # Upload artifacts to GitHub Release (created automatically from tag)
376353 upload-release-assets :
377354 needs : [get-version, build-android, build-ios, build-wasm]
378355 runs-on : ubuntu-latest
379- if : ${{ !inputs.dry_run }}
380356 steps :
381357 - name : Download all artifacts
382358 uses : actions/download-artifact@v4
0 commit comments