Giter Club home page Giter Club logo

dart-package-publisher's Introduction

Build Status

Description

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

Prerequisite

You have to be a Verified Publisher to be able to publish from GH action w/o Pub needs your authorization to upload packages on your behalf check in console.

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

on: push

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

dart-package-publisher

The Firehose

Finally, after 3 years of silence Google did that job in house ๐Ÿ˜„ firehose

Inputs ๐Ÿ“ฅ

accessToken

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

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

refreshToken

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

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

credentialJson

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

You can find the pub-credentials.json within .config/dart in the User's home directory. You can use open ~/.config/dart after your first publication either through dart pub lish command for Dart or flutter 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

testRunOnly

Optional Perform unit tests 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

format

Optional Format code of project to get better score in pub.dev. Default: false

force

Optional Force publishing even if pub tool throws warnings, hints, etc. Default: false

flutter

Optional Flutter package type. Default: false, when omitted auto detected

flutterBranch

Optional Flutter branch to use, stable, master, main, dev, etc. Default: stable

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@main # required!
        
      - name: '>> Dart package <<'
        uses: k-paxian/dart-package-publisher@master
        with:
          accessToken: ${{ secrets.OAUTH_ACCESS_TOKEN }}
          refreshToken: ${{ secrets.OAUTH_REFRESH_TOKEN }}

dart-package-publisher's People

Contributors

k-paxian avatar alfredo-handcash avatar tomykho avatar lcuis avatar

Stargazers

Amirhossein Akhlaghi avatar MrKh avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.