From d2a3b7e655dab3a3973555d9dd4169cc3e47838c Mon Sep 17 00:00:00 2001 From: Rody Davis Date: Tue, 13 Oct 2026 09:59:22 -0700 Subject: [PATCH] perf(setup-flutter): persist flutter-sdk in /opt/hostedtoolcache on Linux Docker runners and expose dart-sdk on PATH [skip ci] --- setup-flutter/action.yml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/setup-flutter/action.yml b/setup-flutter/action.yml index 548f193..318995d 100644 --- a/setup-flutter/action.yml +++ b/setup-flutter/action.yml @@ -25,7 +25,10 @@ runs: if: runner.os != 'Windows' shell: bash run: | - LOCK_DIR="${TMPDIR:-/tmp}/flutter-sdk-setup.lock" + LOCK_DIR="/opt/hostedtoolcache/flutter-sdk-setup.lock" + if [ ! -d "/opt/hostedtoolcache" ] || [ ! -w "/opt/hostedtoolcache" ]; then + LOCK_DIR="${TMPDIR:-/tmp}/flutter-sdk-setup.lock" + fi for i in {1..60}; do if mkdir "$LOCK_DIR" 2>/dev/null; then break @@ -35,6 +38,10 @@ runs: done SDK_DIR="$HOME/flutter-sdk" + if [ -d "/opt/hostedtoolcache" ] && [ -w "/opt/hostedtoolcache" ]; then + SDK_DIR="/opt/hostedtoolcache/flutter-sdk" + fi + CLONE_URL="${{ inputs.mirror_url }}" if [ -n "${{ inputs.git_token }}" ] && [[ "$CLONE_URL" == https://* ]]; then CLONE_URL="https://git:${{ inputs.git_token }}@${CLONE_URL#https://}" @@ -47,8 +54,10 @@ runs: echo "Failed to clone from mirror, falling back to GitHub..." git clone https://github.com/flutter/flutter.git "$SDK_DIR" } + git -C "$SDK_DIR" config --global --add safe.directory "$SDK_DIR" || true git -C "$SDK_DIR" checkout "${{ inputs.version }}" else + git -C "$SDK_DIR" config --global --add safe.directory "$SDK_DIR" || true CURRENT_COMMIT=$(git -C "$SDK_DIR" rev-parse HEAD 2>/dev/null || true) if [ "$CURRENT_COMMIT" != "${{ inputs.version }}" ] && [ "${{ inputs.version }}" != "master" ]; then echo "Checking out Flutter ${{ inputs.version }}..." @@ -113,8 +122,12 @@ runs: shell: bash run: | SDK_DIR="$HOME/flutter-sdk" - export PATH="$SDK_DIR/bin:$PATH" + if [ -d "/opt/hostedtoolcache/flutter-sdk" ]; then + SDK_DIR="/opt/hostedtoolcache/flutter-sdk" + fi + export PATH="$SDK_DIR/bin:$SDK_DIR/bin/cache/dart-sdk/bin:$PATH" echo "$SDK_DIR/bin" >> $GITHUB_PATH + echo "$SDK_DIR/bin/cache/dart-sdk/bin" >> $GITHUB_PATH if [ "${{ inputs.enable_windowing }}" = "true" ]; then "$SDK_DIR/bin/flutter" config --enable-windowing @@ -127,7 +140,8 @@ runs: run: | $sdkDir = "C:\flutter-sdk" [System.IO.File]::AppendAllText($env:GITHUB_PATH, "$sdkDir\bin`r`n") - $env:PATH = "$sdkDir\bin;$env:PATH" + [System.IO.File]::AppendAllText($env:GITHUB_PATH, "$sdkDir\bin\cache\dart-sdk\bin`r`n") + $env:PATH = "$sdkDir\bin;$sdkDir\bin\cache\dart-sdk\bin;$env:PATH" if ("${{ inputs.enable_windowing }}" -eq "true") { & "$sdkDir\bin\flutter.bat" config --enable-windowing