Skip to content

Bump Dev Version

Bump Dev Version #626

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@3df4ab11eba7bda6032a0b82a6bb43b11571feac
with:
ref: master
- uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d
- name: Load Cached Flutter SDK
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84
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 "[email protected]"
- name: Bump the Version
id: version-bump
run: |
set -ex
pushd tool/
dart pub get
popd
# Ensure the devtools_tool command is available
export PATH="$PATH":`pwd`/tool/bin
ORIGINAL_VERSION=$(devtools_tool 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
devtools_tool update-version auto --type patch
devtools_tool update-version auto --type dev
elif [ "$UPDATE_TYPE" == "minor+dev" ]; then
devtools_tool update-version auto --type minor
devtools_tool update-version auto --type dev
elif [ "$UPDATE_TYPE" == "major+dev" ]; then
devtools_tool update-version auto --type major
devtools_tool 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
devtools_tool update-version auto --type dev
else
echo "ERROR: UNEXPECTED UPDATE TYPE: $UPDATE_TYPE"
exit 1
fi
NEW_VERSION=$(devtools_tool 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 }}