-
Notifications
You must be signed in to change notification settings - Fork 327
151 lines (131 loc) · 5.44 KB
/
daily-dev-bump.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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
pull_request:
types: [closed]
schedule:
# * is a special character in YAML so you have to quote this string
- cron: "0 8 * * *" # Run every day at midnight Pacific Time
label:
types: [created, deleted]
permissions:
contents: write
pull-requests: write
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
# bump-version:
# if: ${{ (github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') && github.repository == 'flutter/devtools' }}
# name: Bump Version
# runs-on: ubuntu-latest
# steps:
# - name: git clone devtools
# uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9
# with:
# ref: master
# - uses: dart-lang/setup-dart@d6a63dab3335f427404425de0fbfed4686d93c4f
# - 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
# ORIGINAL_VERSION=$(dart tool/update_version.dart current-version)
# 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
# dart tool/update_version.dart auto --type patch
# dart tool/update_version.dart auto --type dev
# elif [ "$UPDATE_TYPE" == "minor+dev" ]; then
# dart tool/update_version.dart auto --type minor
# dart tool/update_version.dart auto --type dev
# elif [ "$UPDATE_TYPE" == "major+dev" ]; then
# dart tool/update_version.dart auto --type major
# dart tool/update_version.dart 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
# dart tool/update_version.dart auto --type dev
# else
# echo "ERROR: UNEXPECTED UPDATE TYPE: $UPDATE_TYPE"
# exit 1
# fi
# NEW_VERSION=$(dart tool/update_version.dart current-version)
# 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 }}
clean-up-branches:
# If a pr is closed on a workflow bot PR, then clean up workflow bot branches.
name: Clean up 5 Dev Bump Branches
runs-on: ubuntu-latest
steps:
- name: Sparse checkout of the repository
uses: actions/checkout@v3
with:
sparse-checkout: |
README.md
- name: Clean up branches
run: |
set -x
# Get list of refs(branches) that exist on the remote, then filter for the auto-bump branches
EXISTING_BRANCHES=$(git ls-remote --heads | grep refs/heads/auto-bump- | sed 's|.*\(auto-bump-[[:digit:]]*\).*|\1|')
for EXISTING_BRANCH in $EXISTING_BRANCHES; do
PR_IS_CLOSED=$(gh pr view --json closed --jq '.closed' "$EXISTING_BRANCH")
PR_AUTHOR=$(gh pr view --json author --jq '.author.login' "$EXISTING_BRANCH")
if [ "$PR_IS_CLOSED" == "true" && "$PR_AUTHOR" == "DartDevtoolWorkflowBot"] ; then
# If the branch exists and the PR is closed we will delete it
gh api /repos/flutter/devtools/git/refs/heads/$EXISTING_BRANCH -X DELETE
fi
done
env:
GH_TOKEN: ${{ secrets.DEVTOOLS_WORKFLOW_BOT_TOKEN }}