Publish to pub.dev #2
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: Publish to pub.dev | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Package version to publish (e.g., 1.0.1)' | |
| required: true | |
| type: string | |
| dry-run: | |
| description: 'Perform a dry run without publishing' | |
| required: false | |
| type: boolean | |
| default: false | |
| jobs: | |
| validate: | |
| name: Validate Package | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: '3.27.0' | |
| channel: 'stable' | |
| cache: true | |
| - name: Get dependencies | |
| run: flutter pub get | |
| - name: Verify formatting | |
| run: dart format --set-exit-if-changed . | |
| - name: Analyze project source | |
| run: flutter analyze --fatal-infos | |
| - name: Run tests | |
| run: flutter test | |
| - name: Check package version | |
| run: | | |
| PUBSPEC_VERSION=$(grep '^version:' pubspec.yaml | sed 's/version: //') | |
| INPUT_VERSION="${{ github.event.inputs.version }}" | |
| if [ "$PUBSPEC_VERSION" != "$INPUT_VERSION" ]; then | |
| echo "❌ Version mismatch!" | |
| echo "pubspec.yaml version: $PUBSPEC_VERSION" | |
| echo "Input version: $INPUT_VERSION" | |
| echo "" | |
| echo "Please update the version in pubspec.yaml to match: $INPUT_VERSION" | |
| exit 1 | |
| fi | |
| echo "✅ Version check passed: $PUBSPEC_VERSION" | |
| - name: Run package analysis | |
| run: | | |
| dart pub global activate pana | |
| pana --no-warning --exit-code-threshold 0 | |
| publish: | |
| name: Publish Package | |
| runs-on: ubuntu-latest | |
| needs: validate | |
| if: ${{ !github.event.inputs.dry-run }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: '3.27.0' | |
| channel: 'stable' | |
| cache: true | |
| - name: Get dependencies | |
| run: flutter pub get | |
| - name: Setup pub credentials | |
| run: | | |
| mkdir -p ~/.pub-cache | |
| echo '${{ secrets.PUB_DEV_CREDENTIALS }}' > ~/.pub-cache/credentials.json | |
| - name: Publish to pub.dev | |
| run: flutter pub publish --force | |
| - name: Create Git Tag | |
| run: | | |
| git config user.name "GitHub Actions" | |
| git config user.email "actions@github.com" | |
| git tag -a v${{ github.event.inputs.version }} -m "Release version ${{ github.event.inputs.version }}" | |
| git push origin v${{ github.event.inputs.version }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Create GitHub Release | |
| uses: actions/create-release@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| tag_name: v${{ github.event.inputs.version }} | |
| release_name: Release v${{ github.event.inputs.version }} | |
| body: | | |
| ## 📦 Package Published | |
| Version **${{ github.event.inputs.version }}** has been published to pub.dev. | |
| ### Installation | |
| ```yaml | |
| dependencies: | |
| docx_viewer: ^${{ github.event.inputs.version }} | |
| ``` | |
| ### Links | |
| - [pub.dev](https://pub.dev/packages/docx_viewer) | |
| - [Changelog](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md) | |
| draft: false | |
| prerelease: false | |
| dry-run: | |
| name: Dry Run Publish | |
| runs-on: ubuntu-latest | |
| needs: validate | |
| if: ${{ github.event.inputs.dry-run }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: '3.27.0' | |
| channel: 'stable' | |
| cache: true | |
| - name: Get dependencies | |
| run: flutter pub get | |
| - name: Dry run pub publish | |
| run: flutter pub publish --dry-run | |
| - name: Dry run summary | |
| run: | | |
| echo "✅ Dry run completed successfully!" | |
| echo "The package is ready to be published." | |
| echo "" | |
| echo "To publish for real, run this workflow again with 'dry-run' set to false." |