| # A CI configuration to auto-publish pub packages. |
| |
| name: Publish |
| |
| # Callers of this workflow should use it as follows: |
| # |
| # name: Publish |
| # on: |
| # pull_request: |
| # branches: [ main ] |
| # types: [opened, synchronize, reopened, labeled, unlabeled] |
| # push: |
| # tags: [ 'v[0-9]+.[0-9]+.[0-9]+*' ] |
| # jobs: |
| # publish: |
| # uses: dart-lang/ecosystem/.github/workflows/publish.yaml@main |
| |
| # Callers may optionally specify the version of the SDK to use when publishing a |
| # package. This can be useful if your package has a very recent minimum SDK |
| # constraint. This is done via the `sdk` input parameter. Note that this |
| # parameter is not required; it defaults to `stable` - using the most recent |
| # stable release of the Dart SDK. To pass this value: |
| # |
| # jobs: |
| # publish: |
| # uses: dart-lang/ecosystem/.github/workflows/publish.yaml@main |
| # with: |
| # sdk: beta |
| |
| # When using this package to publish Flutter packages, the `use-flutter` |
| # parameter should be set. The `sdk` parameter is then used to specify |
| # the Flutter SDK. |
| # |
| # jobs: |
| # publish: |
| # uses: dart-lang/ecosystem/.github/workflows/publish.yaml@main |
| # with: |
| # use-flutter: true |
| |
| # When using a post_summaries.yaml workflow to post the comments, set |
| # the write-comments parameter to false. |
| # |
| # jobs: |
| # publish: |
| # uses: dart-lang/ecosystem/.github/workflows/publish.yaml@main |
| # with: |
| # write-comments: false |
| |
| # It is also possible to ignore certain packages in the repository |
| # via a glob. |
| # |
| # jobs: |
| # publish: |
| # uses: dart-lang/ecosystem/.github/workflows/publish.yaml@main |
| # with: |
| # ignore-packages: pkgs/non-published-package |
| |
| on: |
| workflow_call: |
| inputs: |
| environment: |
| description: >- |
| If specified, publishes will be performed from this environment, |
| which will require additional approvals. See |
| https://dart.dev/tools/pub/automated-publishing for more |
| information. |
| required: false |
| type: string |
| sdk: |
| description: >- |
| The channel, or a specific version from a channel, to install |
| ('2.19.0','stable', 'beta', 'dev'). Using one of the three channels |
| will give you the latest version published to that channel. |
| default: "stable" |
| required: false |
| type: string |
| use-flutter: |
| description: >- |
| Whether to setup Flutter in this workflow. |
| default: false |
| required: false |
| type: boolean |
| write-comments: |
| description: >- |
| Whether to write a comment in this workflow. |
| default: true |
| required: false |
| type: boolean |
| checkout_submodules: |
| description: >- |
| Whether to checkout submodules of git repositories. |
| default: false |
| required: false |
| type: boolean |
| ignore-packages: |
| description: Which packages to ignore. |
| default: "\"\"" |
| required: false |
| type: string |
| local_debug: |
| description: Whether to use a local copy of package:firehose - only for debug |
| default: false |
| type: boolean |
| required: false |
| |
| jobs: |
| # Note that this job does not require the specified environment. |
| validate: |
| if: ${{ github.event_name == 'pull_request' }} |
| |
| # These permissions are required for authentication using OIDC and to enable |
| # us to create comments on PRs. |
| permissions: |
| pull-requests: write |
| |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 |
| with: |
| submodules: ${{ inputs.checkout_submodules }} |
| |
| - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 |
| if: ${{ inputs.use-flutter }} |
| with: |
| channel: ${{ inputs.sdk }} |
| |
| |
| - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 |
| if: ${{ !inputs.use-flutter }} |
| with: |
| sdk: ${{ inputs.sdk }} |
| |
| - name: Install firehose |
| run: dart pub global activate firehose |
| if: ${{ !inputs.local_debug }} |
| |
| - name: Install local firehose |
| run: dart pub global activate --source path pkgs/firehose/ |
| if: ${{ inputs.local_debug }} |
| |
| - name: Validate packages |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| ISSUE_NUMBER: ${{ github.event.number }} |
| PR_LABELS: "${{ join(github.event.pull_request.labels.*.name) }}" |
| run: | |
| dart pub global run firehose \ |
| --validate \ |
| ${{ fromJSON('{"true":"--use-flutter","false":"--no-use-flutter"}')[inputs.use-flutter] }} \ |
| --ignore-packages ${{ inputs.ignore-packages }} |
| |
| - name: Get comment id |
| if: ${{ (hashFiles('output/comment.md') != '') && inputs.write-comments }} |
| run: | |
| touch -a output/commentId |
| COMMENT_ID=$(cat output/commentId) |
| echo "COMMENT_ID=$COMMENT_ID" >> $GITHUB_ENV |
| |
| - name: Create comment |
| uses: peter-evans/create-or-update-comment@9bb5d837b91928730a318c22b99b9f42a0f005e1 |
| if: ${{ (hashFiles('output/comment.md') != '') && inputs.write-comments && (env.COMMENT_ID == '') }} |
| continue-on-error: true |
| with: |
| issue-number: ${{ github.event.number }} |
| body-path: 'output/comment.md' |
| edit-mode: replace |
| |
| - name: Update comment |
| uses: peter-evans/create-or-update-comment@9bb5d837b91928730a318c22b99b9f42a0f005e1 |
| if: ${{ (hashFiles('output/comment.md') != '') && inputs.write-comments && (env.COMMENT_ID != '') }} |
| with: |
| comment-id: ${{ env.COMMENT_ID }} |
| body-path: 'output/comment.md' |
| edit-mode: replace |
| |
| - name: Save PR number |
| if: ${{ !inputs.write-comments }} |
| run: | |
| mkdir -p output/ && echo ${{ github.event.number }} > output/issueNumber |
| |
| - name: Upload folder with number and markdown |
| if: ${{ !inputs.write-comments }} |
| uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 |
| with: |
| name: output |
| path: output/ |
| |
| |
| publish: |
| if: ${{ github.event_name == 'push' }} |
| |
| # Require the github deployment environment if supplied. |
| environment: ${{ inputs.environment }} |
| |
| # This permission is required for authentication using OIDC. |
| permissions: |
| id-token: write |
| |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 |
| with: |
| submodules: ${{ inputs.checkout_submodules }} |
| |
| - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 |
| if: ${{ inputs.use-flutter }} |
| with: |
| channel: ${{ inputs.sdk }} |
| |
| - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 |
| if: ${{ !inputs.use-flutter }} |
| with: |
| sdk: ${{ inputs.sdk }} |
| |
| - name: Install firehose |
| run: dart pub global activate firehose |
| |
| - name: Publish packages |
| run: dart pub global run firehose --publish ${{ fromJSON('{"true":"--use-flutter","false":"--no-use-flutter"}')[inputs.use-flutter] }} |