
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`