Compare commits

..

11 Commits

Author SHA1 Message Date
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
4 changed files with 163 additions and 40 deletions

View File

@@ -1,6 +1,7 @@
name: Main workflow name: test
on: on:
workflow_dispatch:
push: push:
branches: branches:
- main - main
@@ -26,8 +27,16 @@ jobs:
strategy: strategy:
matrix: matrix:
operating-system: operating-system:
[ubuntu-latest, windows-latest, macos-latest, macos-13, macos-14] - ubuntu-latest
- windows-latest
- macos-latest
- macos-13
channel: [stable, beta, master] 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: include:
- operating-system: ubuntu-latest - operating-system: ubuntu-latest
channel: main channel: main
@@ -39,6 +48,8 @@ jobs:
uses: ./ uses: ./
with: with:
channel: ${{ matrix.channel }} channel: ${{ matrix.channel }}
dry-run: ${{ matrix.dry-run }}
git-source: ${{ matrix.git-source }}
- name: Echo outputs - name: Echo outputs
run: | run: |
echo RUNNER-OS=${{ runner.os }} echo RUNNER-OS=${{ runner.os }}
@@ -51,8 +62,16 @@ jobs:
echo ARCHITECTURE=${{ steps.flutter-action.outputs.ARCHITECTURE }} echo ARCHITECTURE=${{ steps.flutter-action.outputs.ARCHITECTURE }}
shell: bash shell: bash
- run: dart --version - run: dart --version
if: ${{ matrix.dry-run != true }}
shell: bash shell: bash
- run: flutter --version - 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 shell: bash
test_cache: test_cache:
@@ -61,7 +80,7 @@ jobs:
strategy: strategy:
matrix: matrix:
operating-system: operating-system:
[ubuntu-latest, windows-latest, macos-latest, macos-13, macos-14] [ubuntu-latest, windows-latest, macos-latest, macos-13]
steps: steps:
- name: Clone repository - name: Clone repository
@@ -98,7 +117,10 @@ jobs:
shell: bash shell: bash
test_print_output: test_print_output:
runs-on: macos-latest runs-on: macos-13
# These calls to setup.sh sepcify the -t flag, which enables test mode.
# Test mode uses hardcoded Flutter release manifests from test/ directory.
steps: steps:
- name: Clone repository - name: Clone repository
@@ -109,7 +131,7 @@ jobs:
shell: bash shell: bash
- run: ./setup.sh -t -p | grep '3.7.7' - run: ./setup.sh -t -p | grep '3.7.7'
shell: bash shell: bash
- run: ./setup.sh -t -p | grep 'x64' - run: ./setup.sh -t -p -a x64 | grep 'x64'
shell: bash shell: bash
- run: ./setup.sh -t -p stable | grep 'stable' - run: ./setup.sh -t -p stable | grep 'stable'
shell: bash shell: bash
@@ -121,13 +143,13 @@ jobs:
shell: bash shell: bash
- run: ./setup.sh -t -p -n 3.3.1 stable | grep '3.3.1' - run: ./setup.sh -t -p -n 3.3.1 stable | grep '3.3.1'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 2 stable | grep '2.10.5' - run: ./setup.sh -t -p -n 2 -a x64 stable | grep '2.10.5'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 2 beta | grep '2.13.0-0.4.pre' - run: ./setup.sh -t -p -n 2 -a x64 beta | grep '2.13.0-0.4.pre'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 2 any | grep 'beta' - run: ./setup.sh -t -p -n 2 -a x64 any | grep 'beta'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 2 any | grep '2.13.0-0.4.pre' - run: ./setup.sh -t -p -n 2 -a x64 any | grep '2.13.0-0.4.pre'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 3 any | grep 'beta' - run: ./setup.sh -t -p -n 3 any | grep 'beta'
shell: bash shell: bash
@@ -141,47 +163,45 @@ jobs:
shell: bash shell: bash
- run: ./setup.sh -t -p -n any -a arm64 stable | grep 'arm64' - run: ./setup.sh -t -p -n any -a arm64 stable | grep 'arm64'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 1 stable | grep '1.22.6' - run: ./setup.sh -t -p -n 1 -a x64 stable | grep '1.22.6'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 0 any | grep 'beta' - run: ./setup.sh -t -p -n 0 -a x64 any | grep 'beta'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 0 any | grep '0.11.13' - run: ./setup.sh -t -p -n 0 -a x64 any | grep '0.11.13'
shell: bash shell: bash
- run: ./setup.sh -t -p | grep 'flutter-macos-stable-3.7.7-x64-2ad6cd72c040113b47ee9055e722606a490ef0da' - run: ./setup.sh -t -p -a x64 | grep 'flutter-macos-stable-3.7.7-x64-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash shell: bash
- run: ./setup.sh -t -p stable | grep 'flutter-macos-stable-3.7.7-x64-2ad6cd72c040113b47ee9055e722606a490ef0da' - run: ./setup.sh -t -p -a x64 stable | grep 'flutter-macos-stable-3.7.7-x64-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash shell: bash
- run: ./setup.sh -t -p beta | grep 'flutter-macos-beta-3.9.0-0.1.pre-x64-f732038a8cf4562ce38a1d7debb30209ae3da896' - run: ./setup.sh -t -p -a x64 beta | grep 'flutter-macos-beta-3.9.0-0.1.pre-x64-f732038a8cf4562ce38a1d7debb30209ae3da896'
shell: bash shell: bash
- run: ./setup.sh -t -p dev | grep 'flutter-macos-dev-2.11.0-0.1.pre-x64-b101bfe32f634566e7cb2791a9efe19cf8828b15' - run: ./setup.sh -t -p -a x64 dev | grep 'flutter-macos-dev-2.11.0-0.1.pre-x64-b101bfe32f634566e7cb2791a9efe19cf8828b15'
shell: bash shell: bash
- run: ./setup.sh -t -p master | grep 'flutter-macos-master-any-x64-master' - run: ./setup.sh -t -p -a x64 master | grep 'flutter-macos-master-any-x64-master'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 5b12b74 master | grep 'flutter-macos-master-5b12b74-x64-master' - run: ./setup.sh -t -p -n 5b12b74 -a x64 master | grep 'flutter-macos-master-5b12b74-x64-master'
shell: bash 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-x64-master' - run: ./setup.sh -t -p -n 3.12.0-12.0.pre -a x64 master | grep 'flutter-macos-master-3.12.0-12.0.pre-x64-master'
shell: bash shell: bash
- run: ./setup.sh -t -p -n stable master | grep 'flutter-macos-master-stable-x64-master' - run: ./setup.sh -t -p -n 2 -a x64 any | grep 'flutter-macos-beta-2.13.0-0.4.pre-x64-25caf1461b8f643092a9f6f5b224453b5c057d10'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 2 any | grep 'flutter-macos-beta-2.13.0-0.4.pre-x64-25caf1461b8f643092a9f6f5b224453b5c057d10' - run: ./setup.sh -t -p -n 1 -a x64 any | grep 'flutter-macos-beta-1.26.0-17.8.pre-x64-044f2cf5607a26f8818dab0f766400e85c52bdff'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 1 any | grep 'flutter-macos-beta-1.26.0-17.8.pre-x64-044f2cf5607a26f8818dab0f766400e85c52bdff' - run: ./setup.sh -t -p -n 0 -a x64 any | grep 'flutter-macos-beta-0.11.13-x64-58c8489fcdb4e4ef6c010117584c9b23d15221aa'
shell: bash shell: bash
- run: ./setup.sh -t -p -n 0 any | grep 'flutter-macos-beta-0.11.13-x64-58c8489fcdb4e4ef6c010117584c9b23d15221aa' - run: ./setup.sh -t -p -a x64 | grep '/Users/runner/hostedtoolcache/flutter/stable-3.7.7-x64'
shell: bash shell: bash
- run: ./setup.sh -t -p | grep '/Users/runner/hostedtoolcache/flutter/stable-3.7.7-x64' - run: ./setup.sh -t -p -a x64 stable | grep '/Users/runner/hostedtoolcache/flutter/stable-3.7.7-x64'
shell: bash shell: bash
- run: ./setup.sh -t -p stable | grep '/Users/runner/hostedtoolcache/flutter/stable-3.7.7-x64' - run: ./setup.sh -t -p -a x64 beta | grep '/Users/runner/hostedtoolcache/flutter/beta-3.9.0-0.1.pre-x64'
shell: bash shell: bash
- run: ./setup.sh -t -p beta | grep '/Users/runner/hostedtoolcache/flutter/beta-3.9.0-0.1.pre-x64' - run: ./setup.sh -t -p -a x64 dev | grep '/Users/runner/hostedtoolcache/flutter/dev-2.11.0-0.1.pre-x64'
shell: bash shell: bash
- run: ./setup.sh -t -p dev | grep '/Users/runner/hostedtoolcache/flutter/dev-2.11.0-0.1.pre-x64' - run: ./setup.sh -t -p -a x64 master | grep '/Users/runner/hostedtoolcache/flutter/master-any-x64'
shell: bash
- run: ./setup.sh -t -p master | grep '/Users/runner/hostedtoolcache/flutter/master-any-x64'
shell: bash shell: bash
- run: ./setup.sh -t -p -k 'custom-:channel:-:version:-:hash:' | grep 'custom-stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da' - run: ./setup.sh -t -p -k 'custom-:channel:-:version:-:hash:' | grep 'custom-stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash shell: bash
- run: ./setup.sh -t -p -k 'custom-:channel:-:version:-:sha256:' | grep 'custom-stable-3.7.7-78957b52f023a0d811add27eddc59b1a59d27d2ada5df123f39d0315708fb2d5' - run: ./setup.sh -t -p -k 'custom-:channel:-:version:-:sha256:' -a x64 | grep 'custom-stable-3.7.7-78957b52f023a0d811add27eddc59b1a59d27d2ada5df123f39d0315708fb2d5'
shell: bash shell: bash
- run: ./setup.sh -t -p -c '/tmp/flutter/:channel:-:version:-:hash:' | grep '/tmp/flutter/stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da' - run: ./setup.sh -t -p -c '/tmp/flutter/:channel:-:version:-:hash:' | grep '/tmp/flutter/stable-3.7.7-2ad6cd72c040113b47ee9055e722606a490ef0da'
shell: bash shell: bash

View File

@@ -3,9 +3,9 @@
Flutter environment for use in GitHub Actions. It works on Linux, Windows, and Flutter environment for use in GitHub Actions. It works on Linux, Windows, and
macOS. macOS.
The following sections show how to configure this action. Originally created by [Alif Rachmawadi]. Maintained by [Bartek Pacia].
Maintainers: [Alif Rachmawadi] (original creator), [Bartek Pacia] The following sections show how to configure this action.
## Specifying Flutter version ## Specifying Flutter version
@@ -60,10 +60,12 @@ steps:
> flutter: ">= 3.19.0 <4.0.0" > flutter: ">= 3.19.0 <4.0.0"
> ``` > ```
> [!WARNING] > [!NOTE]
> >
> Using `flutter-version-file` requires [`yq`][https://github.com/mikefarah/yq], > Using `flutter-version-file` requires [`yq`](https://github.com/mikefarah/yq),
> which is not pre-installed in `windows` images. Install it yourself. > which is not pre-installed in `windows` runners. Fortunately, since version
> 2.18.0, this action installs `yq` automatically, so no action is required from
> you.
### Use latest release for particular channel ### Use latest release for particular channel
@@ -120,7 +122,61 @@ steps:
- run: flutter --version - run: flutter --version
``` ```
## Build Target ### 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/Flutter-Foundation/flutter.git)
- [a Flutter fork that supports
HarmonyOS](https://gitee.com/harmonycommando_flutter/flutter.git)
```yaml
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: master
flutter-version: 3.24.0
git-source: https://github.com/Flutter-Foundation/flutter.git
- run: flutter --version
```
> [!NOTE]
>
> This feature was implemented in
> [#344](https://github.com/subosito/flutter-action/pull/334) and is available
> since v2.18.0.
### Apply a patch
Sometimes you find a bug in Flutter and you 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@v4
- 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: Build **Android** APK and app bundle:
@@ -131,7 +187,7 @@ steps:
- name: Set up Flutter - name: Set up Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
flutter-version: 3.19.0 flutter-version: 3.24.0
- run: flutter pub get - run: flutter pub get
- run: flutter test - run: flutter test
- run: flutter build apk - run: flutter build apk
@@ -284,5 +340,28 @@ steps:
echo PUB-CACHE-KEY=${{ steps.flutter-action.outputs.PUB-CACHE-KEY }} echo PUB-CACHE-KEY=${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}
``` ```
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@v4
- 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 }}
shell: bash
```
[Alif Rachmawadi]: https://github.com/subosito [Alif Rachmawadi]: https://github.com/subosito
[Bartek Pacia]: https://github.com/bartekpacia [Bartek Pacia]: https://github.com/bartekpacia

View File

@@ -42,6 +42,14 @@ inputs:
description: Flutter pub cache path description: Flutter pub cache path
required: false required: false
default: default 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: outputs:
CHANNEL: CHANNEL:
@@ -65,10 +73,21 @@ outputs:
PUB-CACHE-PATH: PUB-CACHE-PATH:
value: "${{ steps.flutter-action.outputs.PUB-CACHE-PATH }}" value: "${{ steps.flutter-action.outputs.PUB-CACHE-PATH }}"
description: Path to pub cache description: Path to pub cache
GIT_SOURCE:
value: "${{ steps.flutter-action.outputs.GIT_SOURCE }}"
description: Git source of Flutter SDK repository to clone
runs: runs:
using: composite using: composite
steps: steps:
# This is a cross-platform composite action that needs yq.
# 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'
run: choco install yq
shell: bash
- name: Make setup script executable - name: Make setup script executable
run: chmod +x "$GITHUB_ACTION_PATH/setup.sh" run: chmod +x "$GITHUB_ACTION_PATH/setup.sh"
shell: bash shell: bash
@@ -85,6 +104,7 @@ runs:
-c '${{ inputs.cache-path }}' \ -c '${{ inputs.cache-path }}' \
-l '${{ inputs.pub-cache-key }}' \ -l '${{ inputs.pub-cache-key }}' \
-d '${{ inputs.pub-cache-path }}' \ -d '${{ inputs.pub-cache-path }}' \
-g '${{ inputs.git-source }}' \
${{ inputs.channel }} ${{ inputs.channel }}
- name: Cache Flutter - name: Cache Flutter
@@ -108,6 +128,7 @@ runs:
- name: Run setup script - name: Run setup script
shell: bash shell: bash
if: ${{ inputs.dry-run != 'true' && inputs.dry-run != true }}
run: | run: |
$GITHUB_ACTION_PATH/setup.sh \ $GITHUB_ACTION_PATH/setup.sh \
-n '${{ steps.flutter-action.outputs.VERSION }}' \ -n '${{ steps.flutter-action.outputs.VERSION }}' \

View File

@@ -78,8 +78,9 @@ TEST_MODE=false
ARCH="" ARCH=""
VERSION="" VERSION=""
VERSION_FILE="" VERSION_FILE=""
GIT_SOURCE=""
while getopts 'tc:k:d:l:pa:n:f:' flag; do while getopts 'tc:k:d:l:pa:n:f:g:' flag; do
case "$flag" in case "$flag" in
c) CACHE_PATH="$OPTARG" ;; c) CACHE_PATH="$OPTARG" ;;
k) CACHE_KEY="$OPTARG" ;; k) CACHE_KEY="$OPTARG" ;;
@@ -96,6 +97,7 @@ while getopts 'tc:k:d:l:pa:n:f:' flag; do
exit 1 exit 1
fi fi
;; ;;
g) GIT_SOURCE="$OPTARG" ;;
?) exit 2 ;; ?) exit 2 ;;
esac esac
done done
@@ -108,7 +110,7 @@ if [ -n "$VERSION_FILE" ]; then
exit 1 exit 1
fi fi
VERSION="$(yq '.environment.flutter' "$VERSION_FILE")" VERSION="$(yq eval '.environment.flutter' "$VERSION_FILE")"
fi fi
ARR_CHANNEL=("${@:$OPTIND:1}") ARR_CHANNEL=("${@:$OPTIND:1}")
@@ -121,6 +123,7 @@ CHANNEL="${ARR_CHANNEL[0]:-}"
[ -z "$CACHE_KEY" ] && CACHE_KEY="flutter-:os:-:channel:-:version:-:arch:-:hash:" [ -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_KEY" ] && PUB_CACHE_KEY="flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
[ -z "$PUB_CACHE_PATH" ] && PUB_CACHE_PATH="default" [ -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` is what Dart and Flutter looks for in the environment, while
# `PUB_CACHE_PATH` is passed in from the action. # `PUB_CACHE_PATH` is passed in from the action.
@@ -213,7 +216,7 @@ fi
if [ ! -x "$CACHE_PATH/bin/flutter" ]; then if [ ! -x "$CACHE_PATH/bin/flutter" ]; then
if [ "$CHANNEL" = "master" ] || [ "$CHANNEL" = "main" ]; then if [ "$CHANNEL" = "master" ] || [ "$CHANNEL" = "main" ]; then
git clone -b "$CHANNEL" https://github.com/flutter/flutter.git "$CACHE_PATH" git clone -b "$CHANNEL" "$GIT_SOURCE" "$CACHE_PATH"
if [ "$VERSION" != "any" ]; then if [ "$VERSION" != "any" ]; then
git config --global --add safe.directory "$CACHE_PATH" git config --global --add safe.directory "$CACHE_PATH"
(cd "$CACHE_PATH" && git checkout "$VERSION") (cd "$CACHE_PATH" && git checkout "$VERSION")