Composite GitHub Action to setup and cache the Flutter SDK.
Caching Flutter will help to save some minutes.
Private repositories with Free plan has only 2,000 automation minutes/month.
And the minutes are counted as -
Linux - 1 minute counted as 1 regular minute.
Windows - 1 minute counted as 2 regular minutes.
macOS - 1 minute counted as 10 regular minutes.
Usage for the month can be seen in https://github.com/settings/billing
Below are the stats of before and after caching based on the following conditions -
- Time is the lowest recorded time of the 'Setup Flutter' step, from
the multiple runs of ci-compare.yml workflow.
- Ran on the same SHA of the Action.
- Ran on the same ref(SHA) of the Flutter SDK.
Step |
OS |
Time |
Setup Flutter (Before caching) |
ubuntu-latest |
44s |
windows-latest |
74s |
macos-latest |
60s |
Setup Flutter (After caching) |
ubuntu-latest |
10s |
windows-latest |
24s |
macos-latest |
15s |
- Flutter is installed via GitHub repository source and not via
https://storage.googleapis.com
source.
The later source comes with Installation Bundles.
See also, Flutter's Official Installation.
- GitHub will remove any cache entries that have not been accessed in over 7 days.
- This action is intended for the GitHub-hosted runners.
Not tested on the Self-hosted runners yet.
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: hrishikesh-kadam/setup-flutter@v1
- run: # Run your flutter or dart command here
description |
channel (stable, beta or master), version(3.7.8) or any git reference(3.9.0-0.1.pre). |
required |
false |
default |
'stable' |
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: hrishikesh-kadam/setup-flutter@v1
with:
ref: beta # or 3.7.8 or 3.9.0-0.1.pre
description |
Installation Path of Flutter SDK. |
required |
false |
default |
'${{ runner.tool_cache }}/flutter' |
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: hrishikesh-kadam/setup-flutter@v1
with:
installationPath: '${{ runner.tool_cache }}/flutter-foo'
description |
Cache Flutter SDK for subsequent GitHub Actions Workflow. |
required |
false |
default |
'true' |
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: hrishikesh-kadam/setup-flutter@v1
with:
actionsCache: 'false'
description |
An explicit key for a cache entry.
SHA of ref's HEAD will be appended to the given key.
Default key will be computed as `flutter-{OS}-{ref}-{ref_head}`.
|
required |
false |
default |
'' |
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: hrishikesh-kadam/setup-flutter@v1
with:
actionsCacheKey: 'flutter-${{ runner.os }}'
description |
Set FLUTTER_ROOT to path where Flutter is installed. |
required |
false |
default |
'false' |
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: hrishikesh-kadam/setup-flutter@v1
with:
setFlutterRootPath: 'true'
description |
Set PUB_CACHE to desired path, where pub saves dependencies. |
required |
false |
default |
'' |
my-job:
runs-on: ${{ matrix.runner }}
strategy:
matrix:
runner: [ ubuntu-latest, macos-latest ]
pubCachePath: [ '$HOME/.pub-cache' ]
include:
- runner: windows-latest
pubCachePath: '$LOCALAPPDATA\Pub\Cache'
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: hrishikesh-kadam/setup-flutter@v1
with:
setPubCachePath: ${{ matrix.pubCachePath }}
description |
Add PUB_CACHE bin to PATH.
Note: On Windows, activated global packages can be run by without specifying dart pub global run only on pwsh, cmd and powershell.
|
required |
false |
default |
'false' |
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: hrishikesh-kadam/setup-flutter@v1
with:
addPubCacheBinToPath: 'true'
- run: |
dart pub global activate dhttpd
dhttpd --help
description |
Populate the Flutter tool's cache of binary artifacts.
For additional download options, see flutter help precache .
|
required |
false |
default |
'false' |
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: hrishikesh-kadam/setup-flutter@v1
with:
flutterPrecache: 'true'
# will execute `flutter precache`
# flutterPrecache: '--linux --web'
# will execute `flutter precache --linux --web`