-
Notifications
You must be signed in to change notification settings - Fork 5
130 lines (114 loc) · 3.75 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
name: Release
on:
repository_dispatch:
types: [trigger-release]
workflow_dispatch: {}
jobs:
notify-start:
name: Notify when started
if: github.event.client_payload.github.event.issue.number && github.event.client_payload.commentId
runs-on: ubuntu-latest
steps:
- name: Update comment
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: ${{ github.event.client_payload.github.event.issue.number }}
comment-id: ${{ github.event.client_payload.commentId }}
body: |
🎁 Publishing to marketplaces...
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build:
name: Build
runs-on: ubuntu-latest
outputs:
vsixPath: ${{ steps.vsixBuild.outputs.vsixPath }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Build VSIX extension file
uses: HaaLeo/publish-vscode-extension@v1
id: vsixBuild
with:
dryRun: true
pat: stub
- name: Archive the extension build file
uses: actions/upload-artifact@v4
with:
name: extension
path: ${{ steps.vsixBuild.outputs.vsixPath }}
- name: Get release
id: release
uses: jossef/action-latest-release-info@v1.2.2
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Add VSIX release asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.release.outputs.upload_url }}
asset_path: ${{ steps.vsixBuild.outputs.vsixPath }}
asset_name: ${{ steps.vsixBuild.outputs.vsixPath }}
asset_content_type: application/vsix
publish-vs:
name: VS Marketplace
needs: build
runs-on: ubuntu-latest
steps:
- name: Download built extension artifact
uses: actions/download-artifact@v4.1.8
id: download
with:
name: extension
- name: Publish to Visual Studio Marketplace
uses: HaaLeo/publish-vscode-extension@v1
with:
pat: ${{ secrets.VS_MARKETPLACE_TOKEN }}
registryUrl: https://marketplace.visualstudio.com
extensionFile: ${{ needs.build.outputs.vsixPath }}
packagePath: ""
publish-open-vsx:
name: Open VSX Registry
needs: build
runs-on: ubuntu-latest
steps:
- name: Download built extension artifact
uses: actions/download-artifact@v4.1.8
id: download
with:
name: extension
- name: Publish to Open VSX Registry
uses: HaaLeo/publish-vscode-extension@v1
id: publishToOpenVSX
with:
pat: ${{ secrets.OPEN_VSX_TOKEN }}
extensionFile: ${{ needs.build.outputs.vsixPath }}
packagePath: ""
notify-end:
name: Notify when finished
if: github.event.client_payload.github.event.issue.number && github.event.client_payload.commentId
needs: [publish-vs, publish-open-vsx]
runs-on: ubuntu-latest
steps:
- name: Update comment
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: ${{ github.event.client_payload.github.event.issue.number }}
comment-id: ${{ github.event.client_payload.commentId }}
body: |
🎉 Released!
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Close Issue
uses: peter-evans/close-issue@v3
with:
issue-number: ${{ github.event.client_payload.github.event.issue.number }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}