flutter-tsnet/.gitea/workflows/publish.yml
Mathias Beaulieu-Duncan 0f42ada793 Prepare for pub.dev publishing with Gitea release pipeline
- Add README.md and CHANGELOG.md (required by pub.dev)
- Add .pubignore / ios/.pubignore to include xcframework in published package
- Add Gitea Actions workflow: builds xcframework and publishes on release
- Release tag must match pubspec version with no v prefix (e.g. "0.1.0")
- Requires PUB_TOKEN secret in Gitea repo settings

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 06:13:35 -04:00

61 lines
1.7 KiB
YAML

name: Publish to pub.dev
on:
release:
types: [published]
jobs:
publish:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Validate release tag (no v prefix)
run: |
TAG="${{ gitea.event.release.tag_name }}"
if [[ "$TAG" == v* ]]; then
echo "Error: tag '$TAG' has a v prefix. Use '0.1.0' not 'v0.1.0'"
exit 1
fi
echo "Publishing version: $TAG"
- name: Verify version matches pubspec
run: |
TAG="${{ gitea.event.release.tag_name }}"
PUBSPEC_VERSION=$(grep '^version:' pubspec.yaml | awk '{print $2}')
if [ "$TAG" != "$PUBSPEC_VERSION" ]; then
echo "Error: tag '$TAG' doesn't match pubspec version '$PUBSPEC_VERSION'"
exit 1
fi
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: '1.23'
- name: Install Xcode tools
run: xcode-select --install 2>/dev/null || true
- name: Build xcframework from Go source
run: |
chmod +x build_go.sh
./build_go.sh
- name: Verify xcframework exists
run: |
ls -lh ios/TailscaleKit.xcframework/ios-arm64/TailscaleKit.framework/TailscaleKit
ls -lh ios/TailscaleKit.xcframework/ios-arm64-simulator/TailscaleKit.framework/TailscaleKit
- name: Dry run publish
run: dart pub publish --dry-run
- name: Publish to pub.dev
run: dart pub publish --force
env:
PUB_TOKEN: ${{ secrets.PUB_TOKEN }}