-
Notifications
You must be signed in to change notification settings - Fork 5
138 lines (125 loc) · 4 KB
/
ci-cd.yml
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
name: CI/CD
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
release:
types:
- published
jobs:
build-test:
name: Build and Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
node-version: [18]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: yarn --frozen-lockfile
- name: Run tests
uses: coactions/setup-xvfb@v1
with:
run: yarn test
- name: Test for "ovsx" presence3
run: npx ovsx -V ; npx ovsx -V | true
- name: Test for "ovsx" presence3c
run: npx ovsx -V
- name: Test for "ovsx" presence4
run: pwd; ls -a; ls -al node_modules/ | true
- name: Test for "ovsx" presence1
run: which ovsx | true
- name: Test for "ovsx" presence2
run: ovsx -V | true
- name: Package as VSCode Extension
run: yarn vsce:package
# Save the extension .vsix file for potential publishing
# in later step (if appropriate)
- uses: actions/upload-artifact@v4
with:
name: extension
path: vscode-trace-server-*.vsix
code-lint:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
node-version: [18]
steps:
- name: Check out Git repository
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
# ESLint and Prettier must be in `package.json`
- run: yarn --frozen-lockfile --ignore-scripts
- name: Run lint
run: yarn lint
- name: Run format check
run: yarn format:check
publish-oxsv:
# https://open-vsx.org/
name: Publish extension to public Open VSX Registry
runs-on: ${{ matrix.os }}
needs:
- build-test
strategy:
matrix:
os: [ubuntu-latest]
node-version: [18]
# Only execute when the trigger was a tag (new release)
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'eclipse-cdt-cloud/vscode-trace-server'
steps:
- uses: actions/checkout@v4
# restore extension from the built-test job
- uses: actions/download-artifact@v4
with:
name: extension
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: yarn --frozen-lockfile --ignore-scripts
- name: Publish extension
run: |
ls -al vscode-trace-server-*.vsix
npx ovsx publish vscode-trace-server-*.vsix
env:
# have ovsx consume the PAT from environment - if it's not handled explicitly
# in the workflow, less risk to leak it
OVSX_PAT: ${{ secrets.OPEN_VSX_TOKEN }}
publish-vs-marketplace:
# https://marketplace.visualstudio.com/
name: Publish extension to Visual Studio Marketplace
runs-on: ${{ matrix.os }}
needs:
- build-test
strategy:
matrix:
os: [ubuntu-latest]
node-version: [18]
# Only execute when the trigger was a tag (new release)
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'eclipse-cdt-cloud/vscode-trace-server'
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: extension
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: yarn --frozen-lockfile --ignore-scripts
- name: Publish extension
run: |
ls -al vscode-trace-server-*.vsix
npx vsce publish -i vscode-trace-server-*.vsix --skip-duplicate
env:
# have vsce consume the PAT from environment - if it's not handled explicitly
# in the workflow, less risk to leak it
VSCE_PAT: ${{ secrets.VS_MARKETPLACE_TOKEN }}