blob: 16a2fba998fcc0bb81060adb1f5e5f4c10532175 [file] [log] [blame]
name: Bootstrap
description: Bootstrap
inputs:
platform:
description: "Platform name"
required: false
default: none
bootstrap-log-name:
description: "Bootstrap log name"
required: false
default: bootstrap-logs-${{ github.job }}
outputs:
cache-hit:
description: "Bootstrap environment was restored from cache"
value: ${{ fromJSON(steps.bootstrap-cache.outputs.outputs).cache-hit }} # retry returns all outputs in `outputs`
runs:
using: "composite"
steps:
- name: Calculate bootstrap cache key
id: bootstrap-cache-key
shell: bash
run: |
# Calculate bootstrap cache key
# In addition to the various setup files, the work directory matters as well,
# because the bootstrapped Pigweed environment contains absolute paths.
FILES_HASH="${{ hashFiles('scripts/setup/*', 'third_party/pigweed/**') }}"
FINAL_HASH="$(echo "$PWD:$FILES_HASH" | shasum -a 256 | cut -d' ' -f1)"
echo "Calculated bootstrap cache key for '$PWD': $FINAL_HASH"
echo "hash=$FINAL_HASH" >> "$GITHUB_OUTPUT"
- uses: Wandalen/wretry.action@v1.4.10
name: Bootstrap from cache
id: bootstrap-cache
continue-on-error: true
with:
action: buildjet/cache@v4
attempt_limit: 3
attempt_delay: 2000
with: |
key: ${{ runner.os }}-${{ runner.arch }}-${{ inputs.platform }}-${{ steps.bootstrap-cache-key.outputs.hash}}
path: |
.environment
build_overrides/pigweed_environment.gni
- name: Run bootstrap
if: fromJSON(steps.bootstrap-cache.outputs.outputs).cache-hit != 'true'
env:
PW_NO_CIPD_CACHE_DIR: Y
shell: bash
run: source scripts/bootstrap.sh -p all,${{ inputs.platform }}
- name: Uploading bootstrap logs
uses: actions/upload-artifact@v4
if: always() && !env.ACT && fromJSON(steps.bootstrap-cache.outputs.outputs).cache-hit != 'true'
with:
name: ${{ inputs.bootstrap-log-name }}
path: |
.environment/gn_out/.ninja_log
.environment/pigweed-venv/*.log