| name: Flutter Candidate Update |
| on: |
| workflow_dispatch: # Allows for manual triggering if needed |
| schedule: |
| # * is a special character in YAML so you have to quote this string |
| - cron: "0 8/12 * * *" # Run every day at midnight and noon Pacific Time |
| |
| permissions: |
| contents: write |
| pull-requests: write |
| |
| env: |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| |
| jobs: |
| update-candidate: |
| if: ${{ github.repository == 'flutter/devtools' }} |
| name: Update Flutter Candidate Version |
| runs-on: ubuntu-latest |
| steps: |
| - name: git clone devtools |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| with: |
| ref: master |
| |
| - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d |
| |
| - name: setup git config |
| run: | |
| |
| git config user.name "DevTools Workflow Bot" |
| git config user.email "dart-devtool-workflow-bot@google.com" |
| |
| - name: get the latest flutter candidate |
| run: | |
| set -ex |
| pushd tool/ |
| dart pub get |
| popd |
| |
| tool/latest_flutter_candidate.sh | sed 's|refs/tags/||' > flutter-candidate.txt |
| |
| - name: Create the PR |
| run: | |
| set -ex |
| if ! [[ `git status --porcelain --untracked-files=no` ]]; then |
| # No changes made, so we can just exit. |
| echo "No change to the flutter-candidate.txt file" |
| exit |
| fi |
| COMMIT_MESSAGE="Changing Flutter Candidate to $(cat flutter-candidate.txt)" |
| BRANCH_NAME="auto-candidate-$(date +%s)" |
| # Stage the file, commit and push |
| git checkout -b "$BRANCH_NAME" |
| git add . |
| git commit -m "$COMMIT_MESSAGE" |
| git push -u origin "$BRANCH_NAME" |
| |
| |
| PR_URL=$(gh pr create --title "$COMMIT_MESSAGE" --body "Automated Flutter candidate version bump.") |
| |
| # Change github credentials back to the actions bot. |
| GH_TOKEN="$ORIGINAL_GH_TOKEN" |
| |
| gh pr edit $PR_URL --add-label "autosubmit" |
| |
| env: |
| GH_TOKEN: ${{ secrets.DEVTOOLS_WORKFLOW_BOT_TOKEN }} |
| ORIGINAL_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |