forked from nodejs/node-gyp
-
Notifications
You must be signed in to change notification settings - Fork 0
137 lines (100 loc) · 4.43 KB
/
new-workflow.yml
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
name: Automated Release Generation
on:
push:
branches:
- master
jobs:
generate-release:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Configure Git Identity
run: |
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
- name: Set Up changelog-maker Config
run: |
# Construct and write out a JSON config file for changelog-maker.
# Allows changelog-maker to authenticate to the GitHub API
mkdir -p ~/.config/changelog-maker
CONFIG_FILE=~/.config/changelog-maker/config.json
echo "{" > "${CONFIG_FILE}"
echo " \"token\": \"${{ secrets.GITHUB_TOKEN }}\"," >> "${CONFIG_FILE}"
echo " \"user\": \"${USER}\"" >> "${CONFIG_FILE}"
echo "}" >> "${CONFIG_FILE}"
# - name: Install Dependencies
# run: npm install -g changelog-maker semver
- name: Update CHANGELOG.md and package.json
shell: bash
run: |
# Uses pinned node dependency versions.
# Feel free to bump these as needed.
CHANGELOG_MAKER_COMMAND="npx --quiet changelog-maker@2.6.0"
SEMVER_COMMAND="npx --quiet semver@7.3.5"
echo "CHANGELOG_MAKER_COMMAND is: ${CHANGELOG_MAKER_COMMAND}"
echo "SEMVER_COMMAND is: ${SEMVER_COMMAND}"
STARTING_VERSION=`node -e "console.log(require('./package').version)"`
echo "STARTING_VERSION is: ${STARTING_VERSION}"
if [ `uname -s` = "Darwin" ]; then
# Appropriate flags for macOS/BSD date
TODAYS_DATE=`date -j '+%Y-%m-%d'`
else
# Appropriate flags for Linux/GNU date
TODAYS_DATE=`date -I`
fi
echo "TODAYS_DATE is: ${TODAYS_DATE}"
CHANGELOG_MAKER_SUGGESTED_CHANGELOG=`${CHANGELOG_MAKER_COMMAND} | grep -vi 'bump version and update changelog'`
echo "CHANGELOG_MAKER_SUGGESTED_CHANGELOG is: ${CHANGELOG_MAKER_SUGGESTED_CHANGELOG}"
CL=${CHANGELOG_MAKER_SUGGESTED_CHANGELOG}
if [ -z "${CL}" ]; then
echo "No CHANGELOG entries to add since the last release. Exiting."
exit
fi
# echo "CL is: ${CL}"
if echo ${CL} | grep -F '**(SEMVER-MAJOR)**'; then
VERSION_BUMP_LEVEL="major"
elif echo ${CL} | grep -F '**(SEMVER-MINOR)**'; then
VERSION_BUMP_LEVEL="minor"
else
VERSION_BUMP_LEVEL="patch"
fi
echo "VERSION_BUMP_LEVEL is: ${VERSION_BUMP_LEVEL}"
NEXT_VERSION=`${SEMVER_COMMAND} -i "${VERSION_BUMP_LEVEL}" "${STARTING_VERSION}"`
echo "NEXT_VERSION is: ${NEXT_VERSION}"
HEADER1="v${NEXT_VERSION} ${TODAYS_DATE}"
HEADER2="================="
echo "HEADER1 is: ${HEADER1}"
echo "HEADER2 is: ${HEADER2}"
FILENAME="new_changelog.md"
echo "FILENAME is: ${FILENAME}"
echo "${HEADER1}" > "${FILENAME}"
echo "${HEADER2}" >> "${FILENAME}"
echo >> "${FILENAME}"
echo "${CL}" >> "${FILENAME}"
echo >> "${FILENAME}"
cat CHANGELOG.md >> "${FILENAME}"
echo "Updated changelog looks like this:"
cat "${FILENAME}"
echo "Incrementing version"
npm version "${NEXT_VERSION}"
echo "Git-adding updated changelog, amending commit"
mv "${FILENAME}" CHANGELOG.md
git add CHANGELOG.md
git commit --amend --no-edit -m "v${NEXT_VERSION}: bump version and update changelog"
echo "DONE UPDATING \`CHANGELOG.md\` AND \`package.json\`, DONE COMMITTING!"
- name: Create or Update Pull Request
# Pin to an exact commit matching peter-evans/create-pull-request@v3.8.2
# Feel free to update to a newer version later, but tags are mutable,
# and pinning to a specific commit is a stronger guarantee of no tampering.
uses: peter-evans/create-pull-request@052fc72b4198ba9fbc81b818c6e1859f747d49a8
with:
base: master
branch: release-next-automated
title: Release Proposal
body: |
This is an automated release proposal.
See the changed files (particularly CHANGELOG.md) for details.
This was created by '.github/workflows/new-workflow.yml'