Compare commits

...

6 Commits

Author SHA1 Message Date
Peter Leibiger
1a449444c3 Simplify extraction of zip files (#379)
Some checks failed
test / test_channel (beta, false, https://gitee.com/harmonycommando_flutter/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (beta, false, https://github.com/Flutter-Foundation/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (beta, false, https://github.com/flutter/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (beta, true, https://gitee.com/harmonycommando_flutter/flutter.git, macos-latest) (push) Failing after 2s
test / test_channel (beta, true, https://github.com/Flutter-Foundation/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (beta, true, https://github.com/flutter/flutter.git, macos-latest) (push) Failing after 2s
test / test_channel (master, false, https://gitee.com/harmonycommando_flutter/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (master, false, https://github.com/Flutter-Foundation/flutter.git, macos-latest) (push) Failing after 2s
test / test_channel (master, false, https://github.com/flutter/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (master, true, https://gitee.com/harmonycommando_flutter/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (master, true, https://github.com/Flutter-Foundation/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (master, true, https://github.com/flutter/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (stable, false, https://gitee.com/harmonycommando_flutter/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (stable, false, https://github.com/Flutter-Foundation/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (stable, false, https://github.com/flutter/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (stable, true, https://gitee.com/harmonycommando_flutter/flutter.git, macos-latest) (push) Failing after 3s
test / test_channel (stable, true, https://github.com/Flutter-Foundation/flutter.git, macos-latest) (push) Failing after 4s
test / test_channel (stable, true, https://github.com/flutter/flutter.git, macos-latest) (push) Failing after 3s
test / test_cache (macos-latest) (push) Failing after 3s
test / test_master_version (macos-latest) (push) Failing after 3s
test / test_print_output_arm64 (push) Failing after 3s
test / lint_shellcheck (push) Successful in 14s
test / test_channel (beta, false, https://gitee.com/harmonycommando_flutter/flutter.git, ubuntu-latest) (push) Failing after 11s
test / test_channel (beta, false, https://github.com/Flutter-Foundation/flutter.git, ubuntu-latest) (push) Failing after 11s
test / test_channel (beta, false, https://github.com/flutter/flutter.git, ubuntu-latest) (push) Failing after 10s
test / test_channel (beta, true, https://gitee.com/harmonycommando_flutter/flutter.git, ubuntu-latest) (push) Failing after 10s
test / test_channel (beta, true, https://github.com/Flutter-Foundation/flutter.git, ubuntu-latest) (push) Failing after 10s
test / test_channel (beta, true, https://github.com/flutter/flutter.git, ubuntu-latest) (push) Failing after 10s
test / test_channel (main, ubuntu-latest) (push) Failing after 11s
test / test_channel (master, false, https://gitee.com/harmonycommando_flutter/flutter.git, ubuntu-latest) (push) Failing after 11s
test / test_channel (master, false, https://github.com/Flutter-Foundation/flutter.git, ubuntu-latest) (push) Failing after 11s
test / test_channel (master, false, https://github.com/flutter/flutter.git, ubuntu-latest) (push) Failing after 11s
test / test_channel (master, true, https://gitee.com/harmonycommando_flutter/flutter.git, ubuntu-latest) (push) Failing after 11s
test / test_channel (master, true, https://github.com/Flutter-Foundation/flutter.git, ubuntu-latest) (push) Failing after 11s
test / test_channel (master, true, https://github.com/flutter/flutter.git, ubuntu-latest) (push) Failing after 10s
test / test_channel (stable, false, https://gitee.com/harmonycommando_flutter/flutter.git, ubuntu-latest) (push) Failing after 10s
test / test_channel (stable, false, https://github.com/Flutter-Foundation/flutter.git, ubuntu-latest) (push) Failing after 10s
test / test_channel (stable, false, https://github.com/flutter/flutter.git, ubuntu-latest) (push) Failing after 13s
test / test_channel (stable, true, https://gitee.com/harmonycommando_flutter/flutter.git, ubuntu-latest) (push) Failing after 10s
test / test_channel (stable, true, https://github.com/Flutter-Foundation/flutter.git, ubuntu-latest) (push) Failing after 10s
test / test_channel (stable, true, https://github.com/flutter/flutter.git, ubuntu-latest) (push) Failing after 12s
test / test_cache (ubuntu-latest) (push) Failing after 11s
test / test_version_file (ubuntu-latest) (push) Failing after 11s
test / test_master_version (ubuntu-latest) (push) Failing after 11s
test / test_print_output_x64 (push) Failing after 8s
test / test_channel (beta, false, https://gitee.com/harmonycommando_flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (beta, false, https://github.com/Flutter-Foundation/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (beta, false, https://github.com/flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (beta, true, https://gitee.com/harmonycommando_flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (beta, true, https://github.com/Flutter-Foundation/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (beta, true, https://github.com/flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (master, false, https://gitee.com/harmonycommando_flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (master, false, https://github.com/Flutter-Foundation/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (stable, true, https://github.com/Flutter-Foundation/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (stable, true, https://github.com/flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_cache (windows-latest) (push) Has been cancelled
test / test_channel (master, false, https://github.com/flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (master, true, https://gitee.com/harmonycommando_flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (master, true, https://github.com/Flutter-Foundation/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (master, true, https://github.com/flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (stable, false, https://gitee.com/harmonycommando_flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (stable, false, https://github.com/Flutter-Foundation/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (stable, false, https://github.com/flutter/flutter.git, windows-latest) (push) Has been cancelled
test / test_channel (stable, true, https://gitee.com/harmonycommando_flutter/flutter.git, windows-latest) (push) Has been cancelled
* Simplify extraction of zip files in setup.sh

Refactor unzip command to directly extract to target directory.
By keeping the /flutter directory from inside the archive, we avoid having to use a temp directory and move afterwards.

* fix: checkout specific version on main/master
2026-03-25 11:24:42 +01:00
Bartek Pacia
4efee115f1 readme: minor updates (#392) 2026-03-18 17:23:45 +01:00
Bartek Pacia
d97c38e97d add a CI job that checks out a specific master commit (#391) 2026-03-18 17:00:36 +01:00
Bartek Pacia
75b905c640 chores (#390)
* readme: update note about yq

* readme: minor updates (semantic line breaks)

* checkout@v4 -> checkout@v6
2026-03-18 15:40:24 +01:00
Peter Leibiger
7ff07e9ecd Add separate pub-cache boolean flag (#377)
This allows to selectively enabled pub dependency caching. Uses backwards compatible default if only `cache: true` is set.

Also update README
2026-03-18 15:31:10 +01:00
Pedro Monteiro
6622f58c44 feat: fvm support (#383)
* feat: added support for .fvmrc files, so it can fetch the flutter version from there

* feat: changed README description of action to accomodate new changes
2026-03-18 14:18:09 +01:00
4 changed files with 122 additions and 72 deletions

View File

@@ -17,7 +17,7 @@ jobs:
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Run shellcheck - name: Run shellcheck
uses: ludeeus/action-shellcheck@master uses: ludeeus/action-shellcheck@master
@@ -42,7 +42,7 @@ jobs:
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- id: flutter-action - id: flutter-action
uses: ./ uses: ./
with: with:
@@ -83,7 +83,7 @@ jobs:
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- uses: ./ - uses: ./
with: with:
channel: stable channel: stable
@@ -103,7 +103,7 @@ jobs:
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- uses: ./ - uses: ./
with: with:
channel: stable channel: stable
@@ -115,6 +115,35 @@ jobs:
run: flutter --version | grep '3.3.10' run: flutter --version | grep '3.3.10'
shell: bash shell: bash
test_master_version:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ubuntu-latest, macos-latest]
steps:
- name: Clone repository
uses: actions/checkout@v6
- id: flutter-action
uses: ./
with:
channel: master
flutter-version: e6ed6e9e16782a24a912e79d3100c496600aae5b # some commit made on 18/03/2026
- name: Echo outputs
run: |
echo RUNNER-OS=${{ runner.os }}
echo RUNNER-ARCH=${{ runner.arch }}
echo CACHE-PATH=${{ steps.flutter-action.outputs.CACHE-PATH }}
echo CACHE-KEY=${{ steps.flutter-action.outputs.CACHE-KEY }}
echo CHANNEL=${{ steps.flutter-action.outputs.CHANNEL }}
echo VERSION=${{ steps.flutter-action.outputs.VERSION }}
echo ARCHITECTURE=${{ steps.flutter-action.outputs.ARCHITECTURE }}
shell: bash
- run: flutter --version
shell: bash
test_print_output_x64: test_print_output_x64:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -123,7 +152,7 @@ jobs:
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- run: ./setup.sh -t -p -f test/pubspec.yaml | grep '3.3.10' - run: ./setup.sh -t -p -f test/pubspec.yaml | grep '3.3.10'
shell: bash shell: bash
- run: ./setup.sh -t -p | grep 'stable' - run: ./setup.sh -t -p | grep 'stable'
@@ -220,7 +249,7 @@ jobs:
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- run: ./setup.sh -t -p -f test/pubspec.yaml | grep '3.3.10' - run: ./setup.sh -t -p -f test/pubspec.yaml | grep '3.3.10'
shell: bash shell: bash
- run: ./setup.sh -t -p | grep 'stable' - run: ./setup.sh -t -p | grep 'stable'

View File

@@ -1,7 +1,7 @@
# flutter-action # flutter-action
Flutter environment for use in GitHub Actions. It works on Linux, Windows, and Flutter environment for use in GitHub Actions.
macOS. It works on Linux, Windows, and macOS.
Originally created by [Alif Rachmawadi]. Maintained by [Bartek Pacia]. Originally created by [Alif Rachmawadi]. Maintained by [Bartek Pacia].
@@ -14,7 +14,7 @@ The following sections show how to configure this action.
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -23,19 +23,19 @@ steps:
- run: flutter --version - run: flutter --version
``` ```
### Use version from pubspec.yaml ### Use version from pubspec.yaml or FVM config
This is inspired by [`actions/setup-go`](https://github.com/actions/setup-go). This is inspired by [`actions/setup-go`](https://github.com/actions/setup-go).
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
channel: stable channel: stable
flutter-version-file: pubspec.yaml # path to pubspec.yaml flutter-version-file: pubspec.yaml # path to pubspec.yaml or .fvmrc or .fvm/fvm_config.json
- run: flutter --version - run: flutter --version
``` ```
@@ -63,16 +63,16 @@ steps:
> [!NOTE] > [!NOTE]
> >
> Using `flutter-version-file` requires [`yq`](https://github.com/mikefarah/yq), > Using `flutter-version-file` requires [`yq`](https://github.com/mikefarah/yq),
> which is not pre-installed in `windows` runners. Fortunately, since version > which is not pre-installed in `windows` runners.
> 2.18.0, this action installs `yq` automatically if `flutter-version-file` > This action installs `yq` automatically if `flutter-version-file` is specified,
> is specified, so no action is required from you. > so no action is required from you.
### Use latest release for particular channel ### Use latest release for particular channel
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -85,7 +85,7 @@ steps:
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -99,7 +99,7 @@ steps:
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -113,7 +113,7 @@ steps:
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -129,7 +129,7 @@ You can get more infomation from [Flutter official docs](https://docs.flutter.de
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
env: env:
FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn
@@ -145,13 +145,12 @@ steps:
This action supports "alternative Flutters" in addition to the official This action supports "alternative Flutters" in addition to the official
[`flutter/flutter`](https://github.com/flutter/flutter), for example: [`flutter/flutter`](https://github.com/flutter/flutter), for example:
- [Flock](https://github.com/join-the-flock/flock.git) - [Flock](https://github.com/join-the-flock/flock.git)
- [a Flutter fork that supports - [a Flutter fork that supports HarmonyOS](https://gitee.com/harmonycommando_flutter/flutter.git)
HarmonyOS](https://gitee.com/harmonycommando_flutter/flutter.git)
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -161,24 +160,18 @@ steps:
- run: flutter --version - run: flutter --version
``` ```
> [!NOTE]
>
> This feature was implemented in
> [#344](https://github.com/subosito/flutter-action/pull/334) and is available
> since v2.18.0.
### Apply a patch ### Apply a patch
Sometimes you find a bug in Flutter and you fix it yourself (you're a Sometimes you find a bug in Flutter and fix it yourself (you're a rockstar!),
rockstar!), and then submit a patch/PR to Flutter repository. However, everyone and then submit a patch/PR to Flutter repository.
knows that code review takes time, but your app needs the fix _now_. However, everyone knows that code review takes time, but your app needs the fix _now_.
You can apply your patch like this: You can apply your patch like this:
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- uses: subosito/flutter-action@v2 - uses: subosito/flutter-action@v2
with: with:
flutter-version: 3.22.2 flutter-version: 3.22.2
@@ -201,7 +194,7 @@ Build **Android** APK and app bundle:
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -224,7 +217,7 @@ jobs:
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -239,7 +232,7 @@ jobs:
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -257,7 +250,7 @@ jobs:
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -273,7 +266,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -296,7 +289,7 @@ jobs:
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
@@ -309,20 +302,21 @@ jobs:
Integration with [`actions/cache`](https://github.com/actions/cache): Integration with [`actions/cache`](https://github.com/actions/cache):
> [!IMPORTANT] > [!IMPORTANT]
> `subosito/flutter-action` now uses `actions/cache@v5` internally. If you use > `subosito/flutter-action` now uses `actions/cache@v5` internally.
> self-hosted runners, make sure they are updated to Actions Runner > If you use self-hosted runners, make sure they are updated
> `2.327.1` or newer before enabling cache support. > to Actions Runner `2.327.1` or newer before enabling cache support.
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
channel: stable channel: stable
cache: true cache: true
# optional parameters follow # optional parameters follow
pub-cache: true # optional, defaults to empty (falls back to cache value for backward compatibility)
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache of dart pub get dependencies pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache of dart pub get dependencies
@@ -330,6 +324,22 @@ steps:
- run: flutter --version - run: flutter --version
``` ```
> [!NOTE]
>
> **The `cache` and `pub-cache` inputs are independent and control different caches:**
> - `cache: true/false` - controls whether to cache the Flutter SDK installation
> - `pub-cache: true/false` - controls whether to cache the pub dependencies
>
> **Backward Compatibility:** When `pub-cache` is not specified (empty), it falls back to the `cache` value.
> This means existing workflows with `cache: true` automatically cache both Flutter SDK and pub dependencies.
>
> You can use them in any combination:
> - Both enabled: `cache: true` (`pub-cache` defaults to true for backward compatibility)
> - Both enabled explicitly: `cache: true` and `pub-cache: true`
> - Only Flutter SDK: `cache: true` and `pub-cache: false`
> - Only pub dependencies: `cache: false` and `pub-cache: true` for self-hosted runners
> - Neither: `cache: false` and `pub-cache: false` (or omit both)
Note: `cache-key`, `pub-cache-key`, and `cache-path` have support for several Note: `cache-key`, `pub-cache-key`, and `cache-path` have support for several
dynamic values: dynamic values:
@@ -350,10 +360,10 @@ dynamic values:
Example usage (inspired by [actions/cache@v5](https://github.com/actions/cache/blob/v5/README.md#skipping-steps-based-on-cache-hit) and [#346](https://github.com/subosito/flutter-action/pull/346)) to skip `melos bootstrap` if there was a pub cache hit: Example usage (inspired by [actions/cache@v5](https://github.com/actions/cache/blob/v5/README.md#skipping-steps-based-on-cache-hit) and [#346](https://github.com/subosito/flutter-action/pull/346)) to skip `melos bootstrap` if there was a pub cache hit:
``` ```yaml
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
@@ -377,7 +387,7 @@ Use outputs from `flutter-action`:
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
id: flutter-action id: flutter-action
@@ -403,7 +413,7 @@ If you don't need to install Flutter and just want the outputs, you can use the
```yaml ```yaml
steps: steps:
- name: Clone repository - name: Clone repository
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
id: flutter-action id: flutter-action

View File

@@ -15,7 +15,7 @@ inputs:
required: false required: false
default: "" default: ""
flutter-version-file: flutter-version-file:
description: The pubspec.yaml file with exact Flutter version defined description: The pubspec.yaml or FVM config file with exact Flutter version defined
required: false required: false
default: "" default: ""
architecture: architecture:
@@ -34,6 +34,10 @@ inputs:
description: Flutter SDK cache path description: Flutter SDK cache path
required: false required: false
default: "" default: ""
pub-cache:
description: Cache the Dart pub dependencies
required: false
default: ""
pub-cache-key: pub-cache-key:
description: Identifier for the Dart .pub-cache cache description: Identifier for the Dart .pub-cache cache
required: false required: false
@@ -91,7 +95,7 @@ runs:
# It's not preinstalled on Windows runners. # It's not preinstalled on Windows runners.
# See https://github.com/actions/runner-images/issues/7443#issuecomment-1514597691 # See https://github.com/actions/runner-images/issues/7443#issuecomment-1514597691
- name: Make yq tool available on Windows runners - name: Make yq tool available on Windows runners
if: runner.os == 'Windows' && inputs.flutter-version-file != '' if: runner.os == 'Windows' && inputs.flutter-version-file != '' && !endsWith(inputs.flutter-version-file, '.fvmrc') && !endsWith(inputs.flutter-version-file, 'fvm_config.json')
run: choco install yq run: choco install yq
shell: bash shell: bash
@@ -125,7 +129,7 @@ runs:
- name: Cache pub dependencies - name: Cache pub dependencies
uses: actions/cache@v5 uses: actions/cache@v5
id: cache-pub id: cache-pub
if: ${{ inputs.cache == 'true' }} if: ${{ (inputs.pub-cache == '' && inputs.cache == 'true') || inputs.pub-cache == 'true' }}
with: with:
path: ${{ steps.flutter-action.outputs.PUB-CACHE-PATH }} path: ${{ steps.flutter-action.outputs.PUB-CACHE-PATH }}
key: ${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}-${{ hashFiles('**/pubspec.lock') }} key: ${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}-${{ hashFiles('**/pubspec.lock') }}

View File

@@ -51,18 +51,10 @@ download_archive() {
case "$archive_name" in case "$archive_name" in
*.zip) *.zip)
EXTRACT_PATH="$RUNNER_TEMP/_unzip_temp" unzip -q -o "$archive_local" -d "$2"
unzip -q -o "$archive_local" -d "$EXTRACT_PATH"
# Remove the folder again so that the move command can do a simple rename
# instead of moving the content into the target folder.
# This is a little bit of a hack since the "mv --no-target-directory"
# linux option is not available here
rm -r "$2"
mv "$EXTRACT_PATH"/flutter "$2"
rm -r "$EXTRACT_PATH"
;; ;;
*) *)
tar xf "$archive_local" -C "$2" --strip-components=1 tar xf "$archive_local" -C "$2"
;; ;;
esac esac
@@ -92,9 +84,11 @@ while getopts 'tc:k:d:l:pa:n:f:g:' flag; do
n) VERSION="$OPTARG" ;; n) VERSION="$OPTARG" ;;
f) f)
VERSION_FILE="$OPTARG" VERSION_FILE="$OPTARG"
if [ -n "$VERSION_FILE" ] && ! check_command yq; then if [ -n "$VERSION_FILE" ]; then
echo "yq not found. Install it from https://mikefarah.gitbook.io/yq" if [[ "$VERSION_FILE" != *".fvmrc" ]] && [[ "$VERSION_FILE" != *"fvm_config.json" ]] && ! check_command yq; then
exit 1 echo "yq not found. Install it from https://mikefarah.gitbook.io/yq"
exit 1
fi
fi fi
;; ;;
g) GIT_SOURCE="$OPTARG" ;; g) GIT_SOURCE="$OPTARG" ;;
@@ -110,11 +104,24 @@ if [ -n "$VERSION_FILE" ]; then
exit 1 exit 1
fi fi
VERSION="$(yq eval '.environment.flutter' "$VERSION_FILE")" if [[ "$VERSION_FILE" == *".fvmrc" ]]; then
VERSION="$(jq -r '.flutter' "$VERSION_FILE")"
elif [[ "$VERSION_FILE" == *"fvm_config.json" ]]; then
VERSION="$(jq -r '.flutterSdkVersion // .flutter' "$VERSION_FILE")"
else
VERSION="$(yq eval '.environment.flutter' "$VERSION_FILE")"
fi
if [[ "$VERSION" == "stable" ]] || [[ "$VERSION" == "beta" ]] || [[ "$VERSION" == "master" ]] || [[ "$VERSION" == "main" ]]; then
CHANNEL="$VERSION"
VERSION="any"
fi
fi fi
ARR_CHANNEL=("${@:$OPTIND:1}") ARR_CHANNEL=("${@:$OPTIND:1}")
CHANNEL="${ARR_CHANNEL[0]:-}" if [ -z "${CHANNEL:-}" ]; then
CHANNEL="${ARR_CHANNEL[0]:-}"
fi
[ -z "$CHANNEL" ] && CHANNEL=stable [ -z "$CHANNEL" ] && CHANNEL=stable
[ -z "$VERSION" ] && VERSION=any [ -z "$VERSION" ] && VERSION=any
@@ -215,12 +222,12 @@ if [ "$PRINT_ONLY" = true ]; then
exit 0 exit 0
fi fi
if [ ! -x "$CACHE_PATH/bin/flutter" ]; then if [ ! -x "$CACHE_PATH/flutter/bin/flutter" ]; then
if [ "$CHANNEL" = "master" ] || [ "$CHANNEL" = "main" ]; then if [ "$CHANNEL" = "master" ] || [ "$CHANNEL" = "main" ]; then
git clone -b "$CHANNEL" "$GIT_SOURCE" "$CACHE_PATH" git clone -b "$CHANNEL" "$GIT_SOURCE" "$CACHE_PATH/flutter"
if [ "$VERSION" != "any" ]; then if [ "$VERSION" != "any" ]; then
git config --global --add safe.directory "$CACHE_PATH" git config --global --add safe.directory "$CACHE_PATH/flutter"
(cd "$CACHE_PATH" && git checkout "$VERSION") (cd "$CACHE_PATH/flutter" && git checkout "$VERSION")
fi fi
else else
archive_url=$(echo "$VERSION_MANIFEST" | jq -r '.archive') archive_url=$(echo "$VERSION_MANIFEST" | jq -r '.archive')
@@ -229,12 +236,12 @@ if [ ! -x "$CACHE_PATH/bin/flutter" ]; then
fi fi
{ {
echo "FLUTTER_ROOT=$CACHE_PATH" echo "FLUTTER_ROOT=$CACHE_PATH/flutter"
echo "PUB_CACHE=$PUB_CACHE" echo "PUB_CACHE=$PUB_CACHE"
} >>"${GITHUB_ENV:-/dev/null}" } >>"${GITHUB_ENV:-/dev/null}"
{ {
echo "$CACHE_PATH/bin" echo "$CACHE_PATH/flutter/bin"
echo "$CACHE_PATH/bin/cache/dart-sdk/bin" echo "$CACHE_PATH/flutter/bin/cache/dart-sdk/bin"
echo "$PUB_CACHE/bin" echo "$PUB_CACHE/bin"
} >>"${GITHUB_PATH:-/dev/null}" } >>"${GITHUB_PATH:-/dev/null}"