-
Notifications
You must be signed in to change notification settings - Fork 1
140 lines (119 loc) · 5.41 KB
/
version-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
# From https://github.com/backstage/demo/blob/master/.github/workflows/version-bump.yml
# Create a pull request if the backstage-cli has an updated version
name: 'Version Bump'
on:
workflow_dispatch:
# Run at midnight every Monday
schedule:
- cron: "0 0 * * 1"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
version-bump:
runs-on: ubuntu-latest
steps:
- name: 'Checkout backstage'
uses: actions/checkout@v4
with:
fetch-depth: 0
# Beginning of yarn setup
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 18.x
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: cache all node_modules
id: cache-modules
uses: actions/cache@v4
with:
path: '**/node_modules'
key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock', '**/package.json') }}
- name: find location of global yarn cache
id: yarn-cache
if: steps.cache-modules.outputs.cache-hit != 'true'
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
- name: cache global yarn cache
uses: actions/cache@v4
if: steps.cache-modules.outputs.cache-hit != 'true'
with:
path: ${{ steps.yarn-cache.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: yarn install
run: yarn install --frozen-lockfile
# End of yarn setup
- name: 'Set release name'
id: set_release_name
run: node ./.github/scripts/set-release-name.js
- name: 'Configure git'
# From https://github.com/orgs/community/discussions/26560#discussioncomment-3531273
run: |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: 'Does branch exist'
id: branch_exists
run: |
BRANCH=$(git branch -r --list origin/topic/v${{ steps.set_release_name.outputs.release_version }})
echo "Existing branch is: $BRANCH"
if [ ! -z "$BRANCH" ]; then
echo "Branch exists"
echo "BRANCH_EXISTS=1" >> $GITHUB_OUTPUT
else
echo "branch does NOT exist"
echo "BRANCH_EXISTS=0" >> $GITHUB_OUTPUT
fi
- name: 'Create branch'
id: branch_created
if: ${{ steps.branch_exists.outputs.BRANCH_EXISTS == 0 }}
run: |
git checkout -b topic/v${{ steps.set_release_name.outputs.release_version }}
echo "CREATED_BRANCH=1" >> $GITHUB_OUTPUT
- name: 'Run backstage-cli versions command'
if: ${{ steps.branch_created.outputs.CREATED_BRANCH == 1 }}
run: yarn backstage-cli versions:bump --release 'main'
- name: 'Check for changes'
if: ${{ steps.branch_created.outputs.CREATED_BRANCH == 1 }}
id: check_for_changes
run: |
CHANGES=$(git status --porcelain)
if [ -z "$CHANGES" ]; then
echo "No changes"
echo "HAS_CHANGES=0" >> $GITHUB_OUTPUT
else
echo "Has changes"
echo "HAS_CHANGES=1" >> $GITHUB_OUTPUT
fi
- name: 'Commit changes'
if: ${{ steps.check_for_changes.outputs.HAS_CHANGES == 1 }}
run: |
git status
git add -A -- :!.npmrc
git commit -m "v${{ steps.set_release_name.outputs.release_version }} version bump"
git push origin topic/v${{ steps.set_release_name.outputs.release_version }}
- name: 'Create Pull Request'
if: ${{ steps.check_for_changes.outputs.HAS_CHANGES == 1 }}
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
await github.rest.pulls.create({
title: 'v${{ steps.set_release_name.outputs.release_version }} version bump',
owner: context.repo.owner,
repo: context.repo.repo,
head: 'topic/v${{ steps.set_release_name.outputs.release_version }}',
base: 'main',
body: [
'Backstage release v${{ steps.set_release_name.outputs.release_version }} has been published, this Pull Request contains the changes to upgrade to this new release',
' ',
'Please review the changelog before approving, there may be manual changes needed to enable new features:',
' ',
'- Changelog: [v${{ steps.set_release_name.outputs.release_version }}](https://github.com/backstage/backstage/blob/master/docs/releases/v${{ steps.set_release_name.outputs.release_version }}-changelog.md)',
'- Upgrade Helper: [From ${{ steps.set_release_name.outputs.current_version }} to ${{ steps.set_release_name.outputs.release_version }}](https://backstage.github.io/upgrade-helper/?from=${{ steps.set_release_name.outputs.current_version }}&to=${{ steps.set_release_name.outputs.release_version }})',
' ',
'Created by [Version Bump ${{ github.run_id }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})',
' '
].join('\n')
});