blob: 625213ea23d9e44163b02e47d509e569f2e6395f [file] [edit]
name: Roll Dart Dependencies
on:
workflow_dispatch:
inputs:
dart_hash:
description: 'The Dart SDK commit hash to update to'
required: true
type: string
jobs:
update-deps:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout Repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
repository: flutteractionsbot/flutter
token: ${{ secrets.FLUTTERACTIONSBOT_CP_TOKEN }}
ref: master
- name: Configure git
env:
GH_TOKEN: ${{ secrets.FLUTTERACTIONSBOT_CP_TOKEN }}
run: |
git config user.name "flutteractionsbot"
git config user.email "<flutter-actions-bot@google.com>"
git remote add upstream https://github.com/flutter/flutter.git
git fetch upstream ${{ github.ref_name }}
BRANCH_NAME="sync-dart-${{ inputs.dart_hash }}"
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
git checkout -b "$BRANCH_NAME" upstream/${{ github.ref_name }}
- name: Download and Decode Dart DEPS
id: download-deps
run: |
DART_HASH="${{ inputs.dart_hash }}"
URL="https://dart.googlesource.com/sdk/+/$DART_HASH/DEPS?format=TEXT"
echo "Fetching DEPS from $URL"
# Googlesource returns base64 encoded text when format=TEXT is used
RESPONSE=$(curl -s -f "$URL")
if [ $? -ne 0 ]; then
echo "::error::Failed to download DEPS file. Please verify the Dart hash: $DART_HASH"
exit 1
fi
echo "$RESPONSE" | base64 --decode > dart_deps_file
if [ ! -s dart_deps_file ]; then
echo "::error::Downloaded DEPS file is empty or decoding failed."
exit 1
fi
- name: Run Update Script
id: run-script
run: |
DART_HASH="${{ inputs.dart_hash }}"
DART_DEPS="dart_deps_file"
FLUTTER_DEPS="DEPS" # Root of the repository
SCRIPT="engine/src/tools/dart/create_updated_flutter_deps.py"
if [ ! -f "$SCRIPT" ]; then
echo "::error::Update script not found at $SCRIPT"
exit 1
fi
echo "Running $SCRIPT..."
# Execute the python script
if ! python3 "$SCRIPT" -d "$DART_DEPS" -f "$FLUTTER_DEPS" -r "$DART_HASH"; then
echo "::error::The python update script failed during execution."
exit 1
fi
- name: Check for Changes
id: git-check
run: |
# Check if the root DEPS file has changed
if git diff --exit-code DEPS; then
echo "changed=false" >> $GITHUB_OUTPUT
echo "## ✅ Dart version already up to date" >> $GITHUB_STEP_SUMMARY
echo "The DEPS file is already up to date with Dart hash \`${{ inputs.dart_hash }}\`." >> $GITHUB_STEP_SUMMARY
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Create PR if Changed
if: steps.git-check.outputs.changed == 'true'
env:
GH_TOKEN: ${{ secrets.FLUTTERACTIONSBOT_CP_TOKEN }}
run: |
git add DEPS
git commit -m "Update flutter DEPS to dart ${{ inputs.dart_hash }}"
git push origin "$BRANCH_NAME" --force
PR_URL=$(gh pr create \
--title "[${{ github.ref_name }}] Update Flutter DEPS to Dart ${{ inputs.dart_hash }}" \
--body "This PR updates the transitive dependencies in the engine \`DEPS\` file based on Dart SDK hash \`${{ inputs.dart_hash }}\`." \
--repo flutter/flutter \
--base ${{ github.ref_name }} \
--head flutteractionsbot:$BRANCH_NAME)
# Nice big PR Success Summary
echo "## 🚀 PR Created Successfully" >> $GITHUB_STEP_SUMMARY
echo "Updated dart dependencies to \`${{ inputs.dart_hash }}\`." >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "🔗 **View Pull Request:** $PR_URL" >> $GITHUB_STEP_SUMMARY