From d5c6307968a48b6bcd90a84fb7be3aad2aaafefe Mon Sep 17 00:00:00 2001 From: John Weidner Date: Wed, 20 Aug 2025 18:55:56 -0500 Subject: [PATCH 1/5] fix: license_check failed on flutter pkgs (issue 297) Now allow caller to specify a flutter_version or a dart_sdk version to indicate which dependencies to get. --- .github/workflows/license_check.yml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index e21db54..b876c35 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -15,6 +15,10 @@ on: required: false type: string default: "stable" + flutter_version: + description: 'Flutter SDK version to use' + required: false + type: string allowed: required: false type: string @@ -51,7 +55,18 @@ jobs: - name: 📚 Git Checkout uses: actions/checkout@v5 + - name: Check for conflicting SDK inputs + if: ${{ inputs.flutter_version != '' && inputs.dart_sdk != '' }} + run: echo "::warning::Both 'flutter_version' and 'dart_sdk' were specified. The workflow will proceed with the Flutter SDK setup." + + - name: Set up Flutter + if: ${{ inputs.flutter_version != '' }} + uses: subosito/flutter-action@v2 + with: + flutter-version: ${{inputs.flutter_version}} + - name: 🎯 Setup Dart + if: ${{ inputs.flutter_version == '' }} uses: dart-lang/setup-dart@v1 with: sdk: ${{inputs.dart_sdk}} @@ -64,10 +79,15 @@ jobs: with: ssh-private-key: ${{secrets.ssh_key}} - - name: 📦 Install Dependencies + - name: 📦 Install Dependencies for Flutter + if: ${{ inputs.flutter_version != '' }} + run: flutter pub get --no-example + + - name: 📦 Install Dependencies for Dart + if: ${{ inputs.flutter_version == '' }} run: dart pub get --no-example - name: 👨‍⚖️ Check licenses run: | dart pub global activate very_good_cli - dart pub global run very_good_cli:very_good packages check licenses --skip-packages=${{inputs.skip_packages}} --dependency-type=${{inputs.dependency_type}} ${{(inputs.ignore_retrieval_failures && '--ignore-retrieval-failures') || ''}} --allowed=${{inputs.allowed}} --forbidden=${{inputs.forbidden}} + dart pub global run very_good_cli:very_good packages check licenses --skip-packages=${{inputs.skip_packages}} --dependency-type=${{inputs.dependency_type}} ${{(inputs.ignore_retrieval_failures && '--ignore-retrieval-failures') || ''}} --allowed=${{inputs.allowed}} --forbidden=${{inputs.forbidden}} \ No newline at end of file From d2e2f22e20269311f5b670ee6de54d0e12d6e2fc Mon Sep 17 00:00:00 2001 From: John Weidner Date: Thu, 21 Aug 2025 17:58:14 -0500 Subject: [PATCH 2/5] Removed default from dart_sdk input so we can properly detect when a value is specified or not. But that requires us to use a step output variable to default to "stable" when no dart_sdk is specified. --- .github/workflows/license_check.yml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index b876c35..01076c6 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -12,9 +12,9 @@ on: type: string default: "ubuntu-latest" dart_sdk: + description: 'Dart SDK to use when no flutter_version is specified' required: false type: string - default: "stable" flutter_version: description: 'Flutter SDK version to use' required: false @@ -57,19 +57,29 @@ jobs: - name: Check for conflicting SDK inputs if: ${{ inputs.flutter_version != '' && inputs.dart_sdk != '' }} - run: echo "::warning::Both 'flutter_version' and 'dart_sdk' were specified. The workflow will proceed with the Flutter SDK setup." + run: | + echo "::warning::Both 'flutter_version' and 'dart_sdk' were specified. The workflow will proceed with the Flutter SDK setup." + echo " flutter_version = ${{ inputs.flutter_version }}" + echo " dart_sdk = ${{ inputs.dart_sdk }}" + + - name: Set Dart SDK Version + id: set_dart_version + run: | + echo "dart_sdk_version=${{ inputs.dart_sdk || 'stable' }}" >> $GITHUB_OUTPUT - - name: Set up Flutter + - name: 🦋Set up Flutter if: ${{ inputs.flutter_version != '' }} uses: subosito/flutter-action@v2 with: flutter-version: ${{inputs.flutter_version}} + cache: true + cache-key: flutter-:os:-:channel:-:version:-:arch:-:hash:-${{ hashFiles('**/pubspec.lock') }} - - name: 🎯 Setup Dart + - name: 🎯 Set up Dart if: ${{ inputs.flutter_version == '' }} uses: dart-lang/setup-dart@v1 with: - sdk: ${{inputs.dart_sdk}} + sdk: ${{steps.set_dart_version.outputs.dart_sdk_version}} - name: 🤫 Set SSH Key env: From ed339deb044f0cd41eb7d069942883ae7ed7bef1 Mon Sep 17 00:00:00 2001 From: John Weidner Date: Thu, 21 Aug 2025 22:01:08 -0500 Subject: [PATCH 3/5] Update documentation of the license_check workflow that is published at https://workflows.vgv.dev/docs/workflows/license_check --- site/docs/workflows/license_check.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/site/docs/workflows/license_check.md b/site/docs/workflows/license_check.md index 4dfc593..69f647a 100644 --- a/site/docs/workflows/license_check.md +++ b/site/docs/workflows/license_check.md @@ -35,10 +35,16 @@ The License Check workflow consists of the following steps: ### `dart_sdk` -**Optional** Which Dart SDK version to use. It can be a version (e.g. `3.5.0`) or a channel (e.g. `stable`): +**Optional** Which Dart SDK version to use. It can be a version (e.g. `3.5.0`) or a channel (e.g. `stable`). This parameter is ignored if a flutter_version is specified. **Default** `"stable"` +### `flutter_version` + +**Optional** Which Flutter SDK version to use. + +**Default** `""` + ### `allowed` **Optional** Only allow the use of certain licenses. The expected format is a comma-separated list. @@ -104,7 +110,8 @@ jobs: license_check: uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/license_check.yml@v1 with: - allowed: 'MIT,BSD-3-Clause,BSD-2-Clause,Apache-2.0' + flutter_version: "3.32.0" + allowed: 'MIT,BSD-3-Clause,BSD-2-Clause,Apache-2.0,Zlib' ``` The example [workflow file](https://docs.github.com/en/actions/quickstart#creating-your-first-workflow) will [trigger](https://docs.github.com/en/actions/using-workflows/triggering-a-workflow) the `license_check` job on every push to the `main` branch and on every pull request that modifies the `pubspec.yaml` or the `license_check.yaml` workflow file. From 980c1af6301047bd0ab27b60ffd025fe4f4c1c5e Mon Sep 17 00:00:00 2001 From: John Weidner Date: Fri, 22 Aug 2025 10:13:40 -0500 Subject: [PATCH 4/5] Change to use env vars as suggested in marcossevilla's code review --- .github/workflows/license_check.yml | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index 01076c6..d4d7d48 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -50,25 +50,27 @@ jobs: working-directory: ${{inputs.working_directory}} runs-on: ${{inputs.runs_on}} + env: + USE_FLUTTER: ${{ inputs.flutter_version != '' }} + USE_DART: ${{ inputs.flutter_version == '' }} + SHOW_DART_FLUTTER_WARNING: ${{ inputs.flutter_version != '' && inputs.dart_sdk != '' }} steps: - name: 📚 Git Checkout uses: actions/checkout@v5 - - name: Check for conflicting SDK inputs - if: ${{ inputs.flutter_version != '' && inputs.dart_sdk != '' }} - run: | - echo "::warning::Both 'flutter_version' and 'dart_sdk' were specified. The workflow will proceed with the Flutter SDK setup." - echo " flutter_version = ${{ inputs.flutter_version }}" - echo " dart_sdk = ${{ inputs.dart_sdk }}" + - name: Show warning if conflicting SDK inputs + if: ${{ env.SHOW_DART_FLUTTER_WARNING == 'true' }} + run: echo "::warning::Both 'flutter_version' and 'dart_sdk' were specified. The workflow will proceed with the Flutter SDK setup." - name: Set Dart SDK Version + if: ${{ env.USE_DART == 'true' }} id: set_dart_version run: | echo "dart_sdk_version=${{ inputs.dart_sdk || 'stable' }}" >> $GITHUB_OUTPUT - name: 🦋Set up Flutter - if: ${{ inputs.flutter_version != '' }} + if: ${{ env.USE_FLUTTER == 'true' }} uses: subosito/flutter-action@v2 with: flutter-version: ${{inputs.flutter_version}} @@ -76,11 +78,12 @@ jobs: cache-key: flutter-:os:-:channel:-:version:-:arch:-:hash:-${{ hashFiles('**/pubspec.lock') }} - name: 🎯 Set up Dart - if: ${{ inputs.flutter_version == '' }} + if: ${{ env.USE_DART == 'true' }} uses: dart-lang/setup-dart@v1 with: sdk: ${{steps.set_dart_version.outputs.dart_sdk_version}} + - name: 🤫 Set SSH Key env: ssh_key: ${{secrets.ssh_key}} @@ -90,11 +93,11 @@ jobs: ssh-private-key: ${{secrets.ssh_key}} - name: 📦 Install Dependencies for Flutter - if: ${{ inputs.flutter_version != '' }} + if: ${{ env.USE_FLUTTER == 'true' }} run: flutter pub get --no-example - name: 📦 Install Dependencies for Dart - if: ${{ inputs.flutter_version == '' }} + if: ${{ env.USE_DART == 'true' }} run: dart pub get --no-example - name: 👨‍⚖️ Check licenses From b1537052d35b8ffb0e654965bd7c75fe711c901e Mon Sep 17 00:00:00 2001 From: John Weidner Date: Fri, 22 Aug 2025 10:48:15 -0500 Subject: [PATCH 5/5] reformat license_check.md with Prettier --- site/docs/workflows/license_check.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/docs/workflows/license_check.md b/site/docs/workflows/license_check.md index 69f647a..a0601b3 100644 --- a/site/docs/workflows/license_check.md +++ b/site/docs/workflows/license_check.md @@ -110,7 +110,7 @@ jobs: license_check: uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/license_check.yml@v1 with: - flutter_version: "3.32.0" + flutter_version: '3.32.0' allowed: 'MIT,BSD-3-Clause,BSD-2-Clause,Apache-2.0,Zlib' ```