-
Notifications
You must be signed in to change notification settings - Fork 42
125 lines (110 loc) · 3.88 KB
/
publish-extension.yaml
File metadata and controls
125 lines (110 loc) · 3.88 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
name: Publish Extension
on:
workflow_call:
inputs:
version:
required: true
type: string
description: "Version to publish"
isPreRelease:
required: false
type: boolean
default: false
description: "Whether this is a pre-release"
secrets:
VSCE_PAT:
required: false
OVSX_PAT:
required: false
jobs:
setup:
name: Setup
runs-on: ubuntu-22.04
outputs:
packageName: ${{ steps.package.outputs.packageName }}
hasVscePat: ${{ steps.check-secrets.outputs.hasVscePat }}
hasOvsxPat: ${{ steps.check-secrets.outputs.hasOvsxPat }}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: "22"
- name: Construct package name
id: package
run: |
EXTENSION_NAME=$(node -e "console.log(require('./package.json').name)")
if [ "${{ inputs.isPreRelease }}" = "true" ]; then
PACKAGE_NAME="${EXTENSION_NAME}-${{ inputs.version }}-pre.vsix"
else
PACKAGE_NAME="${EXTENSION_NAME}-${{ inputs.version }}.vsix"
fi
echo "packageName=$PACKAGE_NAME" >> $GITHUB_OUTPUT
echo "Package name: $PACKAGE_NAME"
- name: Check secrets
id: check-secrets
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}
OVSX_PAT: ${{ secrets.OVSX_PAT }}
run: |
echo "hasVscePat=$([ -n "$VSCE_PAT" ] && echo true || echo false)" >> $GITHUB_OUTPUT
echo "hasOvsxPat=$([ -n "$OVSX_PAT" ] && echo true || echo false)" >> $GITHUB_OUTPUT
publishMS:
name: Publish to VS Marketplace
needs: setup
runs-on: ubuntu-22.04
if: ${{ needs.setup.outputs.hasVscePat == 'true' }}
steps:
- uses: actions/setup-node@v6
with:
node-version: "22"
- name: Install vsce
run: npm install -g @vscode/vsce
- uses: actions/download-artifact@v8
with:
name: extension-${{ inputs.version }}
- name: Publish to VS Marketplace
run: |
echo "Publishing version ${{ inputs.version }} to VS Marketplace"
if [ "${{ inputs.isPreRelease }}" = "true" ]; then
vsce publish --pre-release --packagePath "./${{ needs.setup.outputs.packageName }}" -p ${{ secrets.VSCE_PAT }}
else
vsce publish --packagePath "./${{ needs.setup.outputs.packageName }}" -p ${{ secrets.VSCE_PAT }}
fi
publishOVSX:
name: Publish to Open VSX
needs: setup
runs-on: ubuntu-22.04
if: ${{ needs.setup.outputs.hasOvsxPat == 'true' }}
steps:
- uses: actions/setup-node@v6
with:
node-version: "22"
- name: Install ovsx
run: npm install -g ovsx
- uses: actions/download-artifact@v8
with:
name: extension-${{ inputs.version }}
- name: Publish to Open VSX
run: |
echo "Publishing version ${{ inputs.version }} to Open VSX"
if [ "${{ inputs.isPreRelease }}" = "true" ]; then
ovsx publish "./${{ needs.setup.outputs.packageName }}" --pre-release -p ${{ secrets.OVSX_PAT }}
else
ovsx publish "./${{ needs.setup.outputs.packageName }}" -p ${{ secrets.OVSX_PAT }}
fi
publishGH:
name: Create GitHub ${{ inputs.isPreRelease && 'Pre-' || '' }}Release
needs: setup
runs-on: ubuntu-22.04
steps:
- uses: actions/download-artifact@v8
with:
name: extension-${{ inputs.version }}
- name: Create ${{ inputs.isPreRelease && 'Pre-' || '' }}Release
uses: marvinpinto/action-automatic-releases@latest
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
prerelease: ${{ inputs.isPreRelease }}
draft: true
title: "v${{ inputs.version }}${{ inputs.isPreRelease && '-pre' || '' }}"
files: ${{ needs.setup.outputs.packageName }}