Skip to content

Commit e5e8f66

Browse files
hectormmgPIE Easy Start
and
PIE Easy Start
authored
Release pipeline (#5180)
* Add initial OneBranch pipeline * Adding OneBranch pipeline YAML config file for msal-javascript-internal-PullRequest * Update OneBranch.PullRequest.yml for Azure Pipelines * Update OneBranch.PullRequest.yml for Azure Pipelines * Update repo name and remove checkout step * Remove hanging repo reference * Update OneBranch.PullRequest.yml for Azure Pipelines * Update OneBranch.PullRequest.yml for Azure Pipelines * Remove trailing quote * Add missing quotes * Test * test commit * Add test shell script to execute path filtering * Add prepublish filtering script * Add msal common to release filter script * Update OneBranch.PullRequest.yml for Azure Pipelines * Update OneBranch.PullRequest.yml for Azure Pipelines * Update filtering script * Update pre-release script * Update prepublish script * Update prerelease script * Add source period to lib path in prepublish script * Update prerelease script * Update prepublish script * Update prepublish script * Test package.json changes * Update way of setting variables in prepublish filter script * Fix pipeline yml structure * Update pre script * Udpate pipeline * Update conditions on publish template * Update pipeline * Update pipeline * Update pipeline * Update pipeline: * Update pipeline: * Update pipeline * Update pipeline * Update prepublish script * Update prerelease script * Update revision in git diff * Update publish pipeline * Update pipeline * Update pipeline * Update pipeline * Update script * Update prerelease filtering * Update prerelease script * Udpate * Update * Another one * Another * Test * Change stage layout * AnotherOne * Fix incorrect var reference * Add test script * Update prepublish commit reference * Add pwd for debugging * Remove repo name from publish template * Remove pwd step * Test script * Fix yml * Update * Update * Update * Update stage dependencies to make stage dependency variables available in all stages * Remove var test job * Add key vault connection to pre-release stage * Add secrets to CDN and NPM steps * Remove extra key vault connection * Add publish artifact stage * Update artifact paths * Comment out remove npmrc to test * Fix typo * Fix write npm token step * Fix npm auth token writing * Test npm write auth token * Update publish template * Add test echo * Test * Test write npm auth token * Add docunenting comment to npm auth token write step * Activate nprmc deletion step * Update prepublish commit ref * Update git diff reference * Add artifactignore * Add node extensions * Add missing library name to prepublish script * Fix outdated path * Test * Update package.jsons * Update artifactignore * Update artifact download steps * Update package.json * Fix workingDir * Update prepub script * Update pipeline * Update msal-node-extensions dependesOn * Update npm publish * Rename OB Pipeline to avoid execution * Update release pipeline * Add publish override option to release pipeline * Add alpha tags to common, browser and react * Fix yml * Fix yml in publish template * Add push trigger to release branch * Test removing npmrc steps * Update package.jsons * Update publish template * Add artifact download * Fix yml error * Undo msal-common version change * Update artifact names * Fix typo * Udpdate artifact path * Update OneBranch.Release.yml for Azure Pipelines * Update OneBranch.Release.yml for Azure Pipelines * Update OneBranch.Release.yml for Azure Pipelines * Update publish pipeline * Add post release steps * Fix typos * Update OneBranch.Release.yml for Azure Pipelines * Update OneBranch.Release.yml for Azure Pipelines * Update OneBranch.Release.yml for Azure Pipelines * Fix npm ci in post release * Fix npm ci in post release * Add test ps -p command * Update OneBranch.Release.yml for Azure Pipelines * Update display name for last post release job * Update set timezone command * U[date condition on date setting * Add dependencies to artifact steps * Fix incorrect dependencies in post release * Test get date * Reconfigure working dir for getReleaseDate * Add different step to check date * Update OneBranch.Release.yml for Azure Pipelines * Update OneBranch.Release.yml for Azure Pipelines * Fix save core cdn * Update scripts * Udpate getReleaseDate logic * Fix workingDir * Update OneBranch.Release.yml for Azure Pipelines * update get release date * Update variable setting for releaseDate * Add pull request script * Test PR Creation * Update script for testing * Test pullRequest.js * Remove extra task * Remove async from js script * Update PR automation * Add push step * Update push command * Fix step order to make sure keyvault access happens before push * Add pull before push * Add upstream remote to publish pipeline * Remove post-release from OB pipeline * Test download OB pipeline artifacts [skip ci] * Update post-release.yml for Azure Pipelines * Update post-release.yml for Azure Pipelines * Update post-release.yml for Azure Pipelines * Update post-release pipeline * Update post-release yml structure: * Update post-release.yml for Azure Pipelines * Update post-release.yml for Azure Pipelines * Update post-release pipeline * Fix typo * Revert msal-react changes * Update post-release pipeline to include all packages * Add conditions to post-release steps * Add post-publish template * Update post-release-pipeline * Fix incorrect template path * Fix typo * Update post-release pipeline * Update post-release structure * Fix yml * Update post-release template * Fix yml * Fix parameters * Fix parameter in template * Split post-release into stages * Fix yml * Update conditions on post release * Fix incorrect conditions * Fix parameters * Update post-release * Move keyvault step * Add conditional to post-release after key vault * Update conditions on post-release * Fix typo * Test new conditions * Move conditions to the right template * Fix missing parenthesis * Add test mode to Publish pipeline * Update post-release.yml for Azure Pipelines * Remove extra dollar signs * Remove extra curly braces * Update template params in pub template * Remove extra quotes * Fix pipeline trigger * Test new variable setting * Test new variable type * Test variables * Update variables * Test new conditions * Add git status step * Add condition to push to github step * Test moving job template to steps template * Fix typo * Add always to Pipeline artifact download step * Remove post-publish steps Co-authored-by: PIE Easy Start <[email protected]>
1 parent 433c4dd commit e5e8f66

File tree

6 files changed

+145
-35
lines changed

6 files changed

+145
-35
lines changed

.pipelines/OneBranch.PullRequest.yml renamed to .pipelines/OneBranch.Release.yml

+56-6
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,46 @@
88
# Support: https://aka.ms/onebranchsup #
99
#################################################################################
1010

11-
trigger: none # https://aka.ms/obpipelines/triggers
11+
trigger:
12+
- release
1213

1314
parameters: # parameters are shown up in ADO UI in a build queue time
1415
- name: 'debug'
1516
displayName: 'Enable debug output'
1617
type: boolean
1718
default: false
19+
- name: 'testMode'
20+
displayName: 'Run in test mode'
21+
type: boolean
22+
default: false
23+
- name: 'overrideMsalCore'
24+
displayName: 'Publish MSAL Core'
25+
type: boolean
26+
default: false
27+
- name: 'overrideMsalCommon'
28+
displayName: 'Publish MSAL Common'
29+
type: boolean
30+
default: false
31+
- name: 'overrideMsalBrowser'
32+
displayName: 'Publish MSAL Browser'
33+
type: boolean
34+
default: false
35+
- name: 'overrideMsalNode'
36+
displayName: 'Publish MSAL Node'
37+
type: boolean
38+
default: false
39+
- name: 'overrideMsalReact'
40+
displayName: 'Publish MSAL React'
41+
type: boolean
42+
default: false
43+
- name: 'overrideMsalAngular'
44+
displayName: 'Publish MSAL Angular'
45+
type: boolean
46+
default: false
47+
- name: 'overrideMsalNodeExtensions'
48+
displayName: 'Publish MSAL Node Extensions'
49+
type: boolean
50+
default: false
1851

1952
variables:
2053
CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning
@@ -67,7 +100,7 @@ extends:
67100
inputs:
68101
scriptPath: "release-scripts/prepublish.sh"
69102
name: filter
70-
# PUBLISH v1
103+
# PUBLISH MSAL Core
71104
- stage: publish
72105
dependsOn: pre_release
73106
displayName: 'Publish Packages'
@@ -88,14 +121,18 @@ extends:
88121
libName: 'msal-core'
89122
cdn: true
90123
publishFlagName: 'MsalCore'
124+
publishOverride: ${{ parameters.overrideMsalCore }}
125+
testMode: ${{ parameters.testMode }}
91126
# Release MSAL Common
92127
- template: .pipelines/custom-templates/publish-template.yml@self
93128
parameters:
94129
jobName: 'publish_msal_common'
95130
path: 'lib'
96131
libName: 'msal-common'
97-
cdn: true
132+
cdn: false
98133
publishFlagName: 'MsalCommon'
134+
publishOverride: ${{ parameters.overrideMsalCommon }}
135+
testMode: ${{ parameters.testMode }}
99136
# Release MSAL Browser
100137
- template: .pipelines/custom-templates/publish-template.yml@self
101138
parameters:
@@ -105,6 +142,8 @@ extends:
105142
cdn: true
106143
publishFlagName: 'MsalBrowser'
107144
dependsOn: 'publish_msal_common'
145+
publishOverride: ${{ parameters.overrideMsalBrowser }}
146+
testMode: ${{ parameters.testMode }}
108147
# Release MSAL React
109148
- template: .pipelines/custom-templates/publish-template.yml@self
110149
parameters:
@@ -114,6 +153,7 @@ extends:
114153
cdn: false
115154
publishFlagName: 'MsalReact'
116155
dependsOn: 'publish_msal_browser'
156+
publishOverride: ${{ parameters.overrideMsalReact }}
117157
# Release MSAL Angular
118158
- template: .pipelines/custom-templates/publish-template.yml@self
119159
parameters:
@@ -123,20 +163,30 @@ extends:
123163
cdn: false
124164
publishFlagName: 'MsalAngular'
125165
dependsOn: 'publish_msal_browser'
166+
publishOverride: ${{ parameters.overrideMsalAngular }}
167+
testMode: ${{ parameters.testMode }}
126168
# Release MSAL Node
127169
- template: .pipelines/custom-templates/publish-template.yml@self
128170
parameters:
129-
jobName: 'release_msal_node'
171+
jobName: 'publish_msal_node'
130172
path: 'lib'
131173
libName: 'msal-node'
132174
cdn: false
133175
publishFlagName: 'MsalNode'
134176
dependsOn: 'publish_msal_common'
177+
publishOverride: ${{ parameters.overrideMsalNode }}
178+
testMode: ${{ parameters.testMode }}
135179
# Release MSAL Node Extensions
136180
- template: .pipelines/custom-templates/publish-template.yml@self
137181
parameters:
138-
jobName: 'release_msal_node_extensions'
182+
jobName: 'publish_msal_node_extensions'
139183
path: 'extensions'
140184
libName: 'msal-node-extensions'
141185
cdn: false
142-
publishFlagName: 'MsalNodeExtensions'
186+
publishFlagName: 'MsalNodeExtensions'
187+
dependsOn: 'publish_msal_common'
188+
publishOverride: ${{ parameters.overrideMsalNodeExtensions }}
189+
testMode: ${{ parameters.testMode }}
190+
191+
192+

.pipelines/custom-templates/publish-template.yml

+57-24
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ parameters:
1313
default: false
1414
- name: publishFlagName
1515
type: string
16+
- name: publishOverride
17+
type: boolean
18+
default: false
19+
- name: testMode
20+
type: boolean
21+
default: false
1622

1723
jobs:
1824
- job: ${{ parameters.jobName }}
@@ -23,9 +29,10 @@ jobs:
2329
type: linux
2430
variables:
2531
repoName: 'msal-javascript-internal'
32+
publishOverride: ${{ parameters.publishOverride }}
2633
ob_outputDirectory: '${{ parameters.path }}/${{ parameters.libName }}' # this directory is uploaded to pipeline artifacts, reddog and cloudvault. More info at https://aka.ms/obpipelines/artifacts
2734
ob_sdl_binskim_break: true # https://aka.ms/obpipelines/sdl
28-
condition: and(succeeded(), eq(variables.publish${{ parameters.publishFlagName }}, true))
35+
condition: and(succeeded(), or(eq(variables.publish${{ parameters.publishFlagName }}, true), eq(variables.publishOverride, true)))
2936
steps:
3037
- task: NodeTool@0
3138
displayName: Install Node
@@ -53,51 +60,68 @@ jobs:
5360
inputs:
5461
azureSubscription: 'MSIDLABKeyVault'
5562
KeyVaultName: 'ADALTestInfo'
56-
SecretsFilter: 'MSALJS-CDN-SAS-EUNO, MSALJS-CDN-SAS-USWE, MSALJSNPMTOKEN'
57-
RunAsPreJob: false
58-
# Publish to CDN
63+
SecretsFilter: 'MSALJS-CDN-SAS-EUNO, MSALJS-CDN-SAS-USWE, MSALJSNPMTOKEN, MSALJSGITHUB'
64+
RunAsPreJob: true
65+
66+
# Publish to CDN
5967
- task: Npm@1
6068
displayName: Publish to CDN
61-
condition: ${{ parameters.cdn }}
62-
workingDirectory: '${{ parameters.path }}/${{ parameters.libName }}'
69+
condition: and(${{ parameters.cdn }}, not(${{ parameters.testMode }}))
6370
inputs:
6471
command: 'custom'
6572
customCommand: 'run cdn'
73+
workingDir: '${{ parameters.path }}/${{ parameters.libName }}'
6674
env:
6775
CDN_SAS_EUNO: $(MSALJS-CDN-SAS-UNO)
6876
CDN_SAS_USWE: $(MSALJS-CDN-SAS-USWE)
69-
70-
# Write NPM authToken
7177
- task: CmdLine@2
72-
displayName: Write npm authToken
78+
displayName: Publish to CDN (Test Mode)
79+
condition: and(${{ parameters.cdn }}, ${{ parameters.testMode }})
7380
inputs:
74-
# This script should overwrite .npmrc, but for some reason it appends.
75-
# script: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN}
76-
script: echo $NPM_TOKEN > .npmrc
77-
workingDirectory: '${{ parameters.path }}/${{ parameters.libName }}'
78-
env:
79-
NPM_TOKEN: $(MSALJSNPMTOKEN)
81+
script: echo "Publish CDN here"
82+
8083

8184
# Publish to npm
8285
- task: Npm@1
8386
displayName: Publish to npm
84-
condition: ${{ not(eq(parameters.libName, 'msal-angular')) }}
87+
condition: and(not(eq('${{ parameters.libName }}', 'msal-angular')), not(${{ parameters.testMode }}))
88+
continueOnError: true
8589
inputs:
8690
workingDir: '${{ parameters.path }}/${{ parameters.libName }}'
8791
command: 'publish'
92+
publishEndpoint: MSALJSNPM
93+
- task: Npm@1
94+
displayName: Publish to npm - Test Mode
95+
condition: and(not(eq('${{ parameters.libName }}', 'msal-angular')), ${{ parameters.testMode }})
96+
continueOnError: true
97+
inputs:
98+
command: 'custom'
99+
workingDir: '${{ parameters.path }}/${{ parameters.libName }}'
100+
customCommand: 'pack'
101+
102+
103+
# Write NPM authToken
104+
- script: echo "$NPM_TOKEN" > .npmrc
105+
displayName: Write npm authToken
106+
workingDirectory: '${{ parameters.path }}/${{ parameters.libName }}'
88107
env:
89-
NPM_TOKEN: $(MSALJSNPMTOKEN)
108+
NPM_TOKEN: $(MSALJSNPMTOKEN}
90109

91110
# Deploy to npm (Angular only)
92111
- task: Npm@1
93112
displayName: Deploy to npm (Angular only)
94-
condition: ${{ eq(parameters.libName, 'msal-angular') }}
113+
condition: and(eq('${{ parameters.libName }}', 'msal-angular'), not(${{ parameters.testMode }}))
95114
inputs:
96115
command: 'custom'
97116
workingDir: '${{ parameters.path }}/${{ parameters.libName }}'
98117
customCommand: 'deploy'
99-
env:
100-
NPM_TOKEN: $(MSALJSNPMTOKEN)
118+
- task: Npm@1
119+
displayName: Deploy to npm (Angular only) - Test Mode
120+
condition: and(eq('${{ parameters.libName }}', 'msal-angular'), ${{ parameters.testMode }})
121+
inputs:
122+
command: 'custom'
123+
workingDir: '${{ parameters.path }}/${{ parameters.libName }}'
124+
customCommand: 'pack'
101125

102126
# Remove .npmrc file
103127
- script: rm .npmrc
@@ -117,7 +141,16 @@ jobs:
117141
workingDirectory: 'release-scripts/'
118142

119143
# Create GitHub releases, discussions and milestones
120-
# - script: echo 'Run node create-releases.js -lib ${{ parameters.path }}/${{ parameters.libName }}'
121-
# displayName: Create GitHub releases, discussions and milestones
122-
# workingDirectory: 'release-scripts/'
123-
# continueOnError: true
144+
- script: node create-releases.js -lib ${{ parameters.path }}/${{ parameters.libName }}
145+
displayName: Create GitHub releases, discussions and milestones
146+
condition: not(${{ parameters.testMode }})
147+
workingDirectory: 'release-scripts/'
148+
continueOnError: true
149+
env:
150+
GITHUB_AUTH: $(MSALJSGITHUB)
151+
152+
- script: echo " Run node create-releases.js -lib ${{ parameters.path }}/${{ parameters.libName }}"
153+
displayName: Create GitHub releases, discussions and milestones - Test Mode
154+
condition: ${{ parameters.testMode }}
155+
workingDirectory: 'release-scripts/'
156+
continueOnError: true

release-scripts/getReleaseDate.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@ if (dateOfNextRelease > 7) {
2121

2222
const delimiter = noSpaces ? '-' : ' ';
2323
const dateComponents = [months[month], year]
24-
const formattedDate = noSpaces ? dateComponents.join(delimiter).toLowerCase() : dateComponents.join(delimiter);
24+
25+
const formattedDate = (noSpaces) ? dateComponents.join(delimiter).toLowerCase() : dateComponents.join(delimiter);
2526
console.log(formattedDate);

release-scripts/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
"type": "git",
77
"url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git"
88
},
9-
"scripts": {
10-
},
9+
"scripts": {},
1110
"dependencies": {
1211
"@octokit/graphql": "^4.8.0",
1312
"@octokit/rest": "^18.12.0",
1413
"dotenv": "^16.0.0",
15-
"semver": "^7.3.5"
14+
"semver": "^7.3.5",
15+
"yargs": "^17.5.1"
1616
}
1717
}

release-scripts/prepublish.sh

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ publishFlagNames["msal-browser"]=publishMsalBrowser;
1010
publishFlagNames["msal-node"]=publishMsalNode;
1111
publishFlagNames["msal-angular"]=publishMsalAngular;
1212
publishFlagNames["msal-react"]=publishMsalReact;
13-
publishFlagNames["msal-node-extensions"]=publishMsalNodeExtensions;
1413

1514
# Iterate each library directory name
1615
for i in "${libNames[@]}"; do

release-scripts/pullRequest.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
const { Octokit } = require("@octokit/rest");
2+
const yargs = require("yargs/yargs");
3+
const { hideBin } = require("yargs/helpers");
4+
const argv = yargs(hideBin(process.argv)).argv;
5+
6+
const titleDate = argv.titleDate;
7+
const branch = argv.branch;
8+
9+
const octokit = new Octokit({
10+
auth: process.env.GITHUBTOKEN
11+
})
12+
13+
octokit.request("POST /repos/AzureAD/microsoft-authentication-library-for-js/pulls", {
14+
owner: "AzureAD",
15+
repo: "microsoft-authentication-library-for-js",
16+
title: `${titleDate} Post Release`,
17+
body: "This PR contains package lock updates & cdn README updates for msal-browser and msal-core.",
18+
head: branch,
19+
base: "dev"
20+
}).then((response) => {
21+
if (response.status >= 200 && response.status < 300) {
22+
console.log("Pull Request created successfully");
23+
process.exit(0);
24+
} else {
25+
process.exit(1);
26+
}
27+
})

0 commit comments

Comments
 (0)