-
Notifications
You must be signed in to change notification settings - Fork 2
144 lines (120 loc) · 3.36 KB
/
release.yml
File metadata and controls
144 lines (120 loc) · 3.36 KB
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
name: Release
on:
push:
branches:
- main
permissions:
contents: write
issues: write
pull-requests: write
concurrency:
group: release
cancel-in-progress: false
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Node
uses: actions/setup-node@v4
with:
cache: npm
- name: Install dependencies
run: npm ci
- name: Compile
run: npx vsce package
env:
LOCALSTACK_WEB_AUTH_REDIRECT: https://app.localstack.cloud/redirect
NODE_ENV: ci
- name: Test
run: xvfb-run -a npx vscode-test
release:
name: Release
runs-on: ubuntu-latest
needs: test
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
version: ${{ steps.release.outputs.version }}
steps:
- uses: googleapis/release-please-action@v4
id: release
with:
release-type: node
build:
name: Build
runs-on: ubuntu-latest
needs: release
if: ${{ needs.release.outputs.release_created == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Node
uses: actions/setup-node@v4
with:
cache: npm
- name: Install dependencies
run: npm ci
- name: Build VSIX
run: npx vsce package
env:
LOCALSTACK_WEB_AUTH_REDIRECT: https://app.localstack.cloud/redirect
NODE_ENV: production
ANALYTICS_API_URL: https://analytics.localstack.cloud/v1/events
- name: Upload VSIX artifact
uses: actions/upload-artifact@v4
with:
name: vsix
path: "*.vsix"
publish-github-release-artifact:
name: Publish artifact to GitHub Release
runs-on: ubuntu-latest
needs: [build, release]
if: ${{ needs.release.outputs.release_created == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Download VSIX
uses: actions/download-artifact@v4
with:
name: vsix
- name: Setup Node
uses: actions/setup-node@v4
- name: Upload Release Artifact
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ needs.release.outputs.tag_name }} *.vsix
publish-vscode-marketplace:
name: Publish to VS Marketplace
runs-on: ubuntu-latest
needs: [build, release]
if: ${{ needs.release.outputs.release_created == 'true' }}
steps:
- name: Download VSIX
uses: actions/download-artifact@v4
with:
name: vsix
- name: Setup Node
uses: actions/setup-node@v4
- name: Publish to VS Marketplace
run: npx @vscode/vsce publish --packagePath *.vsix
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}
publish-ovsx:
name: Publish to Open VSX
runs-on: ubuntu-latest
needs: [build, release]
if: ${{ needs.release.outputs.release_created == 'true' }}
steps:
- name: Download VSIX
uses: actions/download-artifact@v4
with:
name: vsix
- name: Setup Node
uses: actions/setup-node@v4
- name: Publish to Open VSX
run: npx ovsx publish *.vsix -p $OVSX_PAT
env:
OVSX_PAT: ${{ secrets.OVSX_PAT }}