| name: Bump Dev Version | |
| on: | |
| workflow_dispatch: # Allows for manual triggering if needed | |
| inputs: | |
| updateType: | |
| description: "Update Type" | |
| required: true | |
| default: "dev" | |
| type: choice | |
| options: | |
| - dev | |
| - patch+dev | |
| - minor+dev | |
| - major+dev | |
| draft: | |
| description: "PR as Draft" | |
| required: false | |
| type: boolean | |
| default: false | |
| schedule: | |
| # * is a special character in YAML so you have to quote this string | |
| - cron: "0 8 * * *" # Run every day at midnight Pacific Time | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| jobs: | |
| flutter-prep: | |
| uses: ./.github/workflows/flutter-prep.yaml | |
| bump-version: | |
| needs: flutter-prep | |
| if: ${{ github.repository == 'flutter/devtools' }} | |
| name: Bump Version | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: git clone devtools | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| with: | |
| ref: master | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| with: | |
| path: | | |
| ./tool/flutter-sdk | |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} | |
| - name: setup git config | |
| run: | | |
| git config user.name "DevTools Workflow Bot" | |
| git config user.email "dart-devtool-workflow-bot@google.com" | |
| - name: Bump the Version | |
| id: version-bump | |
| run: | | |
| set -ex | |
| # Ensure we are using the Dart executable from the Flutter SDK | |
| export PATH=`pwd`/tool/flutter-sdk/bin/cache/dart-sdk/bin:`pwd`/tool/flutter-sdk/bin:`pwd`/bin:$PATH | |
| pushd tool/ | |
| dart pub get | |
| popd | |
| # Ensure the dt command is available | |
| export PATH="$PATH":`pwd`/tool/bin | |
| ORIGINAL_VERSION=$(dt update-version current-version | tail -1) | |
| if [ -z "$UPDATE_TYPE" ]; then | |
| # If $UPDATE_TYPE is not set, then assume it is dev | |
| UPDATE_TYPE="dev" | |
| fi | |
| # If there is a major, minor, or patch bump, do it. | |
| if [ "$UPDATE_TYPE" == "patch+dev" ]; then | |
| dt update-version auto --type patch | |
| dt update-version auto --type dev | |
| elif [ "$UPDATE_TYPE" == "minor+dev" ]; then | |
| dt update-version auto --type minor | |
| dt update-version auto --type dev | |
| elif [ "$UPDATE_TYPE" == "major+dev" ]; then | |
| dt update-version auto --type major | |
| dt update-version auto --type dev | |
| elif [ "$UPDATE_TYPE" == "dev" ]; then | |
| if ! echo "$ORIGINAL_VERSION" | grep -Eq "\-dev\.[0-9]+" ; then | |
| ERROR_DESCRIPTION="Doing \ | |
| a Dev bump on a release version ($ORIGINAL_VERSION) is not supported. \ | |
| Ensure that that current version has been properly bumped to a '-dev.*' \ | |
| pre-release version, in order to continue daily dev bumps." | |
| echo "::error ,title=Cannot do a dev bump on a Release Version ($ORIGINAL_VERSION)::$ERROR_DESCRIPTION" | |
| exit 1; | |
| fi | |
| dt update-version auto --type dev | |
| else | |
| echo "ERROR: UNEXPECTED UPDATE TYPE: $UPDATE_TYPE" | |
| exit 1 | |
| fi | |
| NEW_VERSION=$(dt update-version current-version | tail -1) | |
| echo "COMMIT_MESSAGE=Updating from $ORIGINAL_VERSION to $NEW_VERSION" >> $GITHUB_OUTPUT | |
| env: | |
| UPDATE_TYPE: ${{ inputs.updateType }} | |
| - name: Create the PR | |
| run: | | |
| set -ex | |
| BRANCH_NAME="auto-bump-$(date +%s)" | |
| # Stage the file, commit and push | |
| git checkout -b "$BRANCH_NAME" | |
| git commit -a -m "$COMMIT_MESSAGE" | |
| git push -u origin "$BRANCH_NAME" | |
| if [ "$IS_DRAFT" == "true" ]; then | |
| CREATION_FLAGS="--draft" | |
| fi | |
| PR_URL=$(gh pr create --title "$COMMIT_MESSAGE" --body "Automated Version Bump" $CREATION_FLAGS) | |
| # Change github credentials back to the actions bot. | |
| GH_TOKEN="$ORIGINAL_GH_TOKEN" | |
| gh pr edit $PR_URL $FLAGS --add-label "autosubmit" | |
| env: | |
| COMMIT_MESSAGE: ${{ steps.version-bump.outputs.COMMIT_MESSAGE }} | |
| GH_TOKEN: ${{ secrets.DEVTOOLS_WORKFLOW_BOT_TOKEN }} | |
| ORIGINAL_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| IS_DRAFT: ${{ inputs.draft == true }} |