-
Notifications
You must be signed in to change notification settings - Fork 0
152 lines (129 loc) · 4.13 KB
/
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
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
152
name: "Pine Icons Production Release"
on:
workflow_call:
inputs:
preid:
description: Which prerelease id should be used? This is only needed when a version is "prepatch", "preminor", "premajor", or "prerelease".
type: string
default: ''
ref:
type: string
description: The branch name, tag, or SHA to be checked out. This can also be left blank.
default: ''
tag:
type: 'string'
required: true
description: Which npm tag should this be published to
version:
type: string
description: Which version should be published?
workflow_dispatch:
inputs:
preid:
type: choice
description: Which prerelease id should be used? This is only needed when a version is "prepatch", "preminor", "premajor", or "prerelease".
options:
- ''
- alpha
- beta
- rc
- next
ref:
type: string
description: The branch name, tag, or SHA to be checked out. This can also be left blank.
default: ''
tag:
type: choice
required: true
description: Which npm tag should this be published to
options:
- latest
- next
- dev
version:
type: choice
description: Which version should be published?
options:
- ''
- patch
- minor
- major
- prepatch
- preminor
- premajor
- prerelease
jobs:
export-icons:
uses: ./.github/workflows/icon-export.yml
with:
preid: ${{ inputs.preid || '' }}
ref: ${{ inputs.ref || 'main' }}
tag: ${{ inputs.tag || 'nightly' }}
version: ${{ inputs.version || '' }}
secrets: inherit
release-changes:
runs-on: ubuntu-latest
needs: export-icons
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get latest
run: git pull
shell: bash
- name: Install Dependencies
run: npm install
shell: bash
- name: Configure user
run: |
git config user.name "DSS Automation Bot"
git config user.email "[email protected]"
- name: Prepare NPM Token
run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} >> .npmrc
shell: bash
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Build
run: npx nx run @pine-ds/icons:build
shell: bash
- name: Release
if: inputs.version == ''
run: npx nx release --yes
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Release using Input Version
if: inputs.version != ''
run: npx nx release ${{inputs.version}} --yes
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
send-slack-notification:
runs-on: ubuntu-latest
needs: release-changes
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get latest
run: git pull
shell: bash
- name: Setup ENV Vars
run: |
echo 'PACKAGE_JSON<<EOF' >> $GITHUB_ENV
cat ./package.json >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
echo "CURRENT_DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
echo "COMMIT_MESSAGE=$(git log --pretty=format:%s -n 1 HEAD~)" >> $GITHUB_ENV
- name: Send Slack Notification
uses: slackapi/[email protected]
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
DATE: ${{ env.CURRENT_DATE }}
RELEASE_URL: "${{ format('https://github.com/{0}/releases/tag/v{1}', github.repository, fromJSON(env.PACKAGE_JSON).version) }}"
CHANGELOG_URL: "${{ format('https://pine-icons.netlify.app/changelogs/{0}-changelog.html', env.CURRENT_DATE) }}"
VERSION: ${{ fromJson(env.PACKAGE_JSON).version }}
COMMIT_MESSAGE: ${{ env.COMMIT_MESSAGE }}
with:
channel-id: ${{ vars.SLACK_CHANNEL_NAME }}
payload-file-path: "./.github/workflows/slack_payloads/release-info.json"