Skip to content

Commit d32b574

Browse files
authored
chore: add new publish pipeline (#727)
Also allows the CI pipeline to use the Unofficial template
1 parent ad9d907 commit d32b574

File tree

3 files changed

+79
-77
lines changed

3 files changed

+79
-77
lines changed

azure-pipelines.yml

Lines changed: 15 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ resources:
1111
ref: refs/tags/release
1212

1313
extends:
14-
template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines
14+
template: v1/1ES.Unofficial.PipelineTemplate.yml@1esPipelines
1515
parameters:
1616
sdl:
1717
sourceAnalysisPool: 1es-oss-windows-2022-x64
@@ -24,97 +24,49 @@ extends:
2424
pool:
2525
name: 1es-oss-ubuntu-22.04-x64
2626
os: Linux
27-
strategy:
28-
matrix:
29-
node_20_x:
30-
node_version: 20.x
3127
steps:
3228
- task: NodeTool@0
3329
inputs:
34-
versionSpec: $(node_version)
30+
versionSpec: 20.x
3531
displayName: 'Install Node.js'
36-
- script: |
37-
npm i
32+
- script: npm ci
3833
displayName: 'Install dependencies and build'
39-
- script: |
40-
npm test
34+
- script: npm test
4135
displayName: 'Test'
42-
- script: |
43-
npm run lint
36+
- script: npm run lint
4437
displayName: 'Lint'
4538

4639
- job: macOS
4740
pool:
4841
name: Azure Pipelines
49-
vmImage: 'macOS-latest'
42+
vmImage: 'macOS-14'
5043
os: macOS
51-
strategy:
52-
matrix:
53-
node_20_x:
54-
node_version: 20.x
5544
steps:
5645
- task: NodeTool@0
5746
inputs:
58-
versionSpec: $(node_version)
47+
versionSpec: 20.x
5948
displayName: 'Install Node.js'
60-
- script: |
61-
python3 -m pip install setuptools
49+
- script: python3 -m pip install setuptools
6250
displayName: Install setuptools (macOS)
63-
- script: |
64-
npm i
51+
- script: npm ci
6552
displayName: 'Install dependencies and build'
66-
- script: |
67-
npm test
53+
- script: npm test
6854
displayName: 'Test'
69-
- script: |
70-
npm run lint
55+
- script: npm run lint
7156
displayName: 'Lint'
7257

7358
- job: Windows
7459
pool:
7560
name: 1es-oss-windows-2022-x64
7661
os: Windows
77-
strategy:
78-
matrix:
79-
node_20_x:
80-
node_version: 20.x
8162
steps:
8263
- task: NodeTool@0
8364
inputs:
84-
versionSpec: $(node_version)
65+
versionSpec: 20.x
8566
displayName: 'Install Node.js'
86-
- script: |
87-
npm i
67+
- script: npm ci
8868
displayName: 'Install dependencies and build'
89-
- script: |
90-
npm test
69+
- script: npm test
9170
displayName: 'Test'
92-
- script: |
93-
npm run lint
71+
- script: npm run lint
9472
displayName: 'Lint'
95-
96-
- stage: Release
97-
dependsOn: Build
98-
jobs:
99-
- job: Release
100-
condition: eq(variables['Build.SourceBranch'], 'refs/heads/main')
101-
# Output artifact to produce SBOM and to run SDL checks
102-
templateContext:
103-
outputs:
104-
- output: pipelineArtifact
105-
targetPath: $(Build.SourcesDirectory)
106-
artifactName: drop
107-
pool:
108-
name: 1es-oss-ubuntu-22.04-x64
109-
os: Linux
110-
steps:
111-
- task: NodeTool@0
112-
inputs:
113-
versionSpec: '20.x'
114-
displayName: 'Install Node.js'
115-
- script: |
116-
npm i
117-
displayName: 'Install dependencies and build'
118-
- script: |
119-
NPM_AUTH_TOKEN="$(NPM_AUTH_TOKEN)" node ./scripts/publish.js
120-
displayName: 'Publish to npm'

publish.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: $(Date:yyyyMMdd)$(Rev:.r)
2+
3+
trigger:
4+
batch: true
5+
branches:
6+
include:
7+
- main
8+
pr: none
9+
10+
resources:
11+
repositories:
12+
- repository: templates
13+
type: github
14+
name: microsoft/vscode-engineering
15+
ref: main
16+
endpoint: Monaco
17+
18+
parameters:
19+
- name: publishPackage
20+
displayName: 🚀 Publish node-pty
21+
type: boolean
22+
default: false
23+
- name: releaseQuality
24+
displayName: Quality
25+
type: string
26+
default: beta
27+
values:
28+
- beta
29+
- stable
30+
31+
variables:
32+
- name: releaseQuality
33+
value: ${{ parameters.releaseQuality }}
34+
35+
extends:
36+
template: azure-pipelines/npm-package/pipeline.yml@templates
37+
parameters:
38+
npmPackages:
39+
- name: node-pty
40+
41+
buildSteps:
42+
- script: npm ci
43+
displayName: 'Install dependencies and build'
44+
# The following script leaves the version unchanged for
45+
# stable releases, but increments the version for beta releases.
46+
- script: node scripts/increment-version.js
47+
displayName: 'Increment version'
48+
49+
testSteps:
50+
- script: npm ci
51+
displayName: 'Install dependencies and build'
52+
- script: npm test
53+
displayName: 'Test'
54+
- script: npm run lint
55+
displayName: 'Lint'
56+
57+
publishPackage: ${{ parameters.publishPackage }}
58+
${{ if eq(variables['releaseQuality'], 'stable') }}:
59+
tag: latest
60+
${{ else }}:
61+
tag: beta
Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,19 @@ const fs = require('fs');
77
const path = require('path');
88
const packageJson = require('../package.json');
99

10-
// Setup auth
11-
fs.writeFileSync(`${process.env['HOME']}/.npmrc`, `//registry.npmjs.org/:_authToken=${process.env['NPM_AUTH_TOKEN']}`);
12-
1310
// Determine if this is a stable or beta release
1411
const publishedVersions = getPublishedVersions();
15-
const isStableRelease = publishedVersions.indexOf(packageJson.version) === -1;
12+
const isStableRelease = !publishedVersions.includes(packageJson.version);
1613

1714
// Get the next version
18-
let nextVersion = isStableRelease ? packageJson.version : getNextBetaVersion();
19-
console.log(`Publishing version: ${nextVersion}`);
15+
const nextVersion = isStableRelease ? packageJson.version : getNextBetaVersion();
16+
console.log(`Setting version to ${nextVersion}`);
2017

2118
// Set the version in package.json
2219
const packageJsonFile = path.resolve(__dirname, '..', 'package.json');
2320
packageJson.version = nextVersion;
2421
fs.writeFileSync(packageJsonFile, JSON.stringify(packageJson, null, 2));
2522

26-
// Publish
27-
const args = ['publish'];
28-
if (!isStableRelease) {
29-
args.push('--tag', 'beta');
30-
}
31-
const result = cp.spawn('npm', args, { stdio: 'inherit' });
32-
result.on('exit', code => process.exit(code));
33-
3423
function getNextBetaVersion() {
3524
if (!/^[0-9]+\.[0-9]+\.[0-9]+$/.exec(packageJson.version)) {
3625
console.error('The package.json version must be of the form x.y.z');

0 commit comments

Comments
 (0)