Compare commits

...

77 Commits
v2.5.0 ... v2

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
Bartek Pacia
0ca7a949e7 Remove macos-13 (Intel) runner from CI (#388)
macos-13 was retired by GitHub in December 2025 and no longer works.
Intel-based macOS runners are being phased out entirely by GitHub,
with only expensive *-large variants remaining as alternatives.

Closes #387

Made-with: Cursor
2026-03-17 13:23:10 +01:00
Azincc
de04a6aaec Upgrade actions/cache to v5 (#385) 2026-03-16 15:24:34 +07:00
Nicholas Beninato
fd55f4c5af Support dynamic values for PUB-CACHE-PATH (#363)
* use expand_key for PUB_CACHE_PATH

* add tests

* add dash

* use PUB_CACHE
2025-06-24 23:50:48 +02:00
Bartek Pacia
ca16aee0c3 fix broken links in README (#365) 2025-06-24 23:48:20 +02:00
Nicholas Beninato
947e9c91a5 Add cache hit outputs (#364)
* feat: impl cache hit outputs

* support flutter cache and pub cache outputs

* add cache output example to readme

* use cache step directly

* update readme

---------

Co-authored-by: anies1212 <all.for.me1212sna@gmail.com>
2025-06-24 23:41:32 +02:00
atishoo
395322a6cd use env if it existed (#360) 2025-06-10 09:21:26 +02:00
Christer Eliasi-Swahn
02d6ac3427 perf: Only install yq on Windows if used (#362) 2025-06-09 09:54:01 +02:00
Victor Eronmosele
e938fdf565 Update Flock's git URL in README (#347)
* Update Flock's git URL in README

* Update Flock's git URL in code sample
2025-03-24 21:47:02 +01:00
Peter Leibiger
bcafcd664b Fix PUB-CACHE-PATH output different to PUB_CACHE env variable (#348) 2025-03-24 21:46:39 +01:00
Luke Bonsey
1177d931c8 fix: remove restore keys (#349) 2025-03-24 21:42:03 +01:00
Koji Wakamiya
ce3cf2160d test: Split test cases by architecture (#305) 2024-12-20 10:31:11 +01:00
Bartek Pacia
f2c4f6686c fix syntax mistake in readme (#338) 2024-12-03 21:06:22 +01:00
Bartek Pacia
fd476281dd improve readme (#337) 2024-12-03 21:04:13 +01:00
ErBW_s
799318a131 feat: add git source support (#334)
* try to add git source support

* improve GIT_SOURCE output name

* fix syntax

---------

Co-authored-by: Bartek Pacia <barpac02@gmail.com>
2024-12-03 20:23:57 +01:00
Bartek Pacia
8535a80ce0 Feature/yq on windows (#336)
* install `yq` if runner.os is `windows`

* update readme with `yq` on windows info
2024-12-03 20:05:47 +01:00
Bartek Pacia
7642db7052 update readme (#335) 2024-12-03 19:58:13 +01:00
Thomas Aunvik
74af56c5ed Support older yq versions (#329) 2024-11-23 23:26:19 +01:00
Koji Wakamiya
9bc1d83fda Remove macos-14 from matrix (#304)
* fix: Fix conditional statements in workflow

* chore: Update operating system matrix
2024-11-23 23:26:02 +01:00
Bartek Pacia
bcec24ecf7 Fix failing tests (#327)
* try to fix failing tests

* continue on error

* remove Flutter versions that aren't available natively for arm64 macOS

* explicitly specify arch = x64 (`-a x64`)

* fix order of args

* remove redundant quotes

* make `dry-run` also accept bools
2024-08-21 02:53:58 +01:00
Bartek Pacia
94b32dd006 test action: allow to run manually (#325) 2024-08-20 02:09:15 +01:00
kzrnm
44ac965b96 Add dry-run (#270)
* Add dry-run

* Add dry-run test

* format

---------

Co-authored-by: Bartek Pacia <barpac02@gmail.com>
2024-04-02 14:25:52 +02:00
Bartek Pacia
980391a6c5 more README fixes (#292) 2024-04-01 04:09:25 +02:00
Bartek Pacia
3d80492992 update README (#291) 2024-04-01 04:07:29 +02:00
Bartek Pacia
0ef13f12a5 Add flutter-version-file (#290)
* update README with new info

* setup.sh: update arg parsing to add support for `flutter-version-file` as `-f pubspec.yaml`

* action.yaml: add flutter-version-file

* setup.sh: require `yq` only when -f option is specified

* fix tests and add a new one

* enable shell options: `errexit` and `nounset`

* move falling back to defaults to single place - setup.sh

* action.yaml: reduce number of arguments in the last invocation
2024-04-01 04:03:05 +02:00
Bartek Pacia
7564de34b3 Merge pull request #288 from subosito/chore/action_yaml_refactor
Split longer lines in action.yaml
2024-03-31 22:57:59 +02:00
Bartek Pacia
2b3ab6c7da convert some if-statements to be POSIX-compatible 2024-03-31 22:50:24 +02:00
Bartek Pacia
49cd17165c split longer lines 2024-03-31 22:15:17 +02:00
Bartek Pacia
cf12a39989 Merge pull request #287 from subosito/minor
workflow.yaml: minor fix
2024-03-31 22:08:41 +02:00
Bartek Pacia
cea4cf68a1 workflow.yaml: minor fix 2024-03-31 22:08:29 +02:00
Bartek Pacia
043862d930 Merge pull request #286 from subosito/format
Format
2024-03-31 22:07:58 +02:00
Bartek Pacia
e70699e140 file renames 2024-03-31 22:07:39 +02:00
Bartek Pacia
766e0c11bc minor readme format update 2024-03-31 19:52:05 +02:00
Bartek Pacia
7d86479cec Merge pull request #285 from subosito/format
Minor formatting changes
2024-03-31 19:37:58 +02:00
Bartek Pacia
86d4518859 format workflow.yml 2024-03-31 19:33:40 +02:00
Bartek Pacia
e2c456ecd7 format README 2024-03-31 19:31:02 +02:00
Bartek Pacia
46719f5374 format the action nicely 2024-03-31 19:21:19 +02:00
Bartek Pacia
54a6ca61b1 run prettier 2024-03-31 19:15:36 +02:00
Bartek Pacia
d3969fb775 Merge pull request #284 from niccokunzmann/patch-1
Restructure Documentation
2024-03-31 18:28:15 +02:00
Nicco Kunzmann
d32931db2f Structure Documentation
Adds sections: Flutter Version, Build Target, Cache
Bold build target names to find them more easily
2024-03-31 17:24:22 +01:00
Bartek Pacia
ab382cfb66 Merge pull request #281 from koji-1009/chore/m1_chip
chore: Add m1 chip macos machine
2024-03-31 17:24:36 +02:00
Richard Shiue
1c5eb12d81 fix: specify pub cache path (#280) 2024-03-20 11:20:53 +07:00
Koji Wakamiya
d1e0151b5f chore: Add m1 chip macos 2024-03-18 22:40:06 +09:00
Koji Wakamiya
62f096cacd Update README (#266)
* doc: Update README

* fix: Specify the dev channel version
2024-02-13 07:52:27 +07:00
Jørgen Tjernø
844082558d Improvements to caching (#265)
* Bump actions/cache to v4 to suppress node warnings

* Respect `PUB_CACHE` from the environment

* Cache pub-cache separately from flutter

In order to reduce the extra work that happens when you update your
pubspec.lock, don't use `hashFiles('**/pubspec.lock')` in the hash of
the flutter installation, and separately cache the `.pubspec-cache`.

Also return the `.pub-cache` to `$HOME`, since it's not part of the tool
installation.

* Fix README example of pub-cache-path and document `PUB_CACHE`
2024-02-13 07:13:38 +07:00
Koji Wakamiya
14bf5302ef Set architecture options from runner's architecture (#264)
* feat: Add ARCH_NAME variable and set default ARCH value

* chore: Show runner's os and architecture

* chore: Update actions
2024-02-05 09:06:33 +07:00
Devon Carew
02b923c0e1 add support for the main channel (#258)
* add support for the main channel

* update testing for the 'main' channel
2023-11-20 16:29:45 +07:00
Alif Rachmawadi
aa6d9b9844 update cache test 2023-11-01 18:11:33 +07:00
Alif Rachmawadi
2783a3f08e ensure setup.sh executable; fixes #245 2023-11-01 17:59:30 +07:00
Daren Hayward
c33c37022b Extract to a temporary location to enable moving of flutter folder. (#227) 2023-11-01 17:50:15 +07:00
Gustl22
cc97e1648f feat: Allow git ref as version in master channel (#237)
* feat: Allow git ref as version in `master` channel

* fix lint

* fix parsing

* fix test

* fix checkout, add tests

* replace with tab
2023-10-11 15:55:21 +07:00
Alif Rachmawadi
ed388baf1d fixes #224; update readme 2023-06-24 16:31:51 +07:00
Alif Rachmawadi
48cafc2471 re-add master channel support 2023-03-23 05:52:25 +07:00
Alif Rachmawadi
1508160852 adjust filter by arch 2023-03-22 08:45:49 +07:00
Alif Rachmawadi
88cab4064b add restore-keys cache support 2023-03-21 22:20:05 +07:00
Alif Rachmawadi
55a58f6493 make simpler 2023-03-21 21:49:20 +07:00
Alif Rachmawadi
d369dd765d make simpler 2023-03-21 21:46:00 +07:00
Alif Rachmawadi
42b3ed07e1 make simpler 2023-03-21 21:45:02 +07:00
Alif Rachmawadi
8dbc29a898 make simpler 2023-03-21 21:42:52 +07:00
Alif Rachmawadi
ed0e860e8f make simpler 2023-03-21 21:37:50 +07:00
Alif Rachmawadi
37734c707c update test fixtures 2023-03-21 21:31:03 +07:00
Alif Rachmawadi
b1ba330d99 update test fixtures 2023-03-21 21:25:27 +07:00
Alif Rachmawadi
43c32c5d3a update test fixtures 2023-03-21 20:55:50 +07:00
Alif Rachmawadi
dbf1fa04f4 Replace set-output with $GITHUB_OUTPUT; fixes #192 (#194)
* replace set-output with $GITHUB_OUTPUT

* use stdout for test mode

* update readme
2022-10-13 06:31:27 +07:00
Adrien Padol
1e6ee87cb8 Added missing parameter for cache-key (#187) 2022-09-17 07:11:03 +07:00
Alif Rachmawadi
45dd344cec github sponsor 2022-09-08 11:37:17 +07:00
Alif Rachmawadi
de3cdb9a4b enhance set output 2022-09-08 09:12:35 +07:00
Alif Rachmawadi
1e952778af enhance set output 2022-09-08 00:57:19 +07:00
Alif Rachmawadi
9d48f4efd5 use named arguments for version and arch 2022-08-25 17:24:16 +07:00
Alif Rachmawadi
6c2e035f26 fix test manifest load 2022-07-26 17:47:54 +07:00
Alif Rachmawadi
c30358aafe dynamic cache path 2022-07-26 13:20:39 +07:00
Alif Rachmawadi
472d887f68 update readme 2022-07-26 11:56:47 +07:00
11 changed files with 2487 additions and 410 deletions

1
.github/FUNDING.yaml vendored Normal file
View File

@@ -0,0 +1 @@
github: [subosito]

314
.github/workflows/workflow.yaml vendored Normal file
View File

@@ -0,0 +1,314 @@
name: test
on:
workflow_dispatch:
push:
branches:
- main
- dev
pull_request:
paths:
- setup.sh
- action.yaml
- .github/workflows/workflow.yaml
jobs:
lint_shellcheck:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v6
- name: Run shellcheck
uses: ludeeus/action-shellcheck@master
test_channel:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system:
- ubuntu-latest
- windows-latest
- macos-latest
channel: [stable, beta, master]
dry-run: [true, false]
git-source:
- https://github.com/flutter/flutter.git
- https://github.com/Flutter-Foundation/flutter.git
- https://gitee.com/harmonycommando_flutter/flutter.git
include:
- operating-system: ubuntu-latest
channel: main
steps:
- name: Clone repository
uses: actions/checkout@v6
- id: flutter-action
uses: ./
with:
channel: ${{ matrix.channel }}
dry-run: ${{ matrix.dry-run }}
git-source: ${{ matrix.git-source }}
- 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: dart --version
if: ${{ matrix.dry-run != true }}
shell: bash
- run: flutter --version
if: ${{ matrix.dry-run != true }}
shell: bash
- run: "! dart --version"
if: ${{ matrix.dry-run == true }}
shell: bash
- run: "! flutter --version"
if: ${{ matrix.dry-run == true }}
shell: bash
test_cache:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system:
[ubuntu-latest, windows-latest, macos-latest]
steps:
- name: Clone repository
uses: actions/checkout@v6
- uses: ./
with:
channel: stable
flutter-version: 3.10.6
cache: true
- run: dart --version
shell: bash
- run: flutter --version
shell: bash
test_version_file:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ubuntu-latest]
steps:
- name: Clone repository
uses: actions/checkout@v6
- uses: ./
with:
channel: stable
flutter-version-file: test/pubspec.yaml
- name: Verify Dart version
run: dart --version | grep '2.18.6'
shell: bash
- name: Verify Flutter version
run: flutter --version | grep '3.3.10'
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:
runs-on: ubuntu-latest
# These calls to setup.sh sepcify the -t flag, which enables test mode.
# Test mode uses hardcoded Flutter release manifests from test/ directory.
steps:
- name: Clone repository
uses: actions/checkout@v6
- run: ./setup.sh -t -p -f test/pubspec.yaml | grep '3.3.10'
shell: bash
- run: ./setup.sh -t -p | grep 'stable'
shell: bash
- run: ./setup.sh -t -p | grep '3.7.7'
shell: bash
- run: ./setup.sh -t -p | grep 'x64'
shell: bash
- run: ./setup.sh -t -p stable | grep 'stable'
shell: bash
- run: ./setup.sh -t -p beta | grep 'beta'
shell: bash
- run: ./setup.sh -t -p beta | grep '3.9.0-0.1.pre'
shell: bash
- run: ./setup.sh -t -p -n 3.3.10 stable | grep '3.3.10'
shell: bash
- run: ./setup.sh -t -p -n 3.3.1 stable | grep '3.3.1'
shell: bash
- run: ./setup.sh -t -p -n 2 stable | grep '2.10.5'
shell: bash
- run: ./setup.sh -t -p -n 2 beta | grep '2.13.0-0.4.pre'
shell: bash
- run: ./setup.sh -t -p -n 2 any | grep 'beta'
shell: bash
- run: ./setup.sh -t -p -n 2 any | grep '2.13.0-0.4.pre'
shell: bash
- run: ./setup.sh -t -p -n 3 any | grep 'beta'
shell: bash
- run: ./setup.sh -t -p -n 3 any | grep '3.9.0-0.1.pre'
shell: bash
- run: ./setup.sh -t -p -n 3 any | grep 'x64'
shell: bash
- run: ./setup.sh -t -p -n any stable | grep 'stable'
shell: bash
- run: ./setup.sh -t -p -n any stable | grep '3.7.7'
shell: bash
- run: ./setup.sh -t -p -n any stable | grep 'x64'
shell: bash
- run: ./setup.sh -t -p -n 1 stable | grep '1.22.6'
shell: bash
- run: ./setup.sh -t -p -n 0 any | grep 'beta'
shell: bash
- run: ./setup.sh -t -p -n 0 any | grep '0.11.13'
shell: bash
- run: ./setup.sh -t -p | grep 'flutter-linux-stable-3.7.7-x64-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash
- run: ./setup.sh -t -p stable | grep 'flutter-linux-stable-3.7.7-x64-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash
- run: ./setup.sh -t -p beta | grep 'flutter-linux-beta-3.9.0-0.1.pre-x64-f732038a8cf4562ce38a1d7debb30209ae3da896'
shell: bash
- run: ./setup.sh -t -p dev | grep 'flutter-linux-dev-2.13.0-0.1.pre-x64-13a2fb10b838971ce211230f8ffdd094c14af02c'
shell: bash
- run: ./setup.sh -t -p master | grep 'flutter-linux-master-any-x64-master'
shell: bash
- run: ./setup.sh -t -p -n 5b12b74 master | grep 'flutter-linux-master-5b12b74-x64-master'
shell: bash
- run: ./setup.sh -t -p -n 3.12.0-12.0.pre master | grep 'flutter-linux-master-3.12.0-12.0.pre-x64-master'
shell: bash
- run: ./setup.sh -t -p -n stable master | grep 'flutter-linux-master-stable-x64-master'
shell: bash
- run: ./setup.sh -t -p -n 2 any | grep 'flutter-linux-beta-2.13.0-0.4.pre-x64-25caf1461b8f643092a9f6f5b224453b5c057d10'
shell: bash
- run: ./setup.sh -t -p -n 1 any | grep 'flutter-linux-beta-1.26.0-17.8.pre-x64-044f2cf5607a26f8818dab0f766400e85c52bdff'
shell: bash
- run: ./setup.sh -t -p -n 0 any | grep 'flutter-linux-beta-0.11.13-x64-58c8489fcdb4e4ef6c010117584c9b23d15221aa'
shell: bash
- run: ./setup.sh -t -p | grep '/opt/hostedtoolcache/flutter/stable-3.7.7-x64'
shell: bash
- run: ./setup.sh -t -p stable | grep '/opt/hostedtoolcache/flutter/stable-3.7.7-x64'
shell: bash
- run: ./setup.sh -t -p beta | grep '/opt/hostedtoolcache/flutter/beta-3.9.0-0.1.pre-x64'
shell: bash
- run: ./setup.sh -t -p dev | grep '/opt/hostedtoolcache/flutter/dev-2.13.0-0.1.pre-x64'
shell: bash
- run: ./setup.sh -t -p master | grep '/opt/hostedtoolcache/flutter/master-any-x64'
shell: bash
- run: ./setup.sh -t -p -k 'custom-:channel:-:version:-:hash:' | grep 'custom-stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash
- run: ./setup.sh -t -p -k 'custom-:channel:-:version:-:sha256:' | grep 'custom-stable-3.7.7-cdd49597e88c35e5de5184e9acff433dfbb3c075b74ef7b27790af7f57ce2420'
shell: bash
- run: ./setup.sh -t -p -c '/tmp/flutter/:channel:-:version:-:hash:' | grep '/tmp/flutter/stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash
- run: ./setup.sh -t -p -d '/tmp/flutter/:channel:-:version:-:hash:-pub-cache-path' | grep '/tmp/flutter/stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da-pub-cache-path'
shell: bash
- run: ./setup.sh -t -p -l '/tmp/flutter/:channel:-:version:-:hash:-pub-cache-key' | grep '/tmp/flutter/stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da-pub-cache-key'
shell: bash
test_print_output_arm64:
runs-on: macos-latest
# These calls to setup.sh sepcify the -t flag, which enables test mode.
# Test mode uses hardcoded Flutter release manifests from test/ directory.
steps:
- name: Clone repository
uses: actions/checkout@v6
- run: ./setup.sh -t -p -f test/pubspec.yaml | grep '3.3.10'
shell: bash
- run: ./setup.sh -t -p | grep 'stable'
shell: bash
- run: ./setup.sh -t -p | grep '3.7.7'
shell: bash
- run: ./setup.sh -t -p | grep 'arm64'
shell: bash
- run: ./setup.sh -t -p stable | grep 'stable'
shell: bash
- run: ./setup.sh -t -p beta | grep 'beta'
shell: bash
- run: ./setup.sh -t -p beta | grep '3.9.0-0.1.pre'
shell: bash
- run: ./setup.sh -t -p -n 3.3.10 stable | grep '3.3.10'
shell: bash
- run: ./setup.sh -t -p -n 3.3.1 stable | grep '3.3.1'
shell: bash
- run: ./setup.sh -t -p -n 3 any | grep 'beta'
shell: bash
- run: ./setup.sh -t -p -n 3 any | grep '3.9.0-0.1.pre'
shell: bash
- run: ./setup.sh -t -p -n 3 -a arm64 any | grep 'arm64'
shell: bash
- run: ./setup.sh -t -p -n any -a arm64 stable | grep 'stable'
shell: bash
- run: ./setup.sh -t -p -n any -a arm64 stable | grep '3.7.7'
shell: bash
- run: ./setup.sh -t -p -n any -a arm64 stable | grep 'arm64'
shell: bash
- run: ./setup.sh -t -p | grep 'flutter-macos-stable-3.7.7-arm64-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash
- run: ./setup.sh -t -p stable | grep 'flutter-macos-stable-3.7.7-arm64-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash
- run: ./setup.sh -t -p beta | grep 'flutter-macos-beta-3.9.0-0.1.pre-arm64-8b9b90e75107181aadc303d8d7422205863a35dd'
shell: bash
- run: ./setup.sh -t -p master | grep 'flutter-macos-master-any-arm64-master'
shell: bash
- run: ./setup.sh -t -p -n 5b12b74 master | grep 'flutter-macos-master-5b12b74-arm64-master'
shell: bash
- run: ./setup.sh -t -p -n 3.12.0-12.0.pre master | grep 'flutter-macos-master-3.12.0-12.0.pre-arm64-master'
shell: bash
- run: ./setup.sh -t -p -n stable master | grep 'flutter-macos-master-stable-arm64-master'
shell: bash
- run: ./setup.sh -t -p | grep '/Users/runner/hostedtoolcache/flutter/stable-3.7.7-arm64'
shell: bash
- run: ./setup.sh -t -p stable | grep '/Users/runner/hostedtoolcache/flutter/stable-3.7.7-arm64'
shell: bash
- run: ./setup.sh -t -p beta | grep '/Users/runner/hostedtoolcache/flutter/beta-3.9.0-0.1.pre-arm64'
shell: bash
- run: ./setup.sh -t -p master | grep '/Users/runner/hostedtoolcache/flutter/master-any-arm64'
shell: bash
- run: ./setup.sh -t -p -k 'custom-:channel:-:version:-:hash:' | grep 'custom-stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash
- run: ./setup.sh -t -p -k 'custom-:channel:-:version:-:sha256:' | grep 'custom-stable-3.7.7-0511b9f164a62f467b063e6c83d9c683bb3fb056ee556b2f45e987a2c2f4a260'
shell: bash
- run: ./setup.sh -t -p -c '/tmp/flutter/:channel:-:version:-:hash:' | grep '/tmp/flutter/stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash
- run: ./setup.sh -t -p -d '/tmp/flutter/:channel:-:version:-:hash:-pub-cache-path' | grep '/tmp/flutter/stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da-pub-cache-path'
shell: bash
- run: ./setup.sh -t -p -l '/tmp/flutter/:channel:-:version:-:hash:-pub-cache-key' | grep '/tmp/flutter/stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da-pub-cache-key'
shell: bash

View File

@@ -1,113 +0,0 @@
name: Main workflow
on:
push:
branches:
- main
pull_request:
paths:
- setup.sh
- action.yml
jobs:
lint_shellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ludeeus/action-shellcheck@master
test_channel:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ubuntu-latest, windows-latest, macos-latest]
channel: [stable, beta, master]
steps:
- uses: actions/checkout@v3
- uses: ./
with:
channel: ${{ matrix.channel }}
- run: dart --version
shell: bash
- run: flutter --version
shell: bash
test_cache:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v3
- uses: ./
with:
channel: stable
cache: true
- run: dart --version
shell: bash
- run: flutter --version
shell: bash
test_version:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- run: ./setup.sh -p version | grep -x 'stable:any:x64|stable:3.0.5:x64'
shell: bash
- run: ./setup.sh -p version stable | grep -x 'stable:any:x64|stable:3.0.5:x64'
shell: bash
- run: ./setup.sh -p version beta | grep -x 'beta:any:x64|beta:3.1.0-9.0.pre:x64'
shell: bash
- run: ./setup.sh -p version master | grep -x 'master:master:x64|master:master:x64'
shell: bash
- run: ./setup.sh -p version stable 2 | grep -x 'stable:2:x64|stable:2.10.5:x64'
shell: bash
- run: ./setup.sh -p version beta 2 | grep -x 'beta:2:x64|beta:2.13.0-0.4.pre:x64'
shell: bash
- run: ./setup.sh -p version any 2 | grep -x 'any:2:x64|beta:2.13.0-0.4.pre:x64'
shell: bash
- run: ./setup.sh -p version any 3 | grep -x 'any:3:x64|stable:3.0.5:x64'
shell: bash
- run: ./setup.sh -p version any 3 arm64 | grep -x 'any:3:arm64|stable:3.0.5:arm64'
shell: bash
- run: ./setup.sh -p version stable any arm64 | grep -x 'stable:any:arm64|stable:3.0.5:arm64'
shell: bash
- run: ./setup.sh -p version stable 1 | grep -x 'stable:1:x64|stable:1.22.6:x64'
shell: bash
- run: ./setup.sh -p version stable v1 | grep -x 'stable:v1:x64|stable:v1.12.13+hotfix.9:x64'
shell: bash
- run: ./setup.sh -p version any 0 | grep -x 'any:0:x64|beta:v0.11.13:x64'
shell: bash
- run: ./setup.sh -p version any v0 | grep -x 'any:v0:x64|beta:v0.11.13:x64'
shell: bash
test_cache_key:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- run: ./setup.sh -p cache-key | grep -x 'flutter-macos-x64-stable-3.0.5-f1875d570e39de09040c8f79aa13cc56baab8db1'
shell: bash
- run: ./setup.sh -p cache-key stable | grep -x 'flutter-macos-x64-stable-3.0.5-f1875d570e39de09040c8f79aa13cc56baab8db1'
shell: bash
- run: ./setup.sh -p cache-key beta | grep -x 'flutter-macos-x64-beta-3.1.0-9.0.pre-f28e570c8cb12a004fae2d796d0d9cd46603bde9'
shell: bash
- run: ./setup.sh -p cache-key master | grep -x 'flutter-macos-x64-master-master-master'
shell: bash
- run: ./setup.sh -p cache-key stable 2 | grep -x 'flutter-macos-x64-stable-2.10.5-5464c5bac742001448fe4fc0597be939379f88ea'
shell: bash
- run: ./setup.sh -p cache-key beta 2 | grep -x 'flutter-macos-x64-beta-2.13.0-0.4.pre-25caf1461b8f643092a9f6f5b224453b5c057d10'
shell: bash
- run: ./setup.sh -p cache-key any 2 | grep -x 'flutter-macos-x64-beta-2.13.0-0.4.pre-25caf1461b8f643092a9f6f5b224453b5c057d10'
shell: bash
- run: ./setup.sh -p cache-key any 3 | grep -x 'flutter-macos-x64-stable-3.0.5-f1875d570e39de09040c8f79aa13cc56baab8db1'
shell: bash
- run: ./setup.sh -p cache-key any 3 arm64 | grep -x 'flutter-macos-arm64-stable-3.0.5-f1875d570e39de09040c8f79aa13cc56baab8db1'
shell: bash
- run: ./setup.sh -p cache-key stable any arm64 | grep -x 'flutter-macos-arm64-stable-3.0.5-f1875d570e39de09040c8f79aa13cc56baab8db1'
shell: bash
- run: ./setup.sh -p cache-key stable 1 | grep -x 'flutter-macos-x64-stable-1.22.6-9b2d32b605630f28625709ebd9d78ab3016b2bf6'
shell: bash
- run: ./setup.sh -p cache-key stable v1 | grep -x 'flutter-macos-x64-stable-v1.12.13+hotfix.9-f139b11009aeb8ed2a3a3aa8b0066e482709dde3'
shell: bash
- run: ./setup.sh -p cache-key any 0 | grep -x 'flutter-macos-x64-beta-v0.11.13-58c8489fcdb4e4ef6c010117584c9b23d15221aa'
shell: bash
- run: ./setup.sh -p cache-key any v0 | grep -x 'flutter-macos-x64-beta-v0.11.13-58c8489fcdb4e4ef6c010117584c9b23d15221aa'
shell: bash
- run: ./setup.sh -p cache-key -k 'custom-:channel:-:version:-:hash:' | grep -x 'custom-stable-3.0.5-f1875d570e39de09040c8f79aa13cc56baab8db1'
shell: bash
- run: ./setup.sh -p cache-key -k 'custom-:channel:-:version:-:sha256:' | grep -x 'custom-stable-3.0.5-e79a04dcfd1b583e5831433fc200800ba0d1e9fe4567cb661479bd2542d4c685'
shell: bash

476
README.md
View File

@@ -1,173 +1,437 @@
# flutter-action
Flutter environment for use in GitHub Actions. It works on Linux, Windows, and macOS.
Flutter environment for use in GitHub Actions.
It works on Linux, Windows, and macOS.
## Usage
Originally created by [Alif Rachmawadi]. Maintained by [Bartek Pacia].
Use specific version and channel:
The following sections show how to configure this action.
## Specifying Flutter version
### Use specific version and channel
```yaml
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.0.5'
channel: 'stable'
- run: flutter --version
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: 3.19.0
- run: flutter --version
```
Use latest release for particular channel:
### Use version from pubspec.yaml or FVM config
This is inspired by [`actions/setup-go`](https://github.com/actions/setup-go).
```yaml
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable' # or: 'beta' or 'master'
- run: flutter --version
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version-file: pubspec.yaml # path to pubspec.yaml or .fvmrc or .fvm/fvm_config.json
- run: flutter --version
```
Use latest release for particular version and/or channel:
> [!IMPORTANT]
>
> For `flutter-version-file` to work, you need to have the exact Flutter version
> defined in your pubspec.yaml:
>
> **Good**
>
> ```yaml
> environment:
> sdk: ">=3.3.0 <4.0.0"
> flutter: 3.19.0
> ```
>
> **Bad**
>
> ```yaml
> environment:
> sdk: ">=3.3.0 <4.0.0"
> flutter: ">= 3.19.0 <4.0.0"
> ```
> [!NOTE]
>
> Using `flutter-version-file` requires [`yq`](https://github.com/mikefarah/yq),
> which is not pre-installed in `windows` runners.
> This action installs `yq` automatically if `flutter-version-file` is specified,
> so no action is required from you.
### Use latest release for particular channel
```yaml
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
flutter-version: '1.22.x' # or, you can use 1.22
channel: 'dev'
- run: flutter --version
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable # or: beta, master (or main)
- run: flutter --version
```
Use particular version on any channel:
### Use latest release for particular version and/or channel
```yaml
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
flutter-version: '2.x'
channel: 'any'
- run: flutter --version
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: dev
flutter-version: 1.22.x
- run: flutter --version
```
Build Android APK and app bundle:
### Use particular version on any channel
```yaml
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.0.5'
- run: flutter pub get
- run: flutter test
- run: flutter build apk
- run: flutter build appbundle
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: any
flutter-version: 3.x
- run: flutter --version
```
Build for iOS (macOS only):
### Use particular git reference on master channel
```yaml
steps:
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: master
flutter-version: 5b12b74 # tag, commit or branch
- run: flutter --version
```
### Use a Flutter mirror by set ENV
You can get more infomation from [Flutter official docs](https://docs.flutter.dev/community/china).
```yaml
steps:
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
env:
FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn
uses: subosito/flutter-action@v2
with:
channel: master
flutter-version: 5b12b74 # tag, commit or branch
- run: flutter --version
```
### Use alternative Flutter repository
This action supports "alternative Flutters" in addition to the official
[`flutter/flutter`](https://github.com/flutter/flutter), for example:
- [Flock](https://github.com/join-the-flock/flock.git)
- [a Flutter fork that supports HarmonyOS](https://gitee.com/harmonycommando_flutter/flutter.git)
```yaml
steps:
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: master
flutter-version: 3.24.0
git-source: https://github.com/join-the-flock/flock.git
- run: flutter --version
```
### Apply a patch
Sometimes you find a bug in Flutter and fix it yourself (you're a rockstar!),
and then submit a patch/PR to Flutter repository.
However, everyone knows that code review takes time, but your app needs the fix _now_.
You can apply your patch like this:
```yaml
steps:
- name: Clone repository
uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
flutter-version: 3.22.2
channel: stable
- run: |
flutter --version
cd ${{ env.FLUTTER_ROOT }}
curl https://patch-diff.githubusercontent.com/raw/flutter/flutter/pull/137874.patch | git apply
git status
```
> [!NOTE]
>
> This was first discussed in [this issue](https://github.com/subosito/flutter-action/issues/310).
## Build targets
Build **Android** APK and app bundle:
```yaml
steps:
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: 3.24.0
- run: flutter pub get
- run: flutter test
- run: flutter build apk
- run: flutter build appbundle
```
### Build for iOS
> [!NOTE]
>
> Building for iOS requires a macOS runner.
```yaml
jobs:
build:
main:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
architecture: x64
- run: flutter pub get
- run: flutter test
- run: flutter build ios --release --no-codesign
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- run: flutter pub get
- run: flutter test
- run: flutter build ios --release --no-codesign
```
Build for the web:
### Build for the web
```yaml
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
- run: flutter pub get
- run: flutter test
- run: flutter build web
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- run: flutter pub get
- run: flutter test
- run: flutter build web
```
Build for Windows:
### Build for Windows
```yaml
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'beta'
- run: flutter config --enable-windows-desktop
- run: flutter build windows
main:
runs-on: windows-latest
steps:
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- run: flutter build windows
```
Build for Linux desktop:
### Build for Linux desktop
```yaml
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
- run: |
sudo apt-get update -y
sudo apt-get install -y ninja-build libgtk-3-dev
- run: flutter config --enable-linux-desktop
- run: flutter build linux
main:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- run: |
sudo apt-get update -y
sudo apt-get install -y ninja-build libgtk-3-dev
- run: flutter build linux
```
Build for macOS desktop:
### Build for macOS desktop
> [!NOTE]
>
> Building for macOS requires a macOS runner.
```yaml
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
architecture: x64
- run: flutter config --enable-macos-desktop
- run: flutter build macos
main:
runs-on: macos-latest
steps:
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- run: flutter build macos
```
Integration with `actions/cache`:
## Caching
Integration with [`actions/cache`](https://github.com/actions/cache):
> [!IMPORTANT]
> `subosito/flutter-action` now uses `actions/cache@v5` internally.
> If you use self-hosted runners, make sure they are updated
> to Actions Runner `2.327.1` or newer before enabling cache support.
```yaml
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:arch:-:channel:-:version:-:hash:' # optional, change this to force refresh cache
cache-path: ${{ runner.tool_cache }}/flutter # optional, change this to specify the cache path
architecture: x64 # optional, x64 or arm64
- run: flutter --version
- name: Clone repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
# 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-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-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
- run: flutter --version
```
Note: `cache-key` has support for several dynamic values:
> [!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
dynamic values:
- `:os:`
- `:arch:`
- `:channel:`
- `:version:`
- `:arch:`
- `:hash:`
- `:sha256:`
### Using cache outputs
> [!NOTE]
> `PUB-CACHE-HIT` and `CACHE-HIT` directly use the `cache-hit` output from `actions/cache@v5`, which is the following:
> - `cache-hit` - A string value to indicate an exact match was found for the key.
> - If there's a cache hit, this will be 'true' or 'false' to indicate if there's an exact match for `key`.
> - If there's a cache miss, this will be an empty string.
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:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
id: flutter-action
with:
channel: stable
cache: true
- name: Conditionally run melos bootstrap
if: steps.flutter-action.outputs.PUB-CACHE-HIT != 'true'
run: melos bootstrap
- name: Continue with build
run: flutter build apk
```
## Outputs
Use outputs from `flutter-action`:
```yaml
steps:
- name: Clone repository
- uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
id: flutter-action
with:
channel: stable
- name: Print outputs
shell: bash
run: |
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 }}
echo PUB-CACHE-PATH=${{ steps.flutter-action.outputs.PUB-CACHE-PATH }}
echo PUB-CACHE-KEY=${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}
echo CACHE-HIT=${{ steps.flutter-action.outputs.CACHE-HIT }}
echo PUB-CACHE-HIT=${{ steps.flutter-action.outputs.PUB-CACHE-HIT }}
```
If you don't need to install Flutter and just want the outputs, you can use the
`dry-run` option:
```yaml
steps:
- name: Clone repository
- uses: actions/checkout@v6
- name: Set up Flutter
uses: subosito/flutter-action@v2
id: flutter-action
with:
channel: stable
dry-run: true
- run: |
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 }}
echo PUB-CACHE-PATH=${{ steps.flutter-action.outputs.PUB-CACHE-PATH }}
echo PUB-CACHE-KEY=${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}
echo CACHE-HIT=${{ steps.flutter-action.outputs.CACHE-HIT }}
echo PUB-CACHE-HIT=${{ steps.flutter-action.outputs.PUB-CACHE-HIT }}
shell: bash
```
[Alif Rachmawadi]: https://github.com/subosito
[Bartek Pacia]: https://github.com/bartekpacia

146
action.yaml Normal file
View File

@@ -0,0 +1,146 @@
name: Set up Flutter
description: Setup your runner with Flutter environment
author: Alif Rachmawadi
branding:
icon: maximize
color: blue
inputs:
channel:
description: The Flutter build release channel
required: false
default: stable
flutter-version:
description: The Flutter version to make available on the path
required: false
default: ""
flutter-version-file:
description: The pubspec.yaml or FVM config file with exact Flutter version defined
required: false
default: ""
architecture:
description: The architecture of Flutter SDK executable (x64 or arm64)
required: false
default: "${{ runner.arch }}"
cache:
description: Cache the Flutter SDK
required: false
default: "false"
cache-key:
description: Identifier for the Flutter SDK cache
required: false
default: ""
cache-path:
description: Flutter SDK cache path
required: false
default: ""
pub-cache:
description: Cache the Dart pub dependencies
required: false
default: ""
pub-cache-key:
description: Identifier for the Dart .pub-cache cache
required: false
default: ""
pub-cache-path:
description: Flutter pub cache path
required: false
default: default
dry-run:
description: If true, get outputs but do not install Flutter
required: false
default: "false"
git-source:
description: Git clone source
required: false
default: "https://github.com/flutter/flutter.git"
outputs:
CHANNEL:
value: "${{ steps.flutter-action.outputs.CHANNEL }}"
description: The selected Flutter release channel
VERSION:
value: "${{ steps.flutter-action.outputs.VERSION }}"
description: The selected Flutter version
ARCHITECTURE:
value: "${{ steps.flutter-action.outputs.ARCHITECTURE }}"
description: The selected Flutter CPU architecture
CACHE-KEY:
value: "${{ steps.flutter-action.outputs.CACHE-KEY }}"
description: Key used to cache the Flutter SDK
CACHE-PATH:
value: "${{ steps.flutter-action.outputs.CACHE-PATH }}"
description: Path to Flutter SDK
PUB-CACHE-KEY:
value: "${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}"
description: Key used to cache the pub dependencies
PUB-CACHE-PATH:
value: "${{ steps.flutter-action.outputs.PUB-CACHE-PATH }}"
description: Path to pub cache
GIT_SOURCE:
value: "${{ steps.flutter-action.outputs.GIT_SOURCE }}"
description: Git source of Flutter SDK repository to clone
CACHE-HIT:
value: "${{ steps.cache-flutter.outputs.cache-hit }}"
description: "`true` if the flutter cache was a hit"
PUB-CACHE-HIT:
value: "${{ steps.cache-pub.outputs.cache-hit }}"
description: "`true` if the pub cache was a hit"
runs:
using: composite
steps:
# This is a cross-platform composite action that needs yq in order to parse
# the pubspec.yaml file.
# It's not preinstalled on Windows runners.
# See https://github.com/actions/runner-images/issues/7443#issuecomment-1514597691
- name: Make yq tool available on Windows runners
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
shell: bash
- name: Make setup script executable
run: chmod +x "$GITHUB_ACTION_PATH/setup.sh"
shell: bash
- name: Set action inputs
id: flutter-action
shell: bash
run: |
$GITHUB_ACTION_PATH/setup.sh -p \
-n '${{ inputs.flutter-version }}' \
-f '${{ inputs.flutter-version-file }}' \
-a '${{ inputs.architecture }}' \
-k '${{ inputs.cache-key }}' \
-c '${{ inputs.cache-path }}' \
-l '${{ inputs.pub-cache-key }}' \
-d '${{ inputs.pub-cache-path }}' \
-g '${{ inputs.git-source }}' \
${{ inputs.channel }}
- name: Cache Flutter
id: cache-flutter
uses: actions/cache@v5
if: ${{ inputs.cache == 'true' }}
with:
path: ${{ steps.flutter-action.outputs.CACHE-PATH }}
key: ${{ steps.flutter-action.outputs.CACHE-KEY }}
- name: Cache pub dependencies
uses: actions/cache@v5
id: cache-pub
if: ${{ (inputs.pub-cache == '' && inputs.cache == 'true') || inputs.pub-cache == 'true' }}
with:
path: ${{ steps.flutter-action.outputs.PUB-CACHE-PATH }}
key: ${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}-${{ hashFiles('**/pubspec.lock') }}
- name: Run setup script
shell: bash
if: ${{ inputs.dry-run != 'true' && inputs.dry-run != true }}
run: |
$GITHUB_ACTION_PATH/setup.sh \
-n '${{ steps.flutter-action.outputs.VERSION }}' \
-a '${{ steps.flutter-action.outputs.ARCHITECTURE }}' \
-c '${{ steps.flutter-action.outputs.CACHE-PATH }}' \
-d '${{ steps.flutter-action.outputs.PUB-CACHE-PATH }}' \
${{ steps.flutter-action.outputs.CHANNEL }}

View File

@@ -1,44 +0,0 @@
name: 'Flutter action'
description: 'Setup your runner with Flutter environment'
author: 'Alif Rachmawadi'
branding:
icon: 'maximize'
color: 'blue'
inputs:
flutter-version:
description: 'The Flutter version to make available on the path'
required: false
default: 'any'
channel:
description: 'The Flutter build release channel'
required: false
default: 'stable'
cache:
description: 'Cache the Flutter SDK'
required: false
cache-key:
description: 'Identifier for the Flutter SDK cache'
required: false
default: 'flutter-:os:-:arch:-:channel:-:version:-:hash:'
cache-path:
description: 'Flutter SDK cache path'
required: false
default: ${{ runner.tool_cache }}/flutter
architecture:
description: 'The architecture of Flutter SDK executable (x64 or arm64)'
required: false
default: ${{ runner.arch }}
runs:
using: 'composite'
steps:
- if: ${{ inputs.cache == 'true' }}
id: flutter-action-cache-key-builder
run: echo "::set-output name=cache-key::$($GITHUB_ACTION_PATH/setup.sh -p cache-key -k ${{ inputs.cache-key }} ${{ inputs.channel }} ${{ inputs.flutter-version }} ${{ inputs.architecture }})"
shell: bash
- if: ${{ inputs.cache == 'true' }}
uses: actions/cache@v3
with:
path: ${{ inputs.cache-path }}
key: ${{ steps.flutter-action-cache-key-builder.outputs.cache-key }}
- run: $GITHUB_ACTION_PATH/setup.sh -c "${{ inputs.cache-path }}" ${{ inputs.channel }} ${{ inputs.flutter-version }} ${{ inputs.architecture }}
shell: bash

296
setup.sh
View File

@@ -1,51 +1,31 @@
#!/bin/bash
set -eu
check_command() {
command -v "$1" >/dev/null 2>&1
}
if ! check_command jq; then
echo "jq not found, please install it, https://stedolan.github.io/jq/download/"
echo "jq not found. Install it from https://stedolan.github.io/jq"
exit 1
fi
OS_NAME=$(echo "$RUNNER_OS" | awk '{print tolower($0)}')
MANIFEST_BASE_URL="https://storage.googleapis.com/flutter_infra_release/releases"
MANIFEST_URL="$MANIFEST_BASE_URL/releases_$OS_NAME.json"
MANIFEST_TEST_FIXTURE="test/releases_$OS_NAME.json"
ARCH_NAME=$(echo "$RUNNER_ARCH" | awk '{print tolower($0)}')
MANIFEST_BASE_URL="${FLUTTER_STORAGE_BASE_URL:-https://storage.googleapis.com}/flutter_infra_release/releases"
MANIFEST_JSON_PATH="releases_$OS_NAME.json"
MANIFEST_URL="$MANIFEST_BASE_URL/$MANIFEST_JSON_PATH"
legacy_wildcard_version() {
if [[ $1 == any ]]; then
jq --arg version "$2" '.releases | map(select(.version | startswith($version) )) | first'
else
jq --arg channel "$1" --arg version "$2" '.releases | map(select(.channel==$channel) | select(.version | startswith($version) )) | first'
fi
filter_by_channel() {
jq --arg channel "$1" '[.releases[] | select($channel == "any" or .channel == $channel)]'
}
wildcard_version() {
if [[ $1 == any ]]; then
jq --arg version "$2" --arg arch "$3" '.releases | map(select(.version | startswith($version)) | select(.dart_sdk_arch == null or .dart_sdk_arch == $arch)) | first'
else
jq --arg channel "$1" --arg version "$2" --arg arch "$3" '.releases | map(select(.channel==$channel) | select(.version | startswith($version) ) | select(.dart_sdk_arch == null or .dart_sdk_arch == $arch)) | first'
fi
filter_by_arch() {
jq --arg arch "$1" '[.[] | select(.dart_sdk_arch == $arch or ($arch == "x64" and (has("dart_sdk_arch") | not)))]'
}
get_version() {
if [[ "$1" == any && "$2" == any ]]; then # latest_version
jq --arg arch "$3" '.releases | map(select(.dart_sdk_arch == null or .dart_sdk_arch == $arch)) | first'
elif [[ "$2" == any ]]; then # latest channel version
jq --arg channel "$1" --arg arch "$3" '.releases | map(select(.channel==$channel) | select(.dart_sdk_arch == null or .dart_sdk_arch == $arch)) | first'
else
wildcard_version "$1" "$2" "$3"
fi
}
normalize_version() {
if [[ "$1" == *.x ]]; then
echo "${1/.x/}"
else
echo "$1"
fi
filter_by_version() {
jq --arg version "$1" '.[].version |= gsub("^v"; "") | (if $version == "any" then .[0] else (map(select(.version == $version or (.version | startswith(($version | sub("\\.x$"; "")) + ".")) and .version != $version)) | .[0]) end)'
}
not_found_error() {
@@ -53,7 +33,7 @@ not_found_error() {
}
transform_path() {
if [[ "$OS_NAME" == windows ]]; then
if [ "$OS_NAME" = windows ]; then
echo "$1" | sed -e 's/^\///' -e 's/\//\\/g'
else
echo "$1"
@@ -67,79 +47,130 @@ download_archive() {
curl --connect-timeout 15 --retry 5 "$archive_url" >"$archive_local"
# Create the target folder
mkdir -p "$2"
if [[ "$archive_name" == *zip ]]; then
unzip -q -o "$archive_local" -d "$RUNNER_TEMP"
# 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 "$RUNNER_TEMP"/flutter "$2"
else
tar xf "$archive_local" -C "$2" --strip-components=1
fi
case "$archive_name" in
*.zip)
unzip -q -o "$archive_local" -d "$2"
;;
*)
tar xf "$archive_local" -C "$2"
;;
esac
rm "$archive_local"
}
CACHE_PATH=""
CACHE_KEY=""
PRINT_MODE=""
PUB_CACHE_PATH=""
PUB_CACHE_KEY=""
PRINT_ONLY=""
TEST_MODE=false
ARCH=""
VERSION=""
VERSION_FILE=""
GIT_SOURCE=""
while getopts 'c:k:p:' flag; do
while getopts 'tc:k:d:l:pa:n:f:g:' flag; do
case "$flag" in
c) CACHE_PATH="$OPTARG" ;;
k) CACHE_KEY="$OPTARG" ;;
p) PRINT_MODE="$OPTARG" ;;
d) PUB_CACHE_PATH="$OPTARG" ;;
l) PUB_CACHE_KEY="$OPTARG" ;;
p) PRINT_ONLY=true ;;
t) TEST_MODE=true ;;
a) ARCH="$(echo "$OPTARG" | awk '{print tolower($0)}')" ;;
n) VERSION="$OPTARG" ;;
f)
VERSION_FILE="$OPTARG"
if [ -n "$VERSION_FILE" ]; then
if [[ "$VERSION_FILE" != *".fvmrc" ]] && [[ "$VERSION_FILE" != *"fvm_config.json" ]] && ! check_command yq; then
echo "yq not found. Install it from https://mikefarah.gitbook.io/yq"
exit 1
fi
fi
;;
g) GIT_SOURCE="$OPTARG" ;;
?) exit 2 ;;
esac
done
ARR_CHANNEL=("${@:$OPTIND:1}")
ARR_VERSION=("${@:$OPTIND+1:1}")
ARR_ARCH=("${@:$OPTIND+2:1}")
[ -z "$ARCH" ] && ARCH="$ARCH_NAME"
CHANNEL="${ARR_CHANNEL[0]}"
VERSION="${ARR_VERSION[0]}"
ARCH=$(echo "${ARR_ARCH[0]}" | awk '{print tolower($0)}')
[[ -z $CHANNEL ]] && CHANNEL=stable
[[ -z $VERSION ]] && VERSION=any
[[ -z $ARCH ]] && ARCH=x64
[[ -z $CACHE_PATH ]] && CACHE_PATH=/tmp
[[ -z $CACHE_KEY ]] && CACHE_KEY="flutter-:os:-:arch:-:channel:-:version:-:hash:"
RELEASE_MANIFEST=""
VERSION_MANIFEST=""
get_version_manifest() {
version_normalized=$(normalize_version "$VERSION")
version_manifest=$(echo "$RELEASE_MANIFEST" | get_version "$CHANNEL" "$version_normalized" "$ARCH")
if [[ "$version_manifest" == null ]]; then
version_manifest=$(echo "$RELEASE_MANIFEST" | legacy_wildcard_version "$CHANNEL" "v$version_normalized")
if [ -n "$VERSION_FILE" ]; then
if [ -n "$VERSION" ]; then
echo "Cannot specify both a version and a version file"
exit 1
fi
version_arch=$(echo "$version_manifest" | jq -r '.dart_sdk_arch')
if [[ "$version_arch" == null ]]; then
if [[ "$ARCH" == x64 ]]; then
echo "$version_manifest" | jq --arg dart_sdk_arch x64 '.+={dart_sdk_arch:$dart_sdk_arch}'
else
echo ""
fi
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
echo "$version_manifest"
VERSION="$(yq eval '.environment.flutter' "$VERSION_FILE")"
fi
}
if [[ "$VERSION" == "stable" ]] || [[ "$VERSION" == "beta" ]] || [[ "$VERSION" == "master" ]] || [[ "$VERSION" == "main" ]]; then
CHANNEL="$VERSION"
VERSION="any"
fi
fi
ARR_CHANNEL=("${@:$OPTIND:1}")
if [ -z "${CHANNEL:-}" ]; then
CHANNEL="${ARR_CHANNEL[0]:-}"
fi
[ -z "$CHANNEL" ] && CHANNEL=stable
[ -z "$VERSION" ] && VERSION=any
[ -z "$ARCH" ] && ARCH=x64
[ -z "$CACHE_PATH" ] && CACHE_PATH="$RUNNER_TOOL_CACHE/flutter/:channel:-:version:-:arch:"
[ -z "$CACHE_KEY" ] && CACHE_KEY="flutter-:os:-:channel:-:version:-:arch:-:hash:"
[ -z "$PUB_CACHE_KEY" ] && PUB_CACHE_KEY="flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
[ -z "$PUB_CACHE_PATH" ] && PUB_CACHE_PATH="default"
[ -z "$GIT_SOURCE" ] && GIT_SOURCE="https://github.com/flutter/flutter.git"
# `PUB_CACHE` is what Dart and Flutter looks for in the environment, while
# `PUB_CACHE_PATH` is passed in from the action.
#
# If `PUB_CACHE` is set already, then it should continue to be used. Otherwise, satisfy it
# if the action requests a custom path, or set to the Dart default values depending
# on the operating system.
if [ -z "${PUB_CACHE:-}" ]; then
if [ "$PUB_CACHE_PATH" != "default" ]; then
PUB_CACHE="$PUB_CACHE_PATH"
elif [ "$OS_NAME" = "windows" ]; then
PUB_CACHE="$LOCALAPPDATA\\Pub\\Cache"
else
PUB_CACHE="$HOME/.pub-cache"
fi
fi
if [ "$TEST_MODE" = true ]; then
RELEASE_MANIFEST=$(cat "$(dirname -- "${BASH_SOURCE[0]}")/test/$MANIFEST_JSON_PATH")
else
RELEASE_MANIFEST=$(curl --silent --connect-timeout 15 --retry 5 "$MANIFEST_URL")
fi
if [ "$CHANNEL" = "master" ] || [ "$CHANNEL" = "main" ]; then
VERSION_MANIFEST="{\"channel\":\"$CHANNEL\",\"version\":\"$VERSION\",\"dart_sdk_arch\":\"$ARCH\",\"hash\":\"$CHANNEL\",\"sha256\":\"$CHANNEL\"}"
else
VERSION_MANIFEST=$(echo "$RELEASE_MANIFEST" | filter_by_channel "$CHANNEL" | filter_by_arch "$ARCH" | filter_by_version "$VERSION")
fi
case "$VERSION_MANIFEST" in
*null*)
not_found_error "$CHANNEL" "$VERSION" "$ARCH"
exit 1
;;
esac
expand_key() {
version_channel=$(echo "$VERSION_MANIFEST" | jq -r '.channel')
version_version=$(echo "$VERSION_MANIFEST" | jq -r '.version')
version_arch=$(echo "$VERSION_MANIFEST" | jq -r '.dart_sdk_arch')
version_arch=$(echo "$VERSION_MANIFEST" | jq -r '.dart_sdk_arch // "x64"')
version_hash=$(echo "$VERSION_MANIFEST" | jq -r '.hash')
version_sha_256=$(echo "$VERSION_MANIFEST" | jq -r '.sha256')
@@ -153,81 +184,64 @@ expand_key() {
echo "$expanded_key"
}
print_version() {
version_debug=$(echo "$VERSION_MANIFEST" | jq -j '.channel,":",.version,":",.dart_sdk_arch')
echo "$CHANNEL:$VERSION:$ARCH|$version_debug"
}
CACHE_KEY=$(expand_key "$CACHE_KEY")
PUB_CACHE_KEY=$(expand_key "$PUB_CACHE_KEY")
CACHE_PATH=$(expand_key "$(transform_path "$CACHE_PATH")")
PUB_CACHE=$(expand_key "$(transform_path "$PUB_CACHE")")
if [[ -n "$PRINT_MODE" ]]; then
if [[ "$CHANNEL" == master ]]; then
if [[ "$PRINT_MODE" == version ]]; then
echo "master:master:$ARCH|master:master:$ARCH"
exit 0
fi
if [ "$PRINT_ONLY" = true ]; then
version_info=$(echo "$VERSION_MANIFEST" | jq -j '.channel,":",.version,":",.dart_sdk_arch // "x64"')
if [[ "$PRINT_MODE" == cache-key ]]; then
VERSION_MANIFEST="{\"channel\":\"$CHANNEL\",\"version\":\"$CHANNEL\",\"dart_sdk_arch\":\"$ARCH\",\"hash\":\"$CHANNEL\",\"sha256\":\"$CHANNEL\"}"
EXPANDED_KEY=$(expand_key "$CACHE_KEY")
info_channel=$(echo "$version_info" | awk -F ':' '{print $1}')
info_version=$(echo "$version_info" | awk -F ':' '{print $2}')
info_architecture=$(echo "$version_info" | awk -F ':' '{print $3}')
echo "$EXPANDED_KEY"
exit 0
fi
exit 1
fi
RELEASE_MANIFEST=$(cat "$MANIFEST_TEST_FIXTURE")
VERSION_MANIFEST=$(get_version_manifest)
if [[ -z "$VERSION_MANIFEST" ]]; then
not_found_error "$CHANNEL" "$VERSION" "$ARCH"
exit 1
fi
if [[ "$PRINT_MODE" == version ]]; then
print_version
if [ "$TEST_MODE" = true ]; then
echo "CHANNEL=$info_channel"
echo "VERSION=$info_version"
# VERSION_FILE is not printed, because it is essentially same as VERSION
echo "ARCHITECTURE=$info_architecture"
echo "CACHE-KEY=$CACHE_KEY"
echo "CACHE-PATH=$CACHE_PATH"
echo "PUB-CACHE-KEY=$PUB_CACHE_KEY"
echo "PUB-CACHE-PATH=$PUB_CACHE"
exit 0
fi
if [[ "$PRINT_MODE" == cache-key ]]; then
EXPANDED_KEY=$(expand_key "$CACHE_KEY")
{
echo "CHANNEL=$info_channel"
echo "VERSION=$info_version"
# VERSION_FILE is not printed, because it is essentially same as VERSION
echo "ARCHITECTURE=$info_architecture"
echo "CACHE-KEY=$CACHE_KEY"
echo "CACHE-PATH=$CACHE_PATH"
echo "PUB-CACHE-KEY=$PUB_CACHE_KEY"
echo "PUB-CACHE-PATH=$PUB_CACHE"
} >>"${GITHUB_OUTPUT:-/dev/null}"
echo "$EXPANDED_KEY"
exit 0
fi
exit 1
exit 0
fi
CACHE_PATH=$(transform_path "$CACHE_PATH")
SDK_CACHE=$(expand_key "$CACHE_PATH")
PUB_CACHE=$(expand_key "$SDK_CACHE/.pub-cache")
if [[ ! -x "$SDK_CACHE/bin/flutter" ]]; then
if [[ $CHANNEL == master ]]; then
git clone -b master https://github.com/flutter/flutter.git "$SDK_CACHE"
if [ ! -x "$CACHE_PATH/flutter/bin/flutter" ]; then
if [ "$CHANNEL" = "master" ] || [ "$CHANNEL" = "main" ]; then
git clone -b "$CHANNEL" "$GIT_SOURCE" "$CACHE_PATH/flutter"
if [ "$VERSION" != "any" ]; then
git config --global --add safe.directory "$CACHE_PATH/flutter"
(cd "$CACHE_PATH/flutter" && git checkout "$VERSION")
fi
else
RELEASE_MANIFEST=$(curl --silent --connect-timeout 15 --retry 5 "$MANIFEST_URL")
VERSION_MANIFEST=$(get_version_manifest)
if [[ -z "$VERSION_MANIFEST" ]]; then
not_found_error "$CHANNEL" "$VERSION" "$ARCH"
exit 1
fi
ARCHIVE_PATH=$(echo "$VERSION_MANIFEST" | jq -r '.archive')
download_archive "$ARCHIVE_PATH" "$SDK_CACHE"
print_version
archive_url=$(echo "$VERSION_MANIFEST" | jq -r '.archive')
download_archive "$archive_url" "$CACHE_PATH"
fi
fi
{
echo "FLUTTER_ROOT=$SDK_CACHE"
echo "FLUTTER_ROOT=$CACHE_PATH/flutter"
echo "PUB_CACHE=$PUB_CACHE"
} >>"$GITHUB_ENV"
} >>"${GITHUB_ENV:-/dev/null}"
{
echo "$SDK_CACHE/bin"
echo "$SDK_CACHE/bin/cache/dart-sdk/bin"
echo "$CACHE_PATH/flutter/bin"
echo "$CACHE_PATH/flutter/bin/cache/dart-sdk/bin"
echo "$PUB_CACHE/bin"
} >>"$GITHUB_PATH"
} >>"${GITHUB_PATH:-/dev/null}"

5
test/pubspec.yaml Normal file
View File

@@ -0,0 +1,5 @@
name: flutter_action_test
environment:
dart: ">=2.18.0 <3.0.0"
flutter: 3.3.10

View File

@@ -1,11 +1,391 @@
{
"base_url": "https://storage.googleapis.com/flutter_infra_release/releases",
"current_release": {
"beta": "f28e570c8cb12a004fae2d796d0d9cd46603bde9",
"beta": "f732038a8cf4562ce38a1d7debb30209ae3da896",
"dev": "13a2fb10b838971ce211230f8ffdd094c14af02c",
"stable": "f1875d570e39de09040c8f79aa13cc56baab8db1"
"stable": "2ad6cd72c040113b47ee9055e722606a490ef0da"
},
"releases": [
{
"hash": "f732038a8cf4562ce38a1d7debb30209ae3da896",
"channel": "beta",
"version": "3.9.0-0.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-290.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-03-16T00:03:32.853116Z",
"archive": "beta/linux/flutter_linux_3.9.0-0.1.pre-beta.tar.xz",
"sha256": "29de474d4a1c6844f3560666d88a754dc4b4c7cafd58503f265ac4718eaf1f96"
},
{
"hash": "8b9b90e75107181aadc303d8d7422205863a35dd",
"channel": "beta",
"version": "3.9.0-0.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-290.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-03-15T23:41:24.161758Z",
"archive": "beta/linux/flutter_linux_3.9.0-0.1.pre-beta.tar.xz",
"sha256": "15c63afafa2fd7dd6f477b31c393e7d7e2bfbe08b38c7d6de1169280aae1f9e1"
},
{
"hash": "f3d140022d6a68df8b0e3776594819ce0ee94e2d",
"channel": "beta",
"version": "3.9.0-0.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-290.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-03-15T22:58:49.073713Z",
"archive": "beta/linux/flutter_linux_3.9.0-0.1.pre-beta.tar.xz",
"sha256": "3d5bf90f9a536ee55bf417f2b1d932c727fa6ff41af8fbe6d81d10732ded193c"
},
{
"hash": "2ad6cd72c040113b47ee9055e722606a490ef0da",
"channel": "stable",
"version": "3.7.7",
"dart_sdk_version": "2.19.4",
"dart_sdk_arch": "x64",
"release_date": "2023-03-08T20:53:23.713703Z",
"archive": "stable/linux/flutter_linux_3.7.7-stable.tar.xz",
"sha256": "cdd49597e88c35e5de5184e9acff433dfbb3c075b74ef7b27790af7f57ce2420"
},
{
"hash": "12cb4eb7a009f52b347b62ade7cb4854b926af72",
"channel": "stable",
"version": "3.7.6",
"dart_sdk_version": "2.19.3",
"dart_sdk_arch": "x64",
"release_date": "2023-03-01T21:08:18.329454Z",
"archive": "stable/linux/flutter_linux_3.7.6-stable.tar.xz",
"sha256": "6eb1d4aeabb0d7581bb1765f0da99a9773d1c65f5be634415b4c1afcea4b55b8"
},
{
"hash": "c07f7888888435fd9df505aa2efc38d3cf65681b",
"channel": "stable",
"version": "3.7.5",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-23T04:34:22.630384Z",
"archive": "stable/linux/flutter_linux_3.7.5-stable.tar.xz",
"sha256": "01cad642beb492e8af8413331b50325e1430b934df7be89aa9a29ea2de8df8f0"
},
{
"hash": "b4bce91dd0f168179d46a7ae5eceb3572ba9637a",
"channel": "stable",
"version": "3.7.4",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-21T21:31:04.792661Z",
"archive": "stable/linux/flutter_linux_3.7.4-stable.tar.xz",
"sha256": "698314fa9b70fda8b0769178b895f53c07a8d942e1b0cbbe220385886ea8e952"
},
{
"hash": "1a0a03a41d6613c10bab23508dee456f184b181b",
"channel": "beta",
"version": "3.8.0-10.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-218.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-02-17T17:17:08.473454Z",
"archive": "beta/linux/flutter_linux_3.8.0-10.1.pre-beta.tar.xz",
"sha256": "7b8ac39f229ae01193ac841d6687f3df705682624c32ce2dddfab9d53d8abed3"
},
{
"hash": "9944297138845a94256f1cf37beb88ff9a8e811a",
"channel": "stable",
"version": "3.7.3",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-09T17:02:14.171562Z",
"archive": "stable/linux/flutter_linux_3.7.3-stable.tar.xz",
"sha256": "7b3d2900ce0e367d73d85591d5d43a11f94a223278dd3220776b03a83e234865"
},
{
"hash": "32fb2f948e9b1a2d1b876ebee3558be7f51b457f",
"channel": "stable",
"version": "3.7.2",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-08T18:07:14.532725Z",
"archive": "stable/linux/flutter_linux_3.7.2-stable.tar.xz",
"sha256": "18fa87758dc24547a2a7fc96dc6e6d5bf24b0783b06701ee9e4b09f056559688"
},
{
"hash": "7048ed95a5ad3e43d697e0c397464193991fc230",
"channel": "stable",
"version": "3.7.1",
"dart_sdk_version": "2.19.1",
"dart_sdk_arch": "x64",
"release_date": "2023-02-01T21:25:02.828380Z",
"archive": "stable/linux/flutter_linux_3.7.1-stable.tar.xz",
"sha256": "345f730b78bcdadbe9096a666a41b9d588f885dd94f84514bf10b9483d18c2e5"
},
{
"hash": "b06b8b2710955028a6b562f5aa6fe62941d6febf",
"channel": "stable",
"version": "3.7.0",
"dart_sdk_version": "2.19.0",
"dart_sdk_arch": "x64",
"release_date": "2023-01-24T18:52:29.276391Z",
"archive": "stable/linux/flutter_linux_3.7.0-stable.tar.xz",
"sha256": "51160abac1d0d82b45647be6b2a6ed2d3827d51c3920f2c8ebf3ea8cebe6f484"
},
{
"hash": "099b3f4bf1581796fac3848d3381dbf2f29edbea",
"channel": "beta",
"version": "3.7.0-1.5.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.6.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-01-23T23:08:11.348935Z",
"archive": "beta/linux/flutter_linux_3.7.0-1.5.pre-beta.tar.xz",
"sha256": "7762ec53675fcb7c76361cf9a3fa33d0938abe1f522a6d67968ddfe184088fd0"
},
{
"hash": "135454af32477f815a7525073027a3ff9eff1bfd",
"channel": "stable",
"version": "3.3.10",
"dart_sdk_version": "2.18.6",
"dart_sdk_arch": "x64",
"release_date": "2023-01-23T19:48:31.546617Z",
"archive": "stable/linux/flutter_linux_3.3.10-stable.tar.xz",
"sha256": "4ab54d3f93ba6e0308b3176ab81843c9d3d44b126e27204aa96a339601d45aff"
},
{
"hash": "686fe913dc963954b99e62048569cb9ac8e551c8",
"channel": "beta",
"version": "3.7.0-1.4.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-01-11T18:15:03.971610Z",
"archive": "beta/linux/flutter_linux_3.7.0-1.4.pre-beta.tar.xz",
"sha256": "5ff8a1643f7057cf68bacd30df6ee2c54dfc5f18be58e0a4fb20b245c73dd661"
},
{
"hash": "9b4416aaa79bf984d06aa40ab515a274a50a75a7",
"channel": "beta",
"version": "3.7.0-1.3.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.3.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-01-05T17:47:42.981002Z",
"archive": "beta/linux/flutter_linux_3.7.0-1.3.pre-beta.tar.xz",
"sha256": "e45e0fd2b376a19ed77dd897ce4c30e9490968c6633a6e0fa85e44dfc83d6133"
},
{
"hash": "c29b09b8782b39b1678bc9c861f40902086fb7c8",
"channel": "beta",
"version": "3.7.0-1.2.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-12-20T01:59:20.718823Z",
"archive": "beta/linux/flutter_linux_3.7.0-1.2.pre-beta.tar.xz",
"sha256": "f72135714f722d591f03af37d6db34fabaf2610e528b08904acbd55081b1d3a9"
},
{
"hash": "e599f02c7af4aa8aba0e8e96f71c737f85be3c6e",
"channel": "beta",
"version": "3.7.0-1.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-12-08T18:10:44.186943Z",
"archive": "beta/linux/flutter_linux_3.7.0-1.1.pre-beta.tar.xz",
"sha256": "2d4a965a51a2c3b03ac98c1fce2caaccb362b1dfd4e5607cf00e8be2cc205e92"
},
{
"hash": "b8f7f1f9869bb2d116aa6a70dbeac61000b52849",
"channel": "stable",
"version": "3.3.9",
"dart_sdk_version": "2.18.5",
"dart_sdk_arch": "x64",
"release_date": "2022-11-23T16:40:32.603420Z",
"archive": "stable/linux/flutter_linux_3.3.9-stable.tar.xz",
"sha256": "5aac9006137157ecaf041beeb326e0395eed50950291553b60e07568a1454767"
},
{
"hash": "75927305ff855f76a9ef704f9b4a86fa2fce7292",
"channel": "beta",
"version": "3.6.0-0.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-374.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-11-17T19:46:51.911076Z",
"archive": "beta/linux/flutter_linux_3.6.0-0.1.pre-beta.tar.xz",
"sha256": "473e2fbdd4ca5230593e679303adf429603976b143858c0261af5f5e6f081e1a"
},
{
"hash": "52b3dc25f6471c27b2144594abb11c741cb88f57",
"channel": "stable",
"version": "3.3.8",
"dart_sdk_version": "2.18.4",
"dart_sdk_arch": "x64",
"release_date": "2022-11-09T18:13:11.974062Z",
"archive": "stable/linux/flutter_linux_3.3.8-stable.tar.xz",
"sha256": "407fb5d05e9ad17604bc17ad8808b8e527f2ed64dd559d62f1538ee09b92236e"
},
{
"hash": "e99c9c7cd9f6c0b2f8ae6e3ebfd585239f5568f4",
"channel": "stable",
"version": "3.3.7",
"dart_sdk_version": "2.18.4",
"dart_sdk_arch": "x64",
"release_date": "2022-11-02T17:48:40.430644Z",
"archive": "stable/linux/flutter_linux_3.3.7-stable.tar.xz",
"sha256": "cbbb2ae24390ef19fb290314bee63bbd7c1f0dad98f1f8aab99d1c31baac07e6"
},
{
"hash": "6928314d505d2bb4777be05e45d7808a5aa91d2a",
"channel": "stable",
"version": "3.3.6",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-10-26T16:52:00.298277Z",
"archive": "stable/linux/flutter_linux_3.3.6-stable.tar.xz",
"sha256": "16746e53f2d04ba6b476911e4e0e5b4ca1f8220792bb71ed71696050454ad5e7"
},
{
"hash": "d9111f64021372856901a1fd5bfbc386cade3318",
"channel": "stable",
"version": "3.3.5",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-10-19T22:16:09.519089Z",
"archive": "stable/linux/flutter_linux_3.3.5-stable.tar.xz",
"sha256": "1295f2e8ee30b16fb74da71b69c5332e71fff6f14dd28db5356de63b93a4d659"
},
{
"hash": "71520442d4d0d41b2d158c519928d90ddab3766f",
"channel": "beta",
"version": "3.4.0-34.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-255.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-10-06T17:12:01.834313Z",
"archive": "beta/linux/flutter_linux_3.4.0-34.1.pre-beta.tar.xz",
"sha256": "b3a4f76ff66150eab19b58bf4fb1fe76b0f06c257abce689703238f11c4e1547"
},
{
"hash": "eb6d86ee27deecba4a83536aa20f366a6044895c",
"channel": "stable",
"version": "3.3.4",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-10-05T16:48:07.889310Z",
"archive": "stable/linux/flutter_linux_3.3.4-stable.tar.xz",
"sha256": "4a2a72f09241f8e09732d9512ff4a6987fda85640d22b5799c2ea8c016378313"
},
{
"hash": "18a827f3933c19f51862dde3fa472197683249d6",
"channel": "stable",
"version": "3.3.3",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-09-28T19:51:59.024002Z",
"archive": "stable/linux/flutter_linux_3.3.3-stable.tar.xz",
"sha256": "31365e590529e3f4dc3f36084fa7aa20a48f50fbe7d8ca7fb61390ccd8294d78"
},
{
"hash": "d6260f127fe3f88c98231243b387b48448479bff",
"channel": "beta",
"version": "3.4.0-17.2.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-146.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-09-21T20:26:17.472747Z",
"archive": "beta/linux/flutter_linux_3.4.0-17.2.pre-beta.tar.xz",
"sha256": "fd906d80f943fd1ecd83215419a2b635b40c987504840f6738b005ea3b926843"
},
{
"hash": "98338388391370431e7a3c0e4602b1a29fbd1581",
"channel": "beta",
"version": "3.4.0-17.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-146.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-09-21T00:45:03.783788Z",
"archive": "beta/linux/flutter_linux_3.4.0-17.1.pre-beta.tar.xz",
"sha256": "2d4a5cd7e215d9e1df9499406a37de53b0e8d4ab88cc5c18c0befcaca2a60f7a"
},
{
"hash": "e3c29ec00c9c825c891d75054c63fcc46454dca1",
"channel": "stable",
"version": "3.3.2",
"dart_sdk_version": "2.18.1",
"dart_sdk_arch": "x64",
"release_date": "2022-09-14T15:06:55.724077Z",
"archive": "stable/linux/flutter_linux_3.3.2-stable.tar.xz",
"sha256": "a733a75ae07c42b2059a31fc9d64fabfae5dccd15770fa6b7f290e3f5f9c98e8"
},
{
"hash": "4f9d92fbbdf072a70a70d2179a9f87392b94104c",
"channel": "stable",
"version": "3.3.1",
"dart_sdk_version": "2.18.0",
"dart_sdk_arch": "x64",
"release_date": "2022-09-07T15:30:42.283999Z",
"archive": "stable/linux/flutter_linux_3.3.1-stable.tar.xz",
"sha256": "7cbcff0230affbe07a5ce82298044ac437e96aeba69f83656f9ed9a910a392e7"
},
{
"hash": "ffccd96b62ee8cec7740dab303538c5fc26ac543",
"channel": "stable",
"version": "3.3.0",
"dart_sdk_version": "2.18.0",
"dart_sdk_arch": "x64",
"release_date": "2022-08-30T17:22:12.916008Z",
"archive": "stable/linux/flutter_linux_3.3.0-stable.tar.xz",
"sha256": "a92a27aa6d4454d7a1cf9f8a0a56e0e5d6865f2cfcd21cf52e57f7922ad5d504"
},
{
"hash": "096162697a9cdc79f4e47f7230d70935fa81fd24",
"channel": "beta",
"version": "3.3.0-0.5.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.7.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-23T17:03:21.525151Z",
"archive": "beta/linux/flutter_linux_3.3.0-0.5.pre-beta.tar.xz",
"sha256": "8e07158a64a8ce79f9169cffe4ff23a486bdabb29401f13177672fae18de52d2"
},
{
"hash": "3c0bee85b8e43b860877922bdc411a7333db4d32",
"channel": "beta",
"version": "3.3.0-0.4.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.7.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-20T04:51:18.022823Z",
"archive": "beta/linux/flutter_linux_3.3.0-0.4.pre-beta.tar.xz",
"sha256": "88f67bb90b2e3f43977512540904e9d00142fa4503022b2add48743559453b36"
},
{
"hash": "8c1149878bbb8f062aecfab4d825e5b87bdb4487",
"channel": "beta",
"version": "3.3.0-0.3.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-10T19:12:48.645905Z",
"archive": "beta/linux/flutter_linux_3.3.0-0.3.pre-beta.tar.xz",
"sha256": "46bed8a4935312ef1085bf44cfdb4f91ee28f0a8d2a34d71bc4b4aacdd20163e"
},
{
"hash": "7ac27ac8e6a42750c475ba8a2a3c7047b93fd949",
"channel": "beta",
"version": "3.3.0-0.2.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-03T01:06:09.377154Z",
"archive": "beta/linux/flutter_linux_3.3.0-0.2.pre-beta.tar.xz",
"sha256": "68f656f47cd56acbe1a3f456c71355bda2dae21331a254566b1082f1010769bb"
},
{
"hash": "d952ca86d64772b1b9b0df27cf9ea145e80c38e5",
"channel": "beta",
"version": "3.3.0-0.1.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-07-27T20:02:24.681157Z",
"archive": "beta/linux/flutter_linux_3.3.0-0.1.pre-beta.tar.xz",
"sha256": "f9e63ff0b60c4b5ea9f4f33dddfae62fb607b605285dd6629afae0db66b2352b"
},
{
"hash": "f90da9b1672f7d006ba760fbb8fd1aa17af1a82a",
"channel": "beta",
"version": "3.3.0-0.0.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-07-20T17:33:09.773259Z",
"archive": "beta/linux/flutter_linux_3.3.0-0.0.pre-beta.tar.xz",
"sha256": "c11a43fba13867eaa854a754b6e0d87cd7ef7cc1aaf2795c7bbe55f417c2155f"
},
{
"hash": "f1875d570e39de09040c8f79aa13cc56baab8db1",
"channel": "stable",

View File

@@ -1,11 +1,741 @@
{
"base_url": "https://storage.googleapis.com/flutter_infra_release/releases",
"current_release": {
"beta": "f28e570c8cb12a004fae2d796d0d9cd46603bde9",
"beta": "f732038a8cf4562ce38a1d7debb30209ae3da896",
"dev": "13a2fb10b838971ce211230f8ffdd094c14af02c",
"stable": "f1875d570e39de09040c8f79aa13cc56baab8db1"
"stable": "2ad6cd72c040113b47ee9055e722606a490ef0da"
},
"releases": [
{
"hash": "f732038a8cf4562ce38a1d7debb30209ae3da896",
"channel": "beta",
"version": "3.9.0-0.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-290.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-03-15T23:49:48.869725Z",
"archive": "beta/macos/flutter_macos_3.9.0-0.1.pre-beta.zip",
"sha256": "07ae9b13c6854d85b519166f918f5504579ccbcc43ee8048c8e5c89c28333001"
},
{
"hash": "8b9b90e75107181aadc303d8d7422205863a35dd",
"channel": "beta",
"version": "3.9.0-0.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-290.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-03-15T23:33:12.756049Z",
"archive": "beta/macos/flutter_macos_3.9.0-0.1.pre-beta.zip",
"sha256": "c8cc141b55aa3edf3b3964039890996cbd74954a55ad2e74ff5005e49b74e879"
},
{
"hash": "8b9b90e75107181aadc303d8d7422205863a35dd",
"channel": "beta",
"version": "3.9.0-0.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-290.1.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2023-03-15T23:30:04.284230Z",
"archive": "beta/macos/flutter_macos_arm64_3.9.0-0.1.pre-beta.zip",
"sha256": "50fdf2ec66d3850d2efe4552566b28a37b43020aa7b79d60f346a7a3ba21bd48"
},
{
"hash": "f3d140022d6a68df8b0e3776594819ce0ee94e2d",
"channel": "beta",
"version": "3.9.0-0.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-290.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-03-15T22:45:31.522335Z",
"archive": "beta/macos/flutter_macos_3.9.0-0.1.pre-beta.zip",
"sha256": "20a1ca5bf5fde0fa327b2736f4b34796a586856c83b795e864eaa6c486d1a5d9"
},
{
"hash": "2ad6cd72c040113b47ee9055e722606a490ef0da",
"channel": "stable",
"version": "3.7.7",
"dart_sdk_version": "2.19.4",
"dart_sdk_arch": "x64",
"release_date": "2023-03-08T20:39:11.307931Z",
"archive": "stable/macos/flutter_macos_3.7.7-stable.zip",
"sha256": "78957b52f023a0d811add27eddc59b1a59d27d2ada5df123f39d0315708fb2d5"
},
{
"hash": "2ad6cd72c040113b47ee9055e722606a490ef0da",
"channel": "stable",
"version": "3.7.7",
"dart_sdk_version": "2.19.4",
"dart_sdk_arch": "arm64",
"release_date": "2023-03-08T20:36:12.935541Z",
"archive": "stable/macos/flutter_macos_arm64_3.7.7-stable.zip",
"sha256": "0511b9f164a62f467b063e6c83d9c683bb3fb056ee556b2f45e987a2c2f4a260"
},
{
"hash": "12cb4eb7a009f52b347b62ade7cb4854b926af72",
"channel": "stable",
"version": "3.7.6",
"dart_sdk_version": "2.19.3",
"dart_sdk_arch": "x64",
"release_date": "2023-03-01T20:54:19.480252Z",
"archive": "stable/macos/flutter_macos_3.7.6-stable.zip",
"sha256": "ef50057523ec5220921c8594db6e05e92077783a8232246f9c297d7d5ca95fb4"
},
{
"hash": "12cb4eb7a009f52b347b62ade7cb4854b926af72",
"channel": "stable",
"version": "3.7.6",
"dart_sdk_version": "2.19.3",
"dart_sdk_arch": "arm64",
"release_date": "2023-03-01T20:51:20.884052Z",
"archive": "stable/macos/flutter_macos_arm64_3.7.6-stable.zip",
"sha256": "0823d126788058af49d2e212e13e783517d332339bbc0538f94eb13ee3f194fa"
},
{
"hash": "c07f7888888435fd9df505aa2efc38d3cf65681b",
"channel": "stable",
"version": "3.7.5",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-23T04:27:01.291868Z",
"archive": "stable/macos/flutter_macos_3.7.5-stable.zip",
"sha256": "653961c303d34eed4ca976b814ee3f4a15078fa743e454c77624a5fe3299c5bd"
},
{
"hash": "c07f7888888435fd9df505aa2efc38d3cf65681b",
"channel": "stable",
"version": "3.7.5",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "arm64",
"release_date": "2023-02-23T04:22:14.080604Z",
"archive": "stable/macos/flutter_macos_arm64_3.7.5-stable.zip",
"sha256": "aec66d79633dafa37d5fd00bcec366993921e802050728c5b2e0c3478fd2076f"
},
{
"hash": "b4bce91dd0f168179d46a7ae5eceb3572ba9637a",
"channel": "stable",
"version": "3.7.4",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-21T21:19:15.713559Z",
"archive": "stable/macos/flutter_macos_3.7.4-stable.zip",
"sha256": "6ec44903f585531cb77af887bf5d70c285e6c63fb0c551f3db9ec8b0faddf8c6"
},
{
"hash": "b4bce91dd0f168179d46a7ae5eceb3572ba9637a",
"channel": "stable",
"version": "3.7.4",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "arm64",
"release_date": "2023-02-21T21:15:44.287622Z",
"archive": "stable/macos/flutter_macos_arm64_3.7.4-stable.zip",
"sha256": "8f37e28cd41f91ec67ed722e08bcc5bd172533d21398719fa1bd050ba281bf2c"
},
{
"hash": "1a0a03a41d6613c10bab23508dee456f184b181b",
"channel": "beta",
"version": "3.8.0-10.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-218.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-02-17T17:06:38.101781Z",
"archive": "beta/macos/flutter_macos_3.8.0-10.1.pre-beta.zip",
"sha256": "59d8f3be6d940f17bb309c0e5b0d18e1a3d8ad525feaf648208fbcaf808b7c23"
},
{
"hash": "9944297138845a94256f1cf37beb88ff9a8e811a",
"channel": "stable",
"version": "3.7.3",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-09T16:52:24.380820Z",
"archive": "stable/macos/flutter_macos_3.7.3-stable.zip",
"sha256": "41032963628ef651a81833af202ca6b636b49411c3710030898ed4277d636595"
},
{
"hash": "9944297138845a94256f1cf37beb88ff9a8e811a",
"channel": "stable",
"version": "3.7.3",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "arm64",
"release_date": "2023-02-09T16:49:08.538516Z",
"archive": "stable/macos/flutter_macos_arm64_3.7.3-stable.zip",
"sha256": "6b4eda9371094ca2cdaae944f91a0a95d1f71803dcae0d01f899edf8aa4f58a1"
},
{
"hash": "32fb2f948e9b1a2d1b876ebee3558be7f51b457f",
"channel": "stable",
"version": "3.7.2",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-08T17:58:15.194610Z",
"archive": "stable/macos/flutter_macos_3.7.2-stable.zip",
"sha256": "2ed6e48ba9f20942d600cd997de30f15725537d78cd34b8bf299a089b30e0ca0"
},
{
"hash": "32fb2f948e9b1a2d1b876ebee3558be7f51b457f",
"channel": "stable",
"version": "3.7.2",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "arm64",
"release_date": "2023-02-08T17:55:26.188873Z",
"archive": "stable/macos/flutter_macos_arm64_3.7.2-stable.zip",
"sha256": "daba89e62b5c8b4a3099034f302bdfbc6fa3c4435257192fe29fb9d39d2a3dc6"
},
{
"hash": "7048ed95a5ad3e43d697e0c397464193991fc230",
"channel": "stable",
"version": "3.7.1",
"dart_sdk_version": "2.19.1",
"dart_sdk_arch": "x64",
"release_date": "2023-02-01T21:12:35.871676Z",
"archive": "stable/macos/flutter_macos_3.7.1-stable.zip",
"sha256": "3a6fd3c151d8247785bb3c296ea2c132aaa8f6f2bf2120c7495e3b61e7ab6dc5"
},
{
"hash": "7048ed95a5ad3e43d697e0c397464193991fc230",
"channel": "stable",
"version": "3.7.1",
"dart_sdk_version": "2.19.1",
"dart_sdk_arch": "arm64",
"release_date": "2023-02-01T21:09:28.491790Z",
"archive": "stable/macos/flutter_macos_arm64_3.7.1-stable.zip",
"sha256": "70a8ae5e7ff360827e6dd7facc69c0e5965674449c4f389d994d3c2ffbb2647d"
},
{
"hash": "b06b8b2710955028a6b562f5aa6fe62941d6febf",
"channel": "stable",
"version": "3.7.0",
"dart_sdk_version": "2.19.0",
"dart_sdk_arch": "x64",
"release_date": "2023-01-24T18:44:31.737494Z",
"archive": "stable/macos/flutter_macos_3.7.0-stable.zip",
"sha256": "501dc6254c1bb158998d5d3bd65f79b8e966f991518da0cc6ed6c6d4e2772ec3"
},
{
"hash": "b06b8b2710955028a6b562f5aa6fe62941d6febf",
"channel": "stable",
"version": "3.7.0",
"dart_sdk_version": "2.19.0",
"dart_sdk_arch": "arm64",
"release_date": "2023-01-24T18:41:30.665933Z",
"archive": "stable/macos/flutter_macos_arm64_3.7.0-stable.zip",
"sha256": "6e7132bac441400432129ebb54e5dede6ab76f0dbea58370090249048a2dd013"
},
{
"hash": "099b3f4bf1581796fac3848d3381dbf2f29edbea",
"channel": "beta",
"version": "3.7.0-1.5.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.6.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-01-23T23:15:04.420865Z",
"archive": "beta/macos/flutter_macos_3.7.0-1.5.pre-beta.zip",
"sha256": "a4fdb4293039ca65e1ed1b53ee2ad12a70e18ec8e09486b7f2de78e2cd5dd83c"
},
{
"hash": "099b3f4bf1581796fac3848d3381dbf2f29edbea",
"channel": "beta",
"version": "3.7.0-1.5.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.6.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2023-01-23T22:55:47.278206Z",
"archive": "beta/macos/flutter_macos_arm64_3.7.0-1.5.pre-beta.zip",
"sha256": "ff052b3cd4c19cc49116bfe2a668f6543c7c1e9455b177ebcdc6f5cb8763f48a"
},
{
"hash": "686fe913dc963954b99e62048569cb9ac8e551c8",
"channel": "beta",
"version": "3.7.0-1.4.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-01-11T18:06:01.399151Z",
"archive": "beta/macos/flutter_macos_3.7.0-1.4.pre-beta.zip",
"sha256": "bfdd88b0069d82ffe5b4fd18e668f2bdc460b9dc64ec1990db5dc64617adc2c9"
},
{
"hash": "686fe913dc963954b99e62048569cb9ac8e551c8",
"channel": "beta",
"version": "3.7.0-1.4.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.4.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2023-01-11T18:03:59.749861Z",
"archive": "beta/macos/flutter_macos_arm64_3.7.0-1.4.pre-beta.zip",
"sha256": "e630996ecdcd7389cfcdeee5b7f1974a50151cba1c5b36ddf274d7d775e3dfa8"
},
{
"hash": "9b4416aaa79bf984d06aa40ab515a274a50a75a7",
"channel": "beta",
"version": "3.7.0-1.3.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.3.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-01-05T17:35:47.348107Z",
"archive": "beta/macos/flutter_macos_3.7.0-1.3.pre-beta.zip",
"sha256": "33568334e2489b1232b802102e10ce120735eb0c98aef0d0c6ebd872de08531c"
},
{
"hash": "9b4416aaa79bf984d06aa40ab515a274a50a75a7",
"channel": "beta",
"version": "3.7.0-1.3.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.3.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2023-01-05T17:33:17.835203Z",
"archive": "beta/macos/flutter_macos_arm64_3.7.0-1.3.pre-beta.zip",
"sha256": "ee84b7ac8e5f95061a243b9acddff25976537ee1a3296c4789d1c7c008bb74bc"
},
{
"hash": "c29b09b8782b39b1678bc9c861f40902086fb7c8",
"channel": "beta",
"version": "3.7.0-1.2.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-12-20T01:48:09.249423Z",
"archive": "beta/macos/flutter_macos_3.7.0-1.2.pre-beta.zip",
"sha256": "84d2d51f23dbaba87cb5171313c5ed58a33ee72fb69964c7af39d65b34013d2e"
},
{
"hash": "c29b09b8782b39b1678bc9c861f40902086fb7c8",
"channel": "beta",
"version": "3.7.0-1.2.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.2.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-12-20T01:45:00.490663Z",
"archive": "beta/macos/flutter_macos_arm64_3.7.0-1.2.pre-beta.zip",
"sha256": "a235539bf7c917f79f98ada1de9d11bdef4a7c6607b1b64abdfef7c24147d6cf"
},
{
"hash": "135454af32477f815a7525073027a3ff9eff1bfd",
"channel": "stable",
"version": "3.3.10",
"dart_sdk_version": "2.18.6",
"dart_sdk_arch": "x64",
"release_date": "2022-12-15T21:58:01.550028Z",
"archive": "stable/macos/flutter_macos_3.3.10-stable.zip",
"sha256": "5429d0f71bf3bfbe84c31f3ecf4c721babf51bce1b301ef2be5cbbaafa94410c"
},
{
"hash": "135454af32477f815a7525073027a3ff9eff1bfd",
"channel": "stable",
"version": "3.3.10",
"dart_sdk_version": "2.18.6",
"dart_sdk_arch": "arm64",
"release_date": "2022-12-15T21:55:11.427687Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.10-stable.zip",
"sha256": "af7e59fdfe8ac24cf553a65a89c22ac364d7bf6b35c73631254f19e2c1e4cbc1"
},
{
"hash": "e599f02c7af4aa8aba0e8e96f71c737f85be3c6e",
"channel": "beta",
"version": "3.7.0-1.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-12-08T18:01:09.182464Z",
"archive": "beta/macos/flutter_macos_3.7.0-1.1.pre-beta.zip",
"sha256": "0faa94be887f48883509588309b4f3f47850443d430304e3c536e9ab6af7d41a"
},
{
"hash": "e599f02c7af4aa8aba0e8e96f71c737f85be3c6e",
"channel": "beta",
"version": "3.7.0-1.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.1.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-12-08T17:57:35.704951Z",
"archive": "beta/macos/flutter_macos_arm64_3.7.0-1.1.pre-beta.zip",
"sha256": "157d3ce05b7eca0b249370b6a81bcc48544884f9b9d9555aa8a42f0dd7132503"
},
{
"hash": "b8f7f1f9869bb2d116aa6a70dbeac61000b52849",
"channel": "stable",
"version": "3.3.9",
"dart_sdk_version": "2.18.5",
"dart_sdk_arch": "arm64",
"release_date": "2022-11-23T16:32:40.143203Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.9-stable.zip",
"sha256": "872c8ecf32be88424e84e619fb53b4dd083ddae3e9bfd15a2caf14f624055d98"
},
{
"hash": "b8f7f1f9869bb2d116aa6a70dbeac61000b52849",
"channel": "stable",
"version": "3.3.9",
"dart_sdk_version": "2.18.5",
"dart_sdk_arch": "x64",
"release_date": "2022-11-23T16:30:39.672002Z",
"archive": "stable/macos/flutter_macos_3.3.9-stable.zip",
"sha256": "07c0601c9c8465ee7a165f621869b0690b4bce283dbb293c7ece9206f6914735"
},
{
"hash": "75927305ff855f76a9ef704f9b4a86fa2fce7292",
"channel": "beta",
"version": "3.6.0-0.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-374.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-11-17T19:36:00.807878Z",
"archive": "beta/macos/flutter_macos_3.6.0-0.1.pre-beta.zip",
"sha256": "68e4121503c48589ffd175a67a0c32baa8d67799edda9682f9be662b562e3914"
},
{
"hash": "75927305ff855f76a9ef704f9b4a86fa2fce7292",
"channel": "beta",
"version": "3.6.0-0.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-374.1.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-11-17T19:31:51.568642Z",
"archive": "beta/macos/flutter_macos_arm64_3.6.0-0.1.pre-beta.zip",
"sha256": "7a01c8ed90822fb4cb7c156dcf397eba9822f5bd6d968167057a74444307d47b"
},
{
"hash": "52b3dc25f6471c27b2144594abb11c741cb88f57",
"channel": "stable",
"version": "3.3.8",
"dart_sdk_version": "2.18.4",
"dart_sdk_arch": "x64",
"release_date": "2022-11-09T18:03:24.256809Z",
"archive": "stable/macos/flutter_macos_3.3.8-stable.zip",
"sha256": "2d97b90933da42d332f343dab97a982ce5317e904ff0fce3ca1ebe12c7d19501"
},
{
"hash": "52b3dc25f6471c27b2144594abb11c741cb88f57",
"channel": "stable",
"version": "3.3.8",
"dart_sdk_version": "2.18.4",
"dart_sdk_arch": "arm64",
"release_date": "2022-11-09T18:00:24.035959Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.8-stable.zip",
"sha256": "c49d66a68bd8e2dea1737cf58f72828e113f242ce4f28f268917baf30ea60ea9"
},
{
"hash": "e99c9c7cd9f6c0b2f8ae6e3ebfd585239f5568f4",
"channel": "stable",
"version": "3.3.7",
"dart_sdk_version": "2.18.4",
"dart_sdk_arch": "x64",
"release_date": "2022-11-02T17:37:46.823631Z",
"archive": "stable/macos/flutter_macos_3.3.7-stable.zip",
"sha256": "1bc4a9c4a8a89005157ff1ae17d2691c511b49cc1f0cf8b465bc1d0284d04d55"
},
{
"hash": "e99c9c7cd9f6c0b2f8ae6e3ebfd585239f5568f4",
"channel": "stable",
"version": "3.3.7",
"dart_sdk_version": "2.18.4",
"dart_sdk_arch": "arm64",
"release_date": "2022-11-02T17:32:22.643480Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.7-stable.zip",
"sha256": "95172586e28c8241a6c7a593573ec89fe0c48d70882421394923d477fac9f0a7"
},
{
"hash": "6928314d505d2bb4777be05e45d7808a5aa91d2a",
"channel": "stable",
"version": "3.3.6",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-10-26T16:39:56.056222Z",
"archive": "stable/macos/flutter_macos_3.3.6-stable.zip",
"sha256": "32845432ca48ca0fcf41857fdae54c681ff6b7e2ded4353046daf0e7649e168d"
},
{
"hash": "6928314d505d2bb4777be05e45d7808a5aa91d2a",
"channel": "stable",
"version": "3.3.6",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "arm64",
"release_date": "2022-10-26T16:36:36.259958Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.6-stable.zip",
"sha256": "4bb7cd85c31d90a40de6adb1a2bfab6b8f2e753805bd103968b5fb1b7625fcd6"
},
{
"hash": "d9111f64021372856901a1fd5bfbc386cade3318",
"channel": "stable",
"version": "3.3.5",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-10-19T22:04:57.692139Z",
"archive": "stable/macos/flutter_macos_3.3.5-stable.zip",
"sha256": "4790eedc878f749a8babd0d1632e832a784f71824d41746e9d953adb2352d9c3"
},
{
"hash": "d9111f64021372856901a1fd5bfbc386cade3318",
"channel": "stable",
"version": "3.3.5",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "arm64",
"release_date": "2022-10-19T22:01:44.977591Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.5-stable.zip",
"sha256": "55390466cd4d192620fff8558e6b757532c744c53724a2d533e033d94749c976"
},
{
"hash": "71520442d4d0d41b2d158c519928d90ddab3766f",
"channel": "beta",
"version": "3.4.0-34.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-255.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-10-06T17:02:17.314068Z",
"archive": "beta/macos/flutter_macos_3.4.0-34.1.pre-beta.zip",
"sha256": "c97204a171f5b9cc5436ffacce770dbc666288de8a8a114b894beca2df197b92"
},
{
"hash": "71520442d4d0d41b2d158c519928d90ddab3766f",
"channel": "beta",
"version": "3.4.0-34.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-255.2.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-10-06T16:58:56.925767Z",
"archive": "beta/macos/flutter_macos_arm64_3.4.0-34.1.pre-beta.zip",
"sha256": "b7c9f7e8141ae4a16b61183d2d16e1123ff5a0048e721e3ace3ccb84fa0da754"
},
{
"hash": "eb6d86ee27deecba4a83536aa20f366a6044895c",
"channel": "stable",
"version": "3.3.4",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-10-05T16:35:44.445492Z",
"archive": "stable/macos/flutter_macos_3.3.4-stable.zip",
"sha256": "3a39f0cadae5cf4fb1d634c9ec1c7564ccf1bf78d0cd6418e72e037ab8422f7b"
},
{
"hash": "eb6d86ee27deecba4a83536aa20f366a6044895c",
"channel": "stable",
"version": "3.3.4",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "arm64",
"release_date": "2022-10-05T16:33:26.309456Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.4-stable.zip",
"sha256": "a6825b56fcb789a48cc7c657c9ad24498743f0d35402364c0a9f020dbf895545"
},
{
"hash": "18a827f3933c19f51862dde3fa472197683249d6",
"channel": "stable",
"version": "3.3.3",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-09-28T19:42:54.155293Z",
"archive": "stable/macos/flutter_macos_3.3.3-stable.zip",
"sha256": "d6676dbe5aeedf8f4eff6f75fb632d6101cf1a357dee207d36ae9e7b30e197df"
},
{
"hash": "18a827f3933c19f51862dde3fa472197683249d6",
"channel": "stable",
"version": "3.3.3",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "arm64",
"release_date": "2022-09-28T19:38:29.677756Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.3-stable.zip",
"sha256": "41828809900dfc7cf0ef7027f83858b02a3824dc3eeee5b408726321414eddca"
},
{
"hash": "d6260f127fe3f88c98231243b387b48448479bff",
"channel": "beta",
"version": "3.4.0-17.2.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-146.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-09-21T20:14:46.975448Z",
"archive": "beta/macos/flutter_macos_3.4.0-17.2.pre-beta.zip",
"sha256": "8cbba6f8d1625334123ffd5486095d4f39756854c7341e9723db0636297f5cd5"
},
{
"hash": "d6260f127fe3f88c98231243b387b48448479bff",
"channel": "beta",
"version": "3.4.0-17.2.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-146.2.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-09-21T20:12:10.456513Z",
"archive": "beta/macos/flutter_macos_arm64_3.4.0-17.2.pre-beta.zip",
"sha256": "f3e93f73dae6d214e3042463800f6dcc4526f8206ff793a6eb201df8fbe79901"
},
{
"hash": "98338388391370431e7a3c0e4602b1a29fbd1581",
"channel": "beta",
"version": "3.4.0-17.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-146.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-09-21T00:32:52.256805Z",
"archive": "beta/macos/flutter_macos_3.4.0-17.1.pre-beta.zip",
"sha256": "5795e43e231589e0add9f69031d1a238f7c058271448ba5f5f907f6359e0080d"
},
{
"hash": "98338388391370431e7a3c0e4602b1a29fbd1581",
"channel": "beta",
"version": "3.4.0-17.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-146.1.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-09-21T00:29:48.404511Z",
"archive": "beta/macos/flutter_macos_arm64_3.4.0-17.1.pre-beta.zip",
"sha256": "6b674f0ee1b188e3c66fe879f916193008cdad8c4f1532dee02c98a0c8cfb9d3"
},
{
"hash": "e3c29ec00c9c825c891d75054c63fcc46454dca1",
"channel": "stable",
"version": "3.3.2",
"dart_sdk_version": "2.18.1",
"dart_sdk_arch": "arm64",
"release_date": "2022-09-14T15:35:34.505831Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.2-stable.zip",
"sha256": "bf59ede182ac9a675cb9f2a3e2ba70b8b3e94a0a22efdebd37cc5e3b57aa37e0"
},
{
"hash": "e3c29ec00c9c825c891d75054c63fcc46454dca1",
"channel": "stable",
"version": "3.3.2",
"dart_sdk_version": "2.18.1",
"dart_sdk_arch": "x64",
"release_date": "2022-09-14T15:00:33.177611Z",
"archive": "stable/macos/flutter_macos_3.3.2-stable.zip",
"sha256": "25f35d79b008e131d3d81c2bc29ef3d3e6508f2f9fcda3683f58a4216b8b06c9"
},
{
"hash": "4f9d92fbbdf072a70a70d2179a9f87392b94104c",
"channel": "stable",
"version": "3.3.1",
"dart_sdk_version": "2.18.0",
"dart_sdk_arch": "x64",
"release_date": "2022-09-07T15:18:17.414596Z",
"archive": "stable/macos/flutter_macos_3.3.1-stable.zip",
"sha256": "e6c53c683082272feed6514fe003a793955935f3ea04485e1ccd44a05da1cc1e"
},
{
"hash": "4f9d92fbbdf072a70a70d2179a9f87392b94104c",
"channel": "stable",
"version": "3.3.1",
"dart_sdk_version": "2.18.0",
"dart_sdk_arch": "arm64",
"release_date": "2022-09-07T15:15:28.246563Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.1-stable.zip",
"sha256": "648761d29335ab002ab0f0757f2392b73de09b0d4d8fae153eb49fb619c66837"
},
{
"hash": "ffccd96b62ee8cec7740dab303538c5fc26ac543",
"channel": "stable",
"version": "3.3.0",
"dart_sdk_version": "2.18.0",
"dart_sdk_arch": "x64",
"release_date": "2022-08-30T17:11:09.790844Z",
"archive": "stable/macos/flutter_macos_3.3.0-stable.zip",
"sha256": "f461df043b4a1b2dedcf31c11db5e5286b2b014804d2df445b85c6bb6ce0844b"
},
{
"hash": "ffccd96b62ee8cec7740dab303538c5fc26ac543",
"channel": "stable",
"version": "3.3.0",
"dart_sdk_version": "2.18.0",
"dart_sdk_arch": "arm64",
"release_date": "2022-08-30T17:08:26.835930Z",
"archive": "stable/macos/flutter_macos_arm64_3.3.0-stable.zip",
"sha256": "ad3b620aef65d43f54c5432a7f3a72304de639c7cf393a8a8796aa1094476b2e"
},
{
"hash": "096162697a9cdc79f4e47f7230d70935fa81fd24",
"channel": "beta",
"version": "3.3.0-0.5.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.7.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-23T16:52:21.746614Z",
"archive": "beta/macos/flutter_macos_3.3.0-0.5.pre-beta.zip",
"sha256": "7c002e918634f3f5d125b53ee624fa03fbf095b6f048adb8878e6277114d8c55"
},
{
"hash": "096162697a9cdc79f4e47f7230d70935fa81fd24",
"channel": "beta",
"version": "3.3.0-0.5.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.7.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-08-23T16:50:36.968554Z",
"archive": "beta/macos/flutter_macos_arm64_3.3.0-0.5.pre-beta.zip",
"sha256": "4b8a7d27a4126c4ca92e2ae6c9597701556057a2e4bc098747a0f2ebec17f661"
},
{
"hash": "3c0bee85b8e43b860877922bdc411a7333db4d32",
"channel": "beta",
"version": "3.3.0-0.4.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.7.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-20T04:38:15.866842Z",
"archive": "beta/macos/flutter_macos_3.3.0-0.4.pre-beta.zip",
"sha256": "53649b10202fa3c8a87c12380c9fa2a40e278de4b23039ebae8e15c3ac83ed79"
},
{
"hash": "3c0bee85b8e43b860877922bdc411a7333db4d32",
"channel": "beta",
"version": "3.3.0-0.4.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.7.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-08-20T04:35:35.455861Z",
"archive": "beta/macos/flutter_macos_arm64_3.3.0-0.4.pre-beta.zip",
"sha256": "4f37a85674030c69298cffa2193970b2f155e9611d81cae1e4fa324fc427439b"
},
{
"hash": "8c1149878bbb8f062aecfab4d825e5b87bdb4487",
"channel": "beta",
"version": "3.3.0-0.3.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-10T19:01:24.684350Z",
"archive": "beta/macos/flutter_macos_3.3.0-0.3.pre-beta.zip",
"sha256": "45d3e405a0d6e27c4ac4f3cd43cbbe06b95feb67685525a08165d07cf0dafa2c"
},
{
"hash": "8c1149878bbb8f062aecfab4d825e5b87bdb4487",
"channel": "beta",
"version": "3.3.0-0.3.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-08-10T18:58:07.202077Z",
"archive": "beta/macos/flutter_macos_arm64_3.3.0-0.3.pre-beta.zip",
"sha256": "0083abd1251c990d70f6c613e493ee84253684c486908448648fe16fea512ea5"
},
{
"hash": "7ac27ac8e6a42750c475ba8a2a3c7047b93fd949",
"channel": "beta",
"version": "3.3.0-0.2.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-08-03T04:31:44.508544Z",
"archive": "beta/macos/flutter_macos_arm64_3.3.0-0.2.pre-beta.zip",
"sha256": "bca81cc0c0b31ce06e69c0443959e71e73a2fa82d2553080092bff4f80a84ea3"
},
{
"hash": "7ac27ac8e6a42750c475ba8a2a3c7047b93fd949",
"channel": "beta",
"version": "3.3.0-0.2.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-03T01:58:04.779532Z",
"archive": "beta/macos/flutter_macos_3.3.0-0.2.pre-beta.zip",
"sha256": "e7b2928ccdeeb99aff34123f91d44451bb11164c9cc7757fac882e4abdbf56aa"
},
{
"hash": "d952ca86d64772b1b9b0df27cf9ea145e80c38e5",
"channel": "beta",
"version": "3.3.0-0.1.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-07-27T19:51:19.133963Z",
"archive": "beta/macos/flutter_macos_3.3.0-0.1.pre-beta.zip",
"sha256": "870976f4f179ee1cdafa87882c68fb9a533519508182a5580b7ba35b9dad87a5"
},
{
"hash": "d952ca86d64772b1b9b0df27cf9ea145e80c38e5",
"channel": "beta",
"version": "3.3.0-0.1.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-07-27T19:48:56.397604Z",
"archive": "beta/macos/flutter_macos_arm64_3.3.0-0.1.pre-beta.zip",
"sha256": "037550a2fdad281d070727cff68c0f5db12c116ee400b45faec5370effeddf31"
},
{
"hash": "f90da9b1672f7d006ba760fbb8fd1aa17af1a82a",
"channel": "beta",
"version": "3.3.0-0.0.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-07-20T19:10:36.884201Z",
"archive": "beta/macos/flutter_macos_3.3.0-0.0.pre-beta.zip",
"sha256": "a5bacbd9c5df2a48840b1e378e66e9f586c5bdbbc69ea0d0ff49de0280d5ca3f"
},
{
"hash": "f90da9b1672f7d006ba760fbb8fd1aa17af1a82a",
"channel": "beta",
"version": "3.3.0-0.0.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.2.beta)",
"dart_sdk_arch": "arm64",
"release_date": "2022-07-20T17:26:09.257987Z",
"archive": "beta/macos/flutter_macos_arm64_3.3.0-0.0.pre-beta.zip",
"sha256": "7ce648969a528edf1f8d826ca6fc324ce22d712d6081b15ec55fcff3a1d0c779"
},
{
"hash": "f1875d570e39de09040c8f79aa13cc56baab8db1",
"channel": "stable",

View File

@@ -1,11 +1,391 @@
{
"base_url": "https://storage.googleapis.com/flutter_infra_release/releases",
"current_release": {
"beta": "f28e570c8cb12a004fae2d796d0d9cd46603bde9",
"beta": "f732038a8cf4562ce38a1d7debb30209ae3da896",
"dev": "13a2fb10b838971ce211230f8ffdd094c14af02c",
"stable": "f1875d570e39de09040c8f79aa13cc56baab8db1"
"stable": "2ad6cd72c040113b47ee9055e722606a490ef0da"
},
"releases": [
{
"hash": "f732038a8cf4562ce38a1d7debb30209ae3da896",
"channel": "beta",
"version": "3.9.0-0.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-290.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-03-16T00:06:13.875844Z",
"archive": "beta/windows/flutter_windows_3.9.0-0.1.pre-beta.zip",
"sha256": "3754f76203a61e0483a64587d6790ec19616aa065367c5a64cf68029b8a03b0a"
},
{
"hash": "8b9b90e75107181aadc303d8d7422205863a35dd",
"channel": "beta",
"version": "3.9.0-0.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-290.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-03-15T23:46:20.941673Z",
"archive": "beta/windows/flutter_windows_3.9.0-0.1.pre-beta.zip",
"sha256": "f37ada75add1b6fdd91ad67dff564744a0c33b37ad66d2407dbadd69b519076c"
},
{
"hash": "f3d140022d6a68df8b0e3776594819ce0ee94e2d",
"channel": "beta",
"version": "3.9.0-0.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-290.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-03-15T22:54:39.722072Z",
"archive": "beta/windows/flutter_windows_3.9.0-0.1.pre-beta.zip",
"sha256": "58216af74574bd27f864eb2ef21eb3beb71229f28e317b0144e49441ff144800"
},
{
"hash": "2ad6cd72c040113b47ee9055e722606a490ef0da",
"channel": "stable",
"version": "3.7.7",
"dart_sdk_version": "2.19.4",
"dart_sdk_arch": "x64",
"release_date": "2023-03-08T20:54:40.512026Z",
"archive": "stable/windows/flutter_windows_3.7.7-stable.zip",
"sha256": "66f18e02b4e0ecad275a6376274adfad5e34c23c4a19749e9960d0a70cba7945"
},
{
"hash": "12cb4eb7a009f52b347b62ade7cb4854b926af72",
"channel": "stable",
"version": "3.7.6",
"dart_sdk_version": "2.19.3",
"dart_sdk_arch": "x64",
"release_date": "2023-03-01T21:08:50.824736Z",
"archive": "stable/windows/flutter_windows_3.7.6-stable.zip",
"sha256": "f6359d963bdf330fe81b33fcd37e954810a6f234ec27a4c7e657787d8997e4a8"
},
{
"hash": "c07f7888888435fd9df505aa2efc38d3cf65681b",
"channel": "stable",
"version": "3.7.5",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-23T04:35:24.035013Z",
"archive": "stable/windows/flutter_windows_3.7.5-stable.zip",
"sha256": "ea543520a5051e4512c75828ccf3085e586b6c62712c62cb33bf0b3d386a8ba1"
},
{
"hash": "b4bce91dd0f168179d46a7ae5eceb3572ba9637a",
"channel": "stable",
"version": "3.7.4",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-21T21:33:27.210617Z",
"archive": "stable/windows/flutter_windows_3.7.4-stable.zip",
"sha256": "0a71374359f4782da0499fe4efddfccbc71a027639afeaccbe89d3a527ba4292"
},
{
"hash": "1a0a03a41d6613c10bab23508dee456f184b181b",
"channel": "beta",
"version": "3.8.0-10.1.pre",
"dart_sdk_version": "3.0.0 (build 3.0.0-218.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-02-17T17:16:41.121017Z",
"archive": "beta/windows/flutter_windows_3.8.0-10.1.pre-beta.zip",
"sha256": "69c523a2450969bb749c4850c78d9ecf2dd7b5773f3da5517110331e6edd51bf"
},
{
"hash": "9944297138845a94256f1cf37beb88ff9a8e811a",
"channel": "stable",
"version": "3.7.3",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-09T17:07:20.774874Z",
"archive": "stable/windows/flutter_windows_3.7.3-stable.zip",
"sha256": "5bd1eb343df962a579f6f8ddf4231661b2158c582fe3b343673e5762c290b6db"
},
{
"hash": "32fb2f948e9b1a2d1b876ebee3558be7f51b457f",
"channel": "stable",
"version": "3.7.2",
"dart_sdk_version": "2.19.2",
"dart_sdk_arch": "x64",
"release_date": "2023-02-08T18:12:42.520126Z",
"archive": "stable/windows/flutter_windows_3.7.2-stable.zip",
"sha256": "328a7e6768852e1b118700aaccc73b09809c3636e8fdbbe0a9cedcb60d8d22df"
},
{
"hash": "7048ed95a5ad3e43d697e0c397464193991fc230",
"channel": "stable",
"version": "3.7.1",
"dart_sdk_version": "2.19.1",
"dart_sdk_arch": "x64",
"release_date": "2023-02-01T21:25:51.478009Z",
"archive": "stable/windows/flutter_windows_3.7.1-stable.zip",
"sha256": "8712d43e0c4a9ca87887507ee72e68c7cf9da487eef9dd28c14556491fd82d7d"
},
{
"hash": "b06b8b2710955028a6b562f5aa6fe62941d6febf",
"channel": "stable",
"version": "3.7.0",
"dart_sdk_version": "2.19.0",
"dart_sdk_arch": "x64",
"release_date": "2023-01-24T19:03:01.219427Z",
"archive": "stable/windows/flutter_windows_3.7.0-stable.zip",
"sha256": "48ba4e41f7bcf4daeebca292d876fac37df39e2dd0250c45d27995dd41864fd6"
},
{
"hash": "099b3f4bf1581796fac3848d3381dbf2f29edbea",
"channel": "beta",
"version": "3.7.0-1.5.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.6.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-01-23T23:13:05.768235Z",
"archive": "beta/windows/flutter_windows_3.7.0-1.5.pre-beta.zip",
"sha256": "fcd0821b8914b1d6ede92c2e7bc05746bb42a6cdbbade14a9bec3e96a8a5d5fc"
},
{
"hash": "686fe913dc963954b99e62048569cb9ac8e551c8",
"channel": "beta",
"version": "3.7.0-1.4.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-01-11T18:19:13.038507Z",
"archive": "beta/windows/flutter_windows_3.7.0-1.4.pre-beta.zip",
"sha256": "a1bd1aa0d07527b218b7fe5d3f035caa1142f4ee85d10b0993d004fa2e32bbe4"
},
{
"hash": "9b4416aaa79bf984d06aa40ab515a274a50a75a7",
"channel": "beta",
"version": "3.7.0-1.3.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.3.beta)",
"dart_sdk_arch": "x64",
"release_date": "2023-01-05T17:49:04.065552Z",
"archive": "beta/windows/flutter_windows_3.7.0-1.3.pre-beta.zip",
"sha256": "042da7d26c46e84b6a65e9dace31a7020e1ae71b665577b3d9d0358437af2306"
},
{
"hash": "c29b09b8782b39b1678bc9c861f40902086fb7c8",
"channel": "beta",
"version": "3.7.0-1.2.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-12-20T02:02:13.097865Z",
"archive": "beta/windows/flutter_windows_3.7.0-1.2.pre-beta.zip",
"sha256": "3d8844086aa65c9f03e684bd9869dea856d8f0c7f492dd6d4b689dde3cbc03f6"
},
{
"hash": "135454af32477f815a7525073027a3ff9eff1bfd",
"channel": "stable",
"version": "3.3.10",
"dart_sdk_version": "2.18.6",
"dart_sdk_arch": "x64",
"release_date": "2022-12-15T22:10:59.100252Z",
"archive": "stable/windows/flutter_windows_3.3.10-stable.zip",
"sha256": "bcf931ae554f3e01190a4f278ec7dbda7c61ded73b23e3d75232a8eecbf86399"
},
{
"hash": "e599f02c7af4aa8aba0e8e96f71c737f85be3c6e",
"channel": "beta",
"version": "3.7.0-1.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-444.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-12-08T18:11:40.970921Z",
"archive": "beta/windows/flutter_windows_3.7.0-1.1.pre-beta.zip",
"sha256": "9e19c383c47c07dd25620692c61d6a62966bbc1834e07af8b2b0d4b5b13152eb"
},
{
"hash": "b8f7f1f9869bb2d116aa6a70dbeac61000b52849",
"channel": "stable",
"version": "3.3.9",
"dart_sdk_version": "2.18.5",
"dart_sdk_arch": "x64",
"release_date": "2022-11-23T16:42:26.475643Z",
"archive": "stable/windows/flutter_windows_3.3.9-stable.zip",
"sha256": "2c3f03ec61f2bc218059d675746524126b24948cbaae310bc5e4da32ec96e80b"
},
{
"hash": "75927305ff855f76a9ef704f9b4a86fa2fce7292",
"channel": "beta",
"version": "3.6.0-0.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-374.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-11-17T19:47:21.141825Z",
"archive": "beta/windows/flutter_windows_3.6.0-0.1.pre-beta.zip",
"sha256": "80b2f58bd8b74d9f7e635629d2e211a0d6597609bd6f63d585b89741b933aa8c"
},
{
"hash": "52b3dc25f6471c27b2144594abb11c741cb88f57",
"channel": "stable",
"version": "3.3.8",
"dart_sdk_version": "2.18.4",
"dart_sdk_arch": "x64",
"release_date": "2022-11-09T18:14:21.714914Z",
"archive": "stable/windows/flutter_windows_3.3.8-stable.zip",
"sha256": "170beb36b218b012596ed9c568aa9db1ccad707dd5663f46a1e57d997eeb78a3"
},
{
"hash": "e99c9c7cd9f6c0b2f8ae6e3ebfd585239f5568f4",
"channel": "stable",
"version": "3.3.7",
"dart_sdk_version": "2.18.4",
"dart_sdk_arch": "x64",
"release_date": "2022-11-02T17:47:39.033688Z",
"archive": "stable/windows/flutter_windows_3.3.7-stable.zip",
"sha256": "726c4c1f8810a9f9e4ddcf0611b12992abb8142606ca32f07838a20a537f14af"
},
{
"hash": "6928314d505d2bb4777be05e45d7808a5aa91d2a",
"channel": "stable",
"version": "3.3.6",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-10-26T16:46:05.015003Z",
"archive": "stable/windows/flutter_windows_3.3.6-stable.zip",
"sha256": "66c6f940a8e8f2d51fea9f46895490fb1d47d85e281efd36f8900581f721fe44"
},
{
"hash": "d9111f64021372856901a1fd5bfbc386cade3318",
"channel": "stable",
"version": "3.3.5",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-10-19T22:15:09.477535Z",
"archive": "stable/windows/flutter_windows_3.3.5-stable.zip",
"sha256": "87e8d83662de7a90c4aa86e766f5a0a5d3ac7c26c07ebc770c109d14b0105e82"
},
{
"hash": "71520442d4d0d41b2d158c519928d90ddab3766f",
"channel": "beta",
"version": "3.4.0-34.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-255.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-10-06T17:12:47.130792Z",
"archive": "beta/windows/flutter_windows_3.4.0-34.1.pre-beta.zip",
"sha256": "8c397f8ee6494c04ff38971e43426d07d32dde03730dd943bb3691497b9a0865"
},
{
"hash": "eb6d86ee27deecba4a83536aa20f366a6044895c",
"channel": "stable",
"version": "3.3.4",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-10-05T16:46:53.035404Z",
"archive": "stable/windows/flutter_windows_3.3.4-stable.zip",
"sha256": "87632a47a631aea267eedf48c851b50aefbf7ff4e19651746ba58975e5edb087"
},
{
"hash": "18a827f3933c19f51862dde3fa472197683249d6",
"channel": "stable",
"version": "3.3.3",
"dart_sdk_version": "2.18.2",
"dart_sdk_arch": "x64",
"release_date": "2022-09-28T19:52:44.384630Z",
"archive": "stable/windows/flutter_windows_3.3.3-stable.zip",
"sha256": "34d1456306c3eff891bb53863c8319a19f9d6f7f844763720add830a7d974aa7"
},
{
"hash": "d6260f127fe3f88c98231243b387b48448479bff",
"channel": "beta",
"version": "3.4.0-17.2.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-146.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-09-21T20:26:28.792489Z",
"archive": "beta/windows/flutter_windows_3.4.0-17.2.pre-beta.zip",
"sha256": "8d0f2e145b4ed81948dc907a8b332890e87da809ce4a6e3fc725d55acd205c08"
},
{
"hash": "98338388391370431e7a3c0e4602b1a29fbd1581",
"channel": "beta",
"version": "3.4.0-17.1.pre",
"dart_sdk_version": "2.19.0 (build 2.19.0-146.1.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-09-21T00:43:43.298606Z",
"archive": "beta/windows/flutter_windows_3.4.0-17.1.pre-beta.zip",
"sha256": "2a8c339e42c573c409fb5ef26373cf4b623feaf721924faefafa9ff89a74fc41"
},
{
"hash": "e3c29ec00c9c825c891d75054c63fcc46454dca1",
"channel": "stable",
"version": "3.3.2",
"dart_sdk_version": "2.18.1",
"dart_sdk_arch": "x64",
"release_date": "2022-09-14T15:12:51.830276Z",
"archive": "stable/windows/flutter_windows_3.3.2-stable.zip",
"sha256": "444a1bfcb7143370e6ed826ebab0a2ff2c73a10a5e239a821d34811e71977263"
},
{
"hash": "4f9d92fbbdf072a70a70d2179a9f87392b94104c",
"channel": "stable",
"version": "3.3.1",
"dart_sdk_version": "2.18.0",
"dart_sdk_arch": "x64",
"release_date": "2022-09-07T15:24:37.360637Z",
"archive": "stable/windows/flutter_windows_3.3.1-stable.zip",
"sha256": "207d567a30fec11153dd9f8aa305014dda6d172cea1712daa103dacea694ace7"
},
{
"hash": "ffccd96b62ee8cec7740dab303538c5fc26ac543",
"channel": "stable",
"version": "3.3.0",
"dart_sdk_version": "2.18.0",
"dart_sdk_arch": "x64",
"release_date": "2022-08-30T17:23:11.902225Z",
"archive": "stable/windows/flutter_windows_3.3.0-stable.zip",
"sha256": "ed705da07825b3d9d1dcaf566c9b0e18fd0d9c5deaab771024882534cc4ecdb3"
},
{
"hash": "096162697a9cdc79f4e47f7230d70935fa81fd24",
"channel": "beta",
"version": "3.3.0-0.5.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.7.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-23T17:03:59.164239Z",
"archive": "beta/windows/flutter_windows_3.3.0-0.5.pre-beta.zip",
"sha256": "e4d9f7ff79449ed1af361c6fe7f76277ea059b8e731aa5c209d067e49f460975"
},
{
"hash": "3c0bee85b8e43b860877922bdc411a7333db4d32",
"channel": "beta",
"version": "3.3.0-0.4.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.7.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-20T04:49:06.533728Z",
"archive": "beta/windows/flutter_windows_3.3.0-0.4.pre-beta.zip",
"sha256": "16420bd046bc06d35f7c16fa23b0a262484bf43a8077da7907b8ac80ba1bba9b"
},
{
"hash": "8c1149878bbb8f062aecfab4d825e5b87bdb4487",
"channel": "beta",
"version": "3.3.0-0.3.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-10T19:15:56.456584Z",
"archive": "beta/windows/flutter_windows_3.3.0-0.3.pre-beta.zip",
"sha256": "6a082a9e994bb55f20482c4570778b702ca2904179e9b03a400f14afe2be220b"
},
{
"hash": "7ac27ac8e6a42750c475ba8a2a3c7047b93fd949",
"channel": "beta",
"version": "3.3.0-0.2.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-08-03T01:08:04.522815Z",
"archive": "beta/windows/flutter_windows_3.3.0-0.2.pre-beta.zip",
"sha256": "50a8604cb473ee24549cc215d4185dc85fa7a11c88c08bf03418d9b175e4e4b7"
},
{
"hash": "d952ca86d64772b1b9b0df27cf9ea145e80c38e5",
"channel": "beta",
"version": "3.3.0-0.1.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.4.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-07-27T20:02:02.713990Z",
"archive": "beta/windows/flutter_windows_3.3.0-0.1.pre-beta.zip",
"sha256": "bbf926ca1ac393d837e4bb8a9a699ae5ab6c68d87c09f010fb4fb9fcaf058e0c"
},
{
"hash": "f90da9b1672f7d006ba760fbb8fd1aa17af1a82a",
"channel": "beta",
"version": "3.3.0-0.0.pre",
"dart_sdk_version": "2.18.0 (build 2.18.0-271.2.beta)",
"dart_sdk_arch": "x64",
"release_date": "2022-07-20T17:35:34.178761Z",
"archive": "beta/windows/flutter_windows_3.3.0-0.0.pre-beta.zip",
"sha256": "45a95c9e54945b97b0891a17d099052a6063001441be5a833e2b75e45f5acc74"
},
{
"hash": "f1875d570e39de09040c8f79aa13cc56baab8db1",
"channel": "stable",