Compare commits

..

5 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
4 changed files with 92 additions and 13 deletions

View File

@@ -27,9 +27,16 @@ jobs:
strategy: strategy:
matrix: matrix:
operating-system: operating-system:
[ubuntu-latest, windows-latest, macos-latest, macos-13] - ubuntu-latest
- windows-latest
- macos-latest
- macos-13
channel: [stable, beta, master] channel: [stable, beta, master]
dry-run: [true, false] 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
@@ -42,6 +49,7 @@ jobs:
with: with:
channel: ${{ matrix.channel }} channel: ${{ matrix.channel }}
dry-run: ${{ matrix.dry-run }} 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 }}

View File

@@ -3,6 +3,8 @@
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.
Originally created by [Alif Rachmawadi]. Maintained by [Bartek Pacia].
The following sections show how to configure this action. The following sections show how to configure this action.
## Specifying Flutter version ## Specifying Flutter version
@@ -58,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
@@ -118,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:
@@ -129,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
@@ -305,11 +363,5 @@ steps:
echo PUB-CACHE-KEY=${{ steps.flutter-action.outputs.PUB-CACHE-KEY }} echo PUB-CACHE-KEY=${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}
shell: bash shell: bash
``` ```
## Maintainers
- [Alif Rachmawadi] (original creator)
- [Bartek Pacia]
[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

@@ -46,6 +46,10 @@ inputs:
description: If true, get outputs but do not install Flutter description: If true, get outputs but do not install Flutter
required: false required: false
default: "false" default: "false"
git-source:
description: Git clone source
required: false
default: "https://github.com/flutter/flutter.git"
outputs: outputs:
CHANNEL: CHANNEL:
@@ -69,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
@@ -89,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

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
@@ -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")