143 lines
5.4 KiB
YAML
143 lines
5.4 KiB
YAML
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
|