Skip to content

Commit 7d26eab

Browse files
authored
Merge pull request #6481 from dibarbet/ship_from_any_branch
Always build release and prerelease VSIXs and allow overriding build …
2 parents fb23c07 + a4d9458 commit 7d26eab

File tree

8 files changed

+105
-66
lines changed

8 files changed

+105
-66
lines changed

azure-pipelines-official.yml

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,16 @@ trigger:
55
- release
66
pr: none
77

8-
variables:
9-
${{ if eq(variables['Build.SourceBranchName'], 'release') }}:
10-
prereleaseFlag: ''
11-
${{ else }}:
12-
prereleaseFlag: '--prerelease'
8+
parameters:
9+
# Allows the version number to be set manually for a specific build.
10+
# Useful when we need to create an updated extension version with no changes (for example to fix a bad partial release).
11+
- name: versionNumberOverride
12+
type: string
13+
default: 'default'
1314

1415
stages:
15-
- stage: Build
16-
dependsOn: []
17-
jobs:
18-
- job: Build
19-
steps:
20-
- template: azure-pipelines/build.yml
21-
parameters:
22-
prereleaseFlag: $(prereleaseFlag)
23-
pool:
24-
name: NetCore1ESPool-Internal
25-
demands: ImageOverride -equals Build.Ubuntu.2204.Amd64
16+
- template: azure-pipelines/build.yml
17+
parameters:
18+
versionNumberOverride: ${{ parameters.versionNumberOverride }}
2619

2720
# TODO: add compliance, signing.

azure-pipelines.yml

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,8 @@ pr:
1111
- release
1212
- main
1313

14-
variables:
15-
${{ if eq(variables['Build.SourceBranchName'], 'release') }}:
16-
prereleaseFlag: ''
17-
${{ else }}:
18-
prereleaseFlag: '--prerelease'
19-
2014
stages:
21-
- stage: Build
22-
dependsOn: []
23-
jobs:
24-
- job: Build
25-
steps:
26-
- template: azure-pipelines/build.yml
27-
parameters:
28-
prereleaseFlag: $(prereleaseFlag)
29-
pool:
30-
name: NetCore-Public
31-
demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open
15+
- template: azure-pipelines/build.yml
3216

3317
- stage: Test
3418
displayName: Test

azure-pipelines/build.yml

Lines changed: 56 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,63 @@
11
parameters:
2-
- name: prereleaseFlag
2+
- name: versionNumberOverride
33
type: string
4+
default: 'default'
45

5-
steps:
6-
- checkout: self
7-
clean: true
8-
submodules: true
9-
fetchTags: false
10-
fetchDepth: 0
6+
stages:
7+
- stage: Build
8+
displayName: 'Build VSIXs'
9+
jobs:
10+
- job:
11+
displayName: 'Build Prerelease VSIXs'
12+
steps:
13+
- checkout: self
14+
clean: true
15+
submodules: true
16+
fetchTags: false
17+
fetchDepth: 0
1118

12-
- template: prereqs.yml
19+
- template: prereqs.yml
20+
parameters:
21+
versionNumberOverride: ${{ parameters.versionNumberOverride }}
1322

14-
- script: gulp 'vsix:release:package' ${{ parameters.prereleaseFlag }}
15-
displayName: 'Build VSIXs'
23+
- script: gulp 'vsix:release:package' --prerelease
24+
displayName: 'Build VSIXs'
25+
26+
- task: PublishPipelineArtifact@1
27+
# Run the publish step so we have vsix's even if the tests fail.
28+
condition: succeededOrFailed()
29+
displayName: 'Publish VSIXs'
30+
inputs:
31+
targetPath: '$(Build.SourcesDirectory)/vsix'
32+
artifactName: 'VSIX_Prerelease_$(System.JobAttempt)'
33+
34+
- script: npm run omnisharptest:artifacts
35+
displayName: 'Run artifacts tests'
36+
37+
- job:
38+
displayName: 'Build Release VSIXs'
39+
steps:
40+
- checkout: self
41+
clean: true
42+
submodules: true
43+
fetchTags: false
44+
fetchDepth: 0
45+
46+
- template: prereqs.yml
47+
parameters:
48+
versionNumberOverride: ${{ parameters.versionNumberOverride }}
49+
50+
- script: gulp 'vsix:release:package'
51+
displayName: 'Build VSIXs'
1652

17-
- task: PublishPipelineArtifact@1
18-
# Run the publish step so we have vsix's even if the tests fail.
19-
condition: succeededOrFailed()
20-
displayName: 'Publish VSIXs'
21-
inputs:
22-
targetPath: '$(Build.SourcesDirectory)/vsix'
23-
artifactName: 'VSIXs - Attempt $(System.JobAttempt)'
53+
- task: PublishPipelineArtifact@1
54+
# Run the publish step so we have vsix's even if the tests fail.
55+
condition: succeededOrFailed()
56+
displayName: 'Publish VSIXs'
57+
inputs:
58+
targetPath: '$(Build.SourcesDirectory)/vsix'
59+
artifactName: 'VSIX_Release_$(System.JobAttempt)'
2460

25-
- script: npm run omnisharptest:artifacts
26-
displayName: 'Run artifacts tests'
61+
- script: npm run omnisharptest:artifacts
62+
displayName: 'Run artifacts tests'
63+

azure-pipelines/prereqs.yml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
parameters:
2+
- name: versionNumberOverride
3+
type: string
4+
default: 'default'
5+
16
steps:
27

38
# The server package is downloaded from NuGet
@@ -13,19 +18,24 @@ steps:
1318
inputs:
1419
version: '7.x'
1520

16-
# Set the CI build number to the VSIX version we're creating from this build.
1721
- script: |
1822
dotnet tool install --tool-path $(Agent.BuildDirectory) nbgv
19-
$(Agent.BuildDirectory)/nbgv cloud
2023
displayName: Install nbgv
2124

25+
# If we want to override the version, update the version.json here - vsix packaging will see this value
26+
# and use it to set the version number in the package.json.
27+
- ${{ if ne(parameters.versionNumberOverride, 'default') }}:
28+
- script: $(Agent.BuildDirectory)/nbgv set-version ${{ parameters.versionNumberOverride }}
29+
displayName: 'Override version number'
30+
31+
# Set the CI build number to the VSIX version we're creating from this build.
32+
- script: $(Agent.BuildDirectory)/nbgv cloud
33+
displayName: Set pipeline build number
34+
2235
- script: |
2336
npm ci
2437
npm i -g gulp
2538
displayName: 'Install dependencies'
2639

2740
- script: npm run compile
2841
displayName: 'Compile'
29-
30-
- script: npm run vscode:prepublish
31-
displayName: 'Prepublish VSIXs'

azure-pipelines/release.yml

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ parameters:
1111
- name: test
1212
type: boolean
1313
default: true
14+
- name: uploadPrerelease
15+
type: boolean
16+
default: true
1417

1518
variables:
1619
# This is expected to provide VisualStudioMarketplacePAT to the release (https://code.visualstudio.com/api/working-with-extensions/publishing-extension#get-a-personal-access-token)
@@ -44,8 +47,15 @@ stages:
4447
npm install --global vsce
4548
displayName: 'Install vsce'
4649
- pwsh: |
50+
$artifactFolderPrefix = "VSIX_Release_"
51+
if ("${{ parameters.uploadPrerelease }}" -eq "true") {
52+
$artifactFolderPrefix = "VSIX_Prerelease_"
53+
}
54+
55+
Write-Host "Using artifacts from $artifactFolderPrefix"
56+
4757
# Our build pipeline would generated build based on attempt number. Publishing the latest attempt.
48-
$allArtifacts = Get-ChildItem -Path "VSIXs - Attempt*" | Sort-Object -Descending
58+
$allArtifacts = Get-ChildItem -Path "$artifactFolderPrefix*" | Sort-Object -Descending
4959
if ($allArtifacts.Length -eq 0) {
5060
throw "No Artifacts is downloaded."
5161
}
@@ -54,14 +64,11 @@ stages:
5464
Write-Host "All artifacts: $($allArtifacts). Publishing $($publishArtifacts)."
5565
5666
$basePublishArgs = , "publish"
57-
# Artifacts are published to either pre-release or release based on the build branch, https://code.visualstudio.com/api/working-with-extensions/publishing-extension#prerelease-extensions
58-
If ("$(resources.pipeline.officialBuildCI.sourceBranch)" -eq "refs/heads/main") {
67+
If ("${{ parameters.uploadPrerelease }}" -eq "true") {
5968
$basePublishArgs += "--pre-release"
6069
Write-Host "Publish to pre-release channel."
61-
} ElseIf ("$(resources.pipeline.officialBuildCI.sourceBranch)" -eq "refs/heads/release") {
62-
Write-Host "Publish to release channel."
6370
} Else {
64-
throw "Unexpected branch name: $(resources.pipeline.officialBuildCI.sourceBranch)."
71+
Write-Host "Publish to release channel."
6572
}
6673
$basePublishArgs += '--packagePath'
6774

azure-pipelines/test-prereqs.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
steps:
22

3+
- script: npm run vscode:prepublish
4+
displayName: 'Prepublish VSIXs'
5+
36
# We need to download the roslyn language server for the current platform to run integration tests against it.
47
- script: gulp installDependencies
58
displayName: 'Install Roslyn Language Server'

tasks/offlinePackagingTasks.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,14 +206,18 @@ async function acquireNugetPackage(packageName: string, packageVersion: string,
206206
}
207207

208208
async function doPackageOffline() {
209-
// Set the package version using git versioning.
209+
// Set the package.json version based on the value in version.json.
210210
const versionInfo = await nbgv.getVersion();
211211
console.log(versionInfo.npmPackageVersion);
212212
await nbgv.setPackageVersion();
213213

214-
let prerelease = false;
214+
let prerelease: boolean;
215215
if (argv.prerelease) {
216+
console.log('Packaging prerelease version.');
216217
prerelease = true;
218+
} else {
219+
console.log('Packaging release version.');
220+
prerelease = false;
217221
}
218222

219223
try {

version.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
"version": "2.7",
44
"publicReleaseRefSpec": [
55
"^refs/heads/release$",
6-
"^refs/heads/main$"
6+
"^refs/heads/main$",
7+
"^refs/heads/patch/.*$"
78
],
89
"cloudBuild": {
910
"buildNumber": {

0 commit comments

Comments
 (0)