This repository has been archived by the owner on Dec 21, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 52
115 lines (106 loc) · 4.09 KB
/
pre-release.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
name: Pre-Release
on:
workflow_dispatch:
inputs:
semver-type:
description: 'Can be one of [major,minor,patch]. CAUTION: This will enforce a new pre-release with the specified semantic version type bumped.'
required: false
env:
NODE_VERSION: 14
KEPTN_BOT_NAME: "Keptn Bot"
KEPTN_BOT_EMAIL: "keptn-bot <[email protected]>"
RELEASE_NOTES_FILE: "RELEASE-BODY.md"
PRERELEASE_KEYWORD: "next"
defaults:
run:
shell: bash
jobs:
pre-release:
name: Pre-Release
runs-on: ubuntu-20.04
steps:
- name: Check SemVer input
env:
SEMVER_TYPE: ${{ github.event.inputs.semver-type }}
run: |
if [[ ! -z "$SEMVER_TYPE" ]]; then
echo "SemVer Type is defined. Checking for valid SemVer type..."
if [[ "$SEMVER_TYPE" == "major" ]] || [[ "$SEMVER_TYPE" == "minor" ]] || [[ "$SEMVER_TYPE" == "patch" ]]; then
echo "::notice::SemVer Type is correctly set to $SEMVER_TYPE! Continuing with this version bump..."
else
echo "::error::ERROR: Enforced SemVer does not match any of [major,minor,patch]!"
echo "Exiting..."
exit 1
fi
else
echo "::notice::No SemVer type defined, continuing with auto generated version number..."
fi
- name: Checkout repo
uses: actions/checkout@v2
with:
fetch-depth: 0
token: ${{ secrets.KEPTN_BOT_TOKEN }}
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Configure Git
env:
KEPTN_BOT_NAME: ${{ env.KEPTN_BOT_NAME }}
KEPTN_BOT_EMAIL: ${{ env.KEPTN_BOT_EMAIL }}
run: |
git config user.name "$KEPTN_BOT_NAME"
git config user.email "$KEPTN_BOT_EMAIL"
- name: Prepare GitHub Release Notes
env:
SEMVER_TYPE: ${{ github.event.inputs.semver-type }}
run: |
if [[ -z "$SEMVER_TYPE" ]]; then
npx standard-version@^9.3.1 \
--prerelease "${{ env.PRERELEASE_KEYWORD }}" \
-i "${{ env.RELEASE_NOTES_FILE }}" \
--skip.commit \
--skip.tag \
--header "" \
--release-as "$SEMVER_TYPE"
else
npx standard-version@^9.3.1 \
--prerelease "${{ env.PRERELEASE_KEYWORD }}" \
-i "${{ env.RELEASE_NOTES_FILE }}" \
--skip.commit \
--skip.tag \
--header ""
fi
- name: Enhance Release Notes with Build Metadata
run: |
echo "#### Build Information" >> "${{ env.RELEASE_NOTES_FILE }}"
echo "" >> "${{ env.RELEASE_NOTES_FILE }}"
echo "**GitHub Actions Run:** $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" >> "${{ env.RELEASE_NOTES_FILE }}"
- name: Create pre-release package
id: create-release-package
env:
SEMVER_TYPE: ${{ github.event.inputs.semver-type }}
GITHUB_TOKEN: ${{ secrets.KEPTN_BOT_TOKEN }}
run: |
echo "🚀 Creating pre-release package now..."
if [[ ! -z "$SEMVER_TYPE" ]]; then
npx standard-version@^9.3.1 \
--release-as "$SEMVER_TYPE" \
--prerelease "${{ env.PRERELEASE_KEYWORD }}" \
--skip.commit \
--skip.changelog
else
npx standard-version@^9.3.1 \
--prerelease "${{ env.PRERELEASE_KEYWORD }}" \
--skip.commit \
--skip.changelog
fi
echo "::set-output name=tag-name::$(git describe --tags --abbrev=0)"
echo "⚡️ Pushing changes to remote repository..."
git push --follow-tags
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ secrets.KEPTN_BOT_TOKEN }}
RELEASE_TAG: ${{ steps.create-release-package.outputs.tag-name }}
run: |
gh release create "$RELEASE_TAG" --prerelease --notes-file "${{ env.RELEASE_NOTES_FILE }}" --title "$RELEASE_TAG"