Skip to content

Modool/flutter-package-publisher

 
 

Repository files navigation

Build Status

Description

Continuously Test & Publish Dart and Flutter Package To Pub.dev When Version Changed

The Challenge

Usually, when you are trying to pub lish your Dart package (or pub publish your Flutter package) and your pubspec.yaml has the same version as already published, you'll have a non zero exit code from pub tool and your workflow is red. So you cannot directly hook publish command as an re-action to on: push event.

To keep a workflow green on each push, you have to prevent publishing step if versions are the same, and to compare versions, you should have both of them, remote and local.

This Action is intended to solve this challenge by continuously Test & Publish Dart/Flutter packages only IF local pubspec.yml has different version than already published on Pub.dev site.

It's handy to hook it up on push, pull_request events.

on: [push, pull_request]

and forget about it. When you need to publish a package, just bump the version in pubspec.yaml.

dart-package-publisher

Inputs

accessToken

Required Google Account token from ~/.pub-cache/credentials.json Put it as secrets.OAUTH_ACCESS_TOKEN on your repo secrets section

You can find the credentials.json within .pub-cache in the User's home directory. You can use open ~/.pub-cache.

refreshToken

Required Google Account token from ~/.pub-cache/credentials.json Put it as secrets.OAUTH_REFRESH_TOKEN on your repo secrets section

You can find the credentials.json within .pub-cache in the User's home directory. You can use open ~/.pub-cache.

credentialJson

Replaces accessToken and refreshToken and contains the whole content of the ~/.pub-cache/credentials.json file Put it as secrets.CREDENTIAL_JSON on your repo secrets section

You can find the credentials.json within .pub-cache in the User's home directory. You can use open ~/.pub-cache after your first publication either through pub lish command for Dart or pub publish for Flutter.

relativePath

Optional Path to your package root in your repository. In case you have a mono-repo, like this one

dryRunOnly

Optional Perform dry run only, no real publishing. Default: false

skipTests

Optional Skip unit tests run. Default: false

suppressBuildRunner

Optional Suppress using build_runner for unit tests run. Default: false

Outputs

success

Result, "true" if actual publishing happened, "false" otherwise

package

Package name from pubspec

localVersion

Package local version from pubspec

remoteVersion

Package remote version from pub.dev

dartVersion

Dart SDK version which is being used to run tests & publish

flutterVersion

Flutter SDK version which is being used to run tests & publish

Dart or Flutter package example usage

name: Publish to Pub.dev

on: push

jobs:
  publishing:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout'
        uses: actions/checkout@v2 # required!
        
      - name: '>> Dart package <<'
        uses: k-paxian/dart-package-publisher@master
        with:
          accessToken: ${{ secrets.OAUTH_ACCESS_TOKEN }}
          refreshToken: ${{ secrets.OAUTH_REFRESH_TOKEN }}

About

Action to Publish Dart / Flutter Package To https://pub.dev

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 72.2%
  • Dockerfile 14.2%
  • Dart 13.6%