Dennis Alund
Dennis Alund
Google Developers Expert for Firebase
Oct 11, 2019 2 min read

Publishing Dart Packages with Github Actions

thumbnail for this post

A tutorial that will get you started with automated publishing of Dart packages to the pub.dev package repository, in less than 3 minutes.

In a couple of minutes from now, you will have a Github Action workflow that does all the heavy lifting of publishing your dart package or Flutter plugin to pub.dev for you.

Let’s get started.

Get your credentials

First you need to get and setup your credentials for publishing the package. Make sure that you publish your first version manually from the command line so that your package gets listed and you become the owner of that listing.

After that, find your credentials.json file either in ~/.pub-cache or ~/<your flutter root>/.pub-cache/

$ cat ~/.pub-cache/credentials.json 
{
 “accessToken”:”<access-token>”,
 ”refreshToken”:”<refresh-token>”,
 ”tokenEndpoint”:”https://accounts.google.com/o/oauth2/token",
 "scopes":["openid","https://www.googleapis.com/auth/userinfo.email"],
 "expiration":1570721159347
}

Copy your access and refresh tokens and create secret variables in your Github project and name them OAUTH_ACCESS_TOKEN and OAUTH_REFRESH_TOKEN respectively. They will match the names in the script below later.

Set up your Github Actions workflow

You can either choose to setup your actions direcly from the Github website or just add this YAML configuration file into your project and push the change to the Github repository.

/.github/workflows/dart.yml

Publishing new versions

This script will now publish a new version of your package to pub.dev every time you merge to the master branch. It’s important to rember that each new version that you are publishing must have a new semantic version number in your pubspec.yaml and you should also declare a corresponding explanation of what you have updated in the CHANGELOG.md. The deployment will complain if you don’t.