-
Notifications
You must be signed in to change notification settings - Fork 2
135 lines (118 loc) · 3.96 KB
/
release.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
name: Release
on:
issues:
types:
- opened
jobs:
check-release:
name: Check if actor is eligible
runs-on: ubuntu-latest
outputs:
comment-id: ${{ steps.check-maintainer-role.outputs.comment-id }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check actor's permissions
id: check-maintainer-role
uses: ./.github/actions/check-maintainer-role
with:
success: Release issue noticed. Build triggered
failure: You can't trigger a release
label: kind/release
token: ${{ secrets.GITHUB_TOKEN }}
test:
name: Test
needs: check-release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Test
id: test
uses: ./.github/actions/test
- name: Update comment
uses: peter-evans/create-or-update-comment@v3
if: ${{ always() }}
id: comment
with:
issue-number: ${{ github.event.issue.number }}
comment-id: ${{ needs.check-release.outputs.comment-id }}
body: ${{ steps.test.outcome == 'success' && '🔍 Tests passed' || '👎 Tests failed' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
check-build:
name: Build
needs: check-release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build
id: build
uses: ./.github/actions/build
- name: Update comment
uses: peter-evans/create-or-update-comment@v3
if: ${{ always() }}
id: comment
with:
issue-number: ${{ github.event.issue.number }}
comment-id: ${{ needs.check-release.outputs.comment-id }}
body: ${{ steps.build.outcome == 'success' && '🏗️ All packages are buildable' || '💣 Failed to build all packages' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
release:
name: Release
needs:
- test
- check-release
- check-build
runs-on: ubuntu-latest
outputs:
tag: v${{ steps.semantic.outputs.new_release_version }}
steps:
- name: Update comment
uses: peter-evans/create-or-update-comment@v3
with:
issue-number: ${{ github.event.issue.number }}
comment-id: ${{ needs.check-release.outputs.comment-id}}
body: |
📦 Releasing to Github and NPM
- name: Checkout
uses: actions/checkout@v4
- name: Build all packages
uses: ./.github/actions/build
- name: Release via semantic-release
run: npm run release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Update comment
uses: peter-evans/create-or-update-comment@v3
if: ${{ steps.semantic.outputs.new_release_published != 'true' }}
with:
issue-number: ${{ github.event.issue.number }}
comment-id: ${{ needs.check-release.outputs.comment-id }}
body: |
⛔ Semantic release determined that no release is needed, closing
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Close issue
uses: peter-evans/close-issue@v3
if: ${{ steps.semantic.outputs.new_release_published != 'true' }}
with:
issue-number: ${{ github.event.issue.number }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Exit on failure
if: ${{ steps.semantic.outputs.new_release_published != 'true' }}
run: exit 1
- name: Update comment
uses: peter-evans/create-or-update-comment@v3
if: ${{ steps.semantic.outputs.new_release_published == 'true' }}
with:
issue-number: ${{ github.event.issue.number }}
comment-id: ${{ needs.check-release.outputs.comment-id }}
body: |
🎉 Released!
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}