Add setup-flutter composite action
Update README Actions Table / update-readme (push) Failing after 0s
Update README Actions Table / update-readme (push) Failing after 0s
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
name: 'Setup Flutter'
|
||||
description: 'Cross-platform setup for Flutter with caching on macOS, Windows, and Linux.'
|
||||
inputs:
|
||||
version:
|
||||
description: 'Flutter channel or version tag (e.g., master, stable, 3.29.0)'
|
||||
required: false
|
||||
default: 'master'
|
||||
mirror_url:
|
||||
description: 'Git repository URL for Flutter SDK'
|
||||
required: false
|
||||
default: 'https://git.rodydavis.dev/rodydavis/flutter.git'
|
||||
git_token:
|
||||
description: 'Gitea token for authenticated git cloning'
|
||||
required: false
|
||||
default: ''
|
||||
cache:
|
||||
description: 'Enable Flutter SDK caching'
|
||||
required: false
|
||||
default: 'true'
|
||||
enable_windowing:
|
||||
description: 'Enable windowing and desktop support'
|
||||
required: false
|
||||
default: 'true'
|
||||
|
||||
runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
- name: Determine Cache Key
|
||||
id: cache-key
|
||||
shell: bash
|
||||
run: |
|
||||
echo "key=flutter-${{ runner.os }}-${{ runner.arch }}-${{ inputs.version }}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache Flutter SDK
|
||||
if: inputs.cache == 'true'
|
||||
id: flutter-cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/flutter-sdk
|
||||
C:\flutter-sdk
|
||||
key: ${{ steps.cache-key.outputs.key }}
|
||||
|
||||
- name: Install Flutter (macOS / Linux)
|
||||
if: runner.os != 'Windows' && steps.flutter-cache.outputs.cache-hit != 'true'
|
||||
shell: bash
|
||||
run: |
|
||||
SDK_DIR="$HOME/flutter-sdk"
|
||||
CLONE_URL="${{ inputs.mirror_url }}"
|
||||
if [ -n "${{ inputs.git_token }}" ] && [[ "$CLONE_URL" == https://* ]]; then
|
||||
CLONE_URL="https://git:${{ inputs.git_token }}@${CLONE_URL#https://}"
|
||||
fi
|
||||
|
||||
if [ ! -d "$SDK_DIR/.git" ]; then
|
||||
echo "Cloning Flutter ${{ inputs.version }} from $CLONE_URL to $SDK_DIR..."
|
||||
rm -rf "$SDK_DIR"
|
||||
git clone --depth 1 --branch ${{ inputs.version }} "$CLONE_URL" "$SDK_DIR" || {
|
||||
echo "Failed to clone from mirror, falling back to GitHub..."
|
||||
git clone --depth 1 --branch ${{ inputs.version }} https://github.com/flutter/flutter.git "$SDK_DIR"
|
||||
}
|
||||
else
|
||||
echo "Updating existing Flutter SDK at $SDK_DIR..."
|
||||
git -C "$SDK_DIR" fetch origin ${{ inputs.version }} --depth=1
|
||||
git -C "$SDK_DIR" reset --hard origin/${{ inputs.version }}
|
||||
fi
|
||||
|
||||
- name: Install Flutter (Windows)
|
||||
if: runner.os == 'Windows' && steps.flutter-cache.outputs.cache-hit != 'true'
|
||||
shell: powershell
|
||||
run: |
|
||||
$sdkDir = "C:\flutter-sdk"
|
||||
$cloneUrl = "${{ inputs.mirror_url }}"
|
||||
if ("${{ inputs.git_token }}" -ne "" -and $cloneUrl.StartsWith("https://")) {
|
||||
$cloneUrl = "https://git:${{ inputs.git_token }}@" + $cloneUrl.Substring(8)
|
||||
}
|
||||
|
||||
if (-not (Test-Path "$sdkDir\bin\flutter.bat")) {
|
||||
echo "Cloning Flutter ${{ inputs.version }} from $cloneUrl to $sdkDir..."
|
||||
try {
|
||||
git clone --depth 1 --branch ${{ inputs.version }} $cloneUrl $sdkDir
|
||||
} catch {
|
||||
echo "Failed to clone from mirror, falling back to GitHub..."
|
||||
git clone --depth 1 --branch ${{ inputs.version }} https://github.com/flutter/flutter.git $sdkDir
|
||||
}
|
||||
} else {
|
||||
echo "Updating existing Flutter SDK at $sdkDir..."
|
||||
git -C $sdkDir fetch origin ${{ inputs.version }} --depth=1
|
||||
git -C $sdkDir reset --hard origin/${{ inputs.version }}
|
||||
}
|
||||
|
||||
- name: Add to PATH and Configure (macOS / Linux)
|
||||
if: runner.os != 'Windows'
|
||||
shell: bash
|
||||
run: |
|
||||
SDK_DIR="$HOME/flutter-sdk"
|
||||
export PATH="$SDK_DIR/bin:$PATH"
|
||||
echo "$SDK_DIR/bin" >> $GITHUB_PATH
|
||||
|
||||
if [ "${{ inputs.enable_windowing }}" = "true" ]; then
|
||||
"$SDK_DIR/bin/flutter" config --enable-windowing
|
||||
fi
|
||||
"$SDK_DIR/bin/flutter" --version
|
||||
|
||||
- name: Add to PATH and Configure (Windows)
|
||||
if: runner.os == 'Windows'
|
||||
shell: powershell
|
||||
run: |
|
||||
$sdkDir = "C:\flutter-sdk"
|
||||
[System.IO.File]::AppendAllText($env:GITHUB_PATH, "$sdkDir\bin`r`n")
|
||||
$env:PATH = "$sdkDir\bin;$env:PATH"
|
||||
|
||||
if ("${{ inputs.enable_windowing }}" -eq "true") {
|
||||
& "$sdkDir\bin\flutter.bat" config --enable-windowing
|
||||
}
|
||||
& "$sdkDir\bin\flutter.bat" --version
|
||||
Reference in New Issue
Block a user