try safe directory #2
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 # pin@0.12.1 | |
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 # pin@v2.12.0 | |
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 # pin@v2.0.0 | |
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 | |
run: git config --system --add safe.directory '*' | |
- 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 | |
- uses: axel-op/dart-package-analyzer@7a6c3c66bce78d82b729a1ffef2d9458fde6c8d2 # pin@v3 | |
id: analysis | |
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 |