- 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>
61 lines
1.7 KiB
YAML
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 }}
|