Skip to content

Commit 83f0990

Browse files
author
Sander Ronde
committed
Set up up publishing to openvsx
1 parent b4a3597 commit 83f0990

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed

.github/workflows/publish.yml

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
name: Release
2+
on:
3+
release:
4+
types:
5+
- published
6+
workflow_dispatch:
7+
inputs:
8+
publishMS:
9+
description: "Publish to the Microsoft Marketplace"
10+
type: boolean
11+
required: true
12+
default: "true"
13+
publishOVSX:
14+
description: "Publish to Open VSX"
15+
type: boolean
16+
required: true
17+
default: "true"
18+
publishGH:
19+
description: "Publish to GitHub Releases"
20+
type: boolean
21+
required: true
22+
default: "true"
23+
24+
jobs:
25+
package:
26+
name: Package
27+
runs-on: ubuntu-latest
28+
outputs:
29+
packageName: ${{ steps.setup.outputs.packageName }}
30+
tag: ${{ steps.setup-tag.outputs.tag }}
31+
version: ${{ steps.setup-tag.outputs.version }}
32+
steps:
33+
- uses: actions/checkout@v2
34+
- uses: actions/setup-node@v2
35+
with:
36+
node-version: 20
37+
registry-url: https://registry.npmjs.org/
38+
39+
- uses: oven-sh/setup-bun@v1
40+
41+
- name: Install dependencies
42+
run: bun install
43+
44+
- name: Setup package path
45+
id: setup
46+
run: echo "::set-output name=packageName::$(node -e "console.log(require('./package.json').name + '-' + require('./package.json').version + '.vsix')")"
47+
48+
- name: Package
49+
run: |
50+
npx vsce package --out ${{ steps.setup.outputs.packageName }} --no-yarn
51+
52+
- uses: actions/upload-artifact@v4
53+
with:
54+
name: ${{ steps.setup.outputs.packageName }}
55+
path: ./${{ steps.setup.outputs.packageName }}
56+
if-no-files-found: error
57+
58+
- name: Setup tag
59+
id: setup-tag
60+
run: |
61+
$version = (Get-Content ./package.json -Raw | ConvertFrom-Json).version
62+
Write-Host "tag: release/$version"
63+
Write-Host "::set-output name=tag::release/$version"
64+
Write-Host "::set-output name=version::$version"
65+
shell: pwsh
66+
67+
publishMS:
68+
name: Publish to VS marketplace
69+
runs-on: ubuntu-latest
70+
needs: package
71+
if: github.event.inputs.publishMS == 'true'
72+
steps:
73+
- uses: actions/checkout@v2
74+
- uses: actions/download-artifact@v4
75+
with:
76+
name: ${{ needs.package.outputs.packageName }}
77+
- name: Publish to VS marketplace
78+
run: npx vsce publish --packagePath ./${{ needs.package.outputs.packageName }} -p ${{ secrets.VSCE_PAT }} --no-yarn
79+
80+
publishOVSX:
81+
name: Publish to Open VSX
82+
runs-on: ubuntu-latest
83+
needs: package
84+
if: github.event.inputs.publishOVSX == 'true'
85+
steps:
86+
- uses: actions/checkout@v2
87+
- uses: actions/download-artifact@v4
88+
with:
89+
name: ${{ needs.package.outputs.packageName }}
90+
- name: Publish to Open VSX
91+
run: npx ovsx publish ./${{ needs.package.outputs.packageName }} -p ${{ secrets.OVSX_PAT }}
92+
93+
publishGH:
94+
name: Publish to GitHub releases
95+
runs-on: ubuntu-latest
96+
needs: package
97+
if: github.event.inputs.publishGH == 'true'
98+
steps:
99+
- uses: actions/download-artifact@v4
100+
with:
101+
name: ${{ needs.package.outputs.packageName }}
102+
103+
- name: Create Release
104+
id: create-release
105+
uses: actions/create-release@v1
106+
env:
107+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
108+
with:
109+
tag_name: ${{ needs.package.outputs.tag }}
110+
release_name: Release ${{ needs.package.outputs.version }}
111+
draft: false
112+
prerelease: false
113+
114+
- name: Upload assets to a Release
115+
uses: AButler/upload-release-assets@v2.0
116+
with:
117+
files: ${{ needs.package.outputs.packageName }}
118+
release-tag: ${{ needs.package.outputs.tag }}
119+
repo-token: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)