Skip to content

Publish to pub.dev

Publish to pub.dev #2

Workflow file for this run

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."