Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
workflow_call: | |
inputs: | |
package: | |
required: true | |
type: string | |
sdk: | |
required: false | |
type: string | |
default: dart | |
panaThreshold: | |
description: Minumum percentage of Dart Package Analyzer score that must be achieved. | |
required: false | |
type: number | |
default: 100 | |
jobs: | |
cancel-previous-workflow: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # [email protected] | |
with: | |
access_token: ${{ github.token }} | |
analyze: | |
if: ${{ !startsWith(github.ref, 'refs/heads/release/') }} | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
defaults: | |
run: | |
working-directory: ${{ inputs.package }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 | |
if: ${{ inputs.sdk == 'dart' }} | |
- uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # [email protected] | |
if: ${{ inputs.sdk == 'flutter' }} | |
- run: ${{ inputs.sdk }} pub get | |
- run: dart format --set-exit-if-changed ./ | |
- name: dart analyze | |
uses: invertase/github-action-dart-analyzer@1cda5922c6369263b1c7e2fbe281f69704f4d63e # [email protected] | |
with: | |
annotate: true | |
fatal-infos: true | |
fatal-warnings: true | |
annotate-only: false | |
working-directory: ${{ inputs.package }} | |
- run: dart doc --dry-run | |
package-analysis: | |
# `axel-op/dart-package-analyzer` is using `flutter pub upgrade` instead of `get`, | |
# which ignores pubspec.yaml `dependency_overrides`. Because of that, all `release/*` branches are failing, | |
# because the package cannot find the "about to be released" version of our sentry-dart package that it depends on. | |
if: ${{ !startsWith(github.ref, 'refs/heads/release/') && inputs.panaThreshold > 0 }} | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Apply dependency override | |
if: ${{ inputs.package == 'flutter' }} | |
working-directory: ${{ inputs.package }} | |
run: | | |
sed -i.bak 's|sentry:.*|sentry:\n path: /github/workspace/dart|g' pubspec.yaml | |
- name: Ignore safe directory warning | |
run: git config --global --add safe.directory /github/workspace | |
- uses: axel-op/dart-package-analyzer@7a6c3c66bce78d82b729a1ffef2d9458fde6c8d2 # pin@v3 | |
id: analysis | |
run: git config --global --add safe.directory /github/workspace | |
with: | |
githubToken: ${{ secrets.GITHUB_TOKEN }} | |
relativePath: ${{ inputs.package }} | |
- name: Check scores | |
env: | |
TOTAL: ${{ steps.analysis.outputs.total }} | |
TOTAL_MAX: ${{ steps.analysis.outputs.total_max }} | |
run: | | |
PERCENTAGE=$(( $TOTAL * 100 / $TOTAL_MAX )) | |
if (( $PERCENTAGE < ${{ inputs.panaThreshold }} )) | |
then | |
echo Score too low! | |
exit 1 | |
fi |