blob: d60e8d1b31c4f5267c93105a6060ce8e7aaeecf2 [file] [log] [blame] [edit]
name: Composite Flutter Setup
description: checkouts the tree, setups the environment
inputs:
ANDROID_TOOLS_VERSION:
description: 'android tools version'
default: '13114758'
ANDROID_PLATFORM:
description: 'android platform version'
default: 'android-36'
ANDROID_BUILDTOOLS:
description: 'android buildtools version'
default: '36.1.0'
runs:
using: 'composite'
steps:
# Real checkout on github actions for pull requests
- name: Checkout code (non-act pull_request)
uses: actions/checkout@v4
if: github.event_name == 'pull_request' && !env.ACT
with:
fetch-depth: 0
fetch-tags: true
# Checkout the PR; not the merge commit - we need to describe tags
ref: ${{ github.event.pull_request.head.sha }}
# Real checkout on github actions for post submit
- name: Checkout code (non-act push)
uses: actions/checkout@v4
if: github.event_name == 'push' && !env.ACT
with:
fetch-depth: 0
fetch-tags: true
# Checkout the PR; not the merge commit - we need to describe tags
ref: ${{ github.event.pull_request.head.sha }}
# Fake checkout if running locally
- name: Checkout code (act local)
uses: actions/checkout@v4
if: env.ACT
# If this is a branch / pr NOT on fluter/flutter, set the remote upstream
# so the flutter tool can figure out the version
- name: Set upstream (if not flutter/flutter)
shell: bash
if: github.repository != 'flutter/flutter' && !env.ACT
run: |
git remote add upstream https://github.com/flutter/flutter.git
git fetch --all --tags
# If running locally; install the JDK - Github runners have everything on them
- name: Set up our JDK environment
if: env.ACT
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00
with:
java-version: '21'
distribution: 'temurin'
# If running locally; install Android SDK tools - Github runners have everything on them
- name: Set Android SDK environment variable
shell: bash
if: env.ACT
run: |
echo "ANDROID_SDK_ROOT=/opt/android/sdk" >> $GITHUB_ENV
echo "ANDROID_HOME=/opt/android/sdk" >> $GITHUB_ENV
- name: Get Android SDK version
shell: bash
id: android-sdk-version
if: env.ACT
run: |
echo "revision=${{inputs.ANDROID_TOOLS_VERSION}};${{inputs.ANDROID_PLATFORM}};build-tools;${{inputs.ANDROID_BUILDTOOLS}}" >> "$GITHUB_OUTPUT"
- name: Android SDK Cache
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684
id: android-sdk-setup
if: env.ACT
with:
path: /opt/android/sdk
key: ${{ runner.os }}-${{ steps.android-sdk-version.outputs.revision }}
- name: Setup Android SDK (cold cache)
if: env.ACT && steps.android-sdk-setup.outputs.cache-hit != 'true'
uses: android-actions/setup-android@9fc6c4e9069bf8d3d10b2204b1fb8f6ef7065407
with:
packages: 'tools platform-tools platforms;${{inputs.ANDROID_PLATFORM}} build-tools;${{inputs.ANDROID_BUILDTOOLS}}'
log-accepted-android-sdk-licenses: false
cmdline-tools-version: ${{ inputs.ANDROID_TOOLS_VERSION }}
- name: Setup Android SDK (warm cache)
shell: bash
if: env.ACT && steps.android-sdk-setup.outputs.cache-hit == 'true'
run: |
echo "/opt/android/sdk/cmdline-tools/${{ inputs.ANDROID_TOOLS_VERSION }}/bin" >> "$GITHUB_PATH"
echo "/opt/android/sdk/platform-tools" >> "$GITHUB_PATH"
- name: Add `flutter` to the PATH
shell: bash
run: |
echo "$GITHUB_WORKSPACE/bin" >> "$GITHUB_PATH"
- name: Setup PUB_CACHE environment variable
shell: bash
run: |
echo "PUB_CACHE=/opt/pub-cache" >> $GITHUB_ENV
# Get the Flutter revision. This is the key for the cache for artifacts
# under bin/cache
- name: Get Flutter version
shell: bash
id: flutter-revision
run: |
echo "revision=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
- name: Flutter artifacts cache
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684
id: flutter-artifacts
with:
path: ${{ github.workspace }}/bin/cache
key: ${{ runner.os }}-flutter-${{ steps.flutter-revision.outputs.revision }}
- name: pub deps hash
shell: bash
id: pub-deps-hash
run: |
# Generate stable hash of pubspec.yaml files
find dev examples packages -name "pubspec.yaml" -print0 | sort -z | xargs -0 cat | sha256sum >> "$RUNNER_TEMP/pub_deps_sha"
echo "revision=$(cat "$RUNNER_TEMP/pub_deps_sha")" >> "$GITHUB_OUTPUT"
- name: pub package cache
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684
id: pub-cache
with:
path: |
/opt/pub-cache
${{ github.workspace }}/**/.dart_tool
${{ github.workspace }}/**/pubspec.lock
key: ${{ runner.os }}-pub-${{ steps.pub-deps-hash.outputs.revision }}
- name: Flutter Doctor
shell: bash
run: |
flutter doctor
- name: flutter pub get (online)
shell: bash
if: steps.pub-cache.outputs.cache-hit != 'true'
run: |
flutter pub get