Skip to content

Commit 3123d29

Browse files
authored
Fix NPM dist tags and make some NPM private (#15416)
* Fix NPM dist tags and make some NPM private * Change files
1 parent 716b7bf commit 3123d29

File tree

30 files changed

+170
-270
lines changed

30 files changed

+170
-270
lines changed

.ado/publish.yml

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -181,53 +181,6 @@ extends:
181181
- script: dir /s "$(Pipeline.Workspace)\published-packages"
182182
displayName: Show created npm packages
183183

184-
# Beachball usually takes care about the NPM package tagging based on the values in package.json files.
185-
# We use the ESRP Release where we must provide the tag explictly (the productstate parameter).
186-
# Fortunately, we just use two tags: latest and some custom tag like "canary", "v0.73-stable", etc.
187-
# The npmGroupByTag.js script groups the created NPM package by these two tags into the specified folders.
188-
- pwsh: |
189-
node .ado/scripts/npmGroupByTag.js "$(Pipeline.Workspace)\published-packages" "$(Pipeline.Workspace)\published-packages\custom-tag" "$(Pipeline.Workspace)\published-packages\latest-tag"
190-
displayName: Group npm packages by tag
191-
192-
- script: dir /s "$(Pipeline.Workspace)\published-packages"
193-
displayName: Show grouped npm packages by tag
194-
195-
# Publish NPM packages using ESRP Release task with the custom tag such as "canary", "v0.73-stable", etc.
196-
- task: 'SFP.release-tasks.custom-build-release-task.EsrpRelease@10'
197-
displayName: 'ESRP Release to npmjs.com (custom tag)'
198-
condition: and(succeeded(), ${{ not(parameters.skipNpmPublish) }}, eq(variables['NpmCustomFolderHasContent'], 'true'))
199-
inputs:
200-
connectedservicename: 'ESRP-CodeSigning-OGX-JSHost-RNW'
201-
usemanagedidentity: false
202-
keyvaultname: 'OGX-JSHost-KV'
203-
authcertname: 'OGX-JSHost-Auth4'
204-
signcertname: 'OGX-JSHost-Sign3'
205-
clientid: '0a35e01f-eadf-420a-a2bf-def002ba898d'
206-
domaintenantid: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
207-
contenttype: npm
208-
folderlocation: '$(NpmCustomFolder)'
209-
productstate: '$(NpmCustomTag)'
210-
211-
approvers: '[email protected]'
212-
213-
# Publish NPM packages using ESRP Release task with the "latest" tag.
214-
- task: 'SFP.release-tasks.custom-build-release-task.EsrpRelease@10'
215-
displayName: 'ESRP Release to npmjs.com (latest)'
216-
condition: and(succeeded(), ${{ not(parameters.skipNpmPublish) }}, eq(variables['NpmLatestFolderHasContent'], 'true'))
217-
inputs:
218-
connectedservicename: 'ESRP-CodeSigning-OGX-JSHost-RNW'
219-
usemanagedidentity: false
220-
keyvaultname: 'OGX-JSHost-KV'
221-
authcertname: 'OGX-JSHost-Auth4'
222-
signcertname: 'OGX-JSHost-Sign3'
223-
clientid: '0a35e01f-eadf-420a-a2bf-def002ba898d'
224-
domaintenantid: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
225-
contenttype: npm
226-
folderlocation: '$(NpmLatestFolder)'
227-
productstate: 'latest'
228-
229-
approvers: '[email protected]'
230-
231184
# Beachball reverts to local state after publish, but we want the updates it added
232185
- script: git pull origin $(SourceBranchWithFolders)
233186
displayName: git pull

.ado/release.yml

Lines changed: 52 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,51 @@ extends:
2626
customBuildTags:
2727
- ES365AIMigrationTooling-Release
2828
stages:
29-
- stage: PushToPrivateAdoStage
30-
displayName: ADO - react-native
29+
- stage: Release
30+
displayName: Publish artifacts
3131
jobs:
32-
- job: PushPackages
33-
displayName: Push packages
34-
condition: succeeded()
32+
- job: PushNpm
33+
displayName: npmjs.com - Publish npm packages
34+
variables:
35+
- group: RNW Secrets
36+
timeoutInMinutes: 0
37+
templateContext:
38+
inputs:
39+
- input: pipelineArtifact
40+
pipeline: 'Publish'
41+
artifactName: 'NpmPackedTarballs'
42+
targetPath: '$(Pipeline.Workspace)/published-packages'
43+
- input: pipelineArtifact
44+
pipeline: 'Publish'
45+
artifactName: 'VersionEnvVars'
46+
targetPath: '$(Pipeline.Workspace)/VersionEnvVars'
47+
steps:
48+
- checkout: none
49+
- task: CmdLine@2
50+
displayName: Apply version variables
51+
inputs:
52+
script: node $(Pipeline.Workspace)/VersionEnvVars/versionEnvVars.js
53+
- script: dir /s "$(Pipeline.Workspace)\published-packages"
54+
displayName: Show npm packages
55+
- task: 'SFP.release-tasks.custom-build-release-task.EsrpRelease@10'
56+
displayName: 'ESRP Release to npmjs.com'
57+
condition: and(succeeded(), ne(variables['NpmDistTag'], ''))
58+
inputs:
59+
connectedservicename: 'ESRP-CodeSigning-OGX-JSHost-RNW'
60+
usemanagedidentity: false
61+
keyvaultname: 'OGX-JSHost-KV'
62+
authcertname: 'OGX-JSHost-Auth4'
63+
signcertname: 'OGX-JSHost-Sign3'
64+
clientid: '0a35e01f-eadf-420a-a2bf-def002ba898d'
65+
domaintenantid: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
66+
contenttype: npm
67+
folderlocation: '$(Pipeline.Workspace)\published-packages'
68+
productstate: '$(NpmDistTag)'
69+
70+
approvers: '[email protected]'
71+
72+
- job: PushPrivateAdo
73+
displayName: ADO - react-native
3574
timeoutInMinutes: 0
3675
templateContext:
3776
inputs:
@@ -52,12 +91,9 @@ extends:
5291
inputs:
5392
script: nuget.exe push *.nupkg -ApiKey AzureArtifacts -Source https://pkgs.dev.azure.com/ms/_packaging/react-native/nuget/v3/index.json -NonInteractive -Verbosity Detailed -SkipDuplicate -NoSymbols
5493
workingDirectory: $(Pipeline.Workspace)/ReactWindows-final-nuget
55-
- stage: PushToPublicAdoStage
56-
displayName: ADO - react-native-public
57-
jobs:
58-
- job: PushPackages
59-
displayName: Push packages
60-
condition: succeeded()
94+
95+
- job: PushPublicAdo
96+
displayName: ADO - react-native-public
6197
timeoutInMinutes: 0
6298
templateContext:
6399
inputs:
@@ -78,13 +114,11 @@ extends:
78114
inputs:
79115
script: nuget.exe push *.nupkg -ApiKey AzureArtifacts -Source https://pkgs.dev.azure.com/ms/react-native/_packaging/react-native-public/nuget/v3/index.json -NonInteractive -Verbosity Detailed -SkipDuplicate -NoSymbols
80116
workingDirectory: $(Pipeline.Workspace)/ReactWindows-final-nuget
81-
- stage: PushToNuGetStage
82-
displayName: nuget.org - Push nuget packages
83-
variables:
84-
- group: RNW Secrets
85-
jobs:
86-
- job: PushPackages
87-
displayName: Push packages
117+
118+
- job: PushNuGetOrg
119+
displayName: nuget.org - Push nuget packages
120+
variables:
121+
- group: RNW Secrets
88122
timeoutInMinutes: 0
89123
templateContext:
90124
inputs:

.ado/scripts/npmGroupByTag.js

Lines changed: 0 additions & 202 deletions
This file was deleted.

.ado/scripts/setVersionEnvVars.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ const versionEnvVars = {
3737
publishCommitId: commitId,
3838
reactDevDependency: pkgJson.devDependencies['react'],
3939
reactNativeDevDependency: pkgJson.devDependencies['react-native'],
40+
npmDistTag: pkgJson?.beachball?.defaultNpmTag?.trim(),
41+
}
42+
43+
if (!versionEnvVars.npmDistTag) {
44+
throw new Error('defaultNpmTag is missing in vnext/package.json');
4045
}
4146

4247
// Set the build number so the build in the publish pipeline and the release pipeline are named with the convenient version
@@ -54,8 +59,14 @@ console.log(`##vso[task.setvariable variable=npmVersion]${versionEnvVars.npmVers
5459
console.log(`##vso[task.setvariable variable=publishCommitId]${versionEnvVars.publishCommitId}`);
5560
console.log(`##vso[task.setvariable variable=reactDevDependency]${versionEnvVars.reactDevDependency}`);
5661
console.log(`##vso[task.setvariable variable=reactNativeDevDependency]${versionEnvVars.reactNativeDevDependency}`);
62+
console.log(`##vso[task.setvariable variable=NpmDistTag]${versionEnvVars.npmDistTag}`);
63+
64+
const runnerTemp = process.env.RUNNER_TEMP;
65+
if (!runnerTemp) {
66+
throw new Error('RUNNER_TEMP environment variable is not set');
67+
}
5768

58-
const dirPath = path.resolve(process.env.RUNNER_TEMP, 'versionEnvVars');
69+
const dirPath = path.resolve(runnerTemp, 'versionEnvVars');
5970
fs.mkdirSync(dirPath, {recursive: true});
6071

6172
fs.writeFileSync(path.resolve(dirPath, 'versionEnvVars.js'),
@@ -68,4 +79,5 @@ console.log("##vso[task.setvariable variable=npmVersion]${versionEnvVars.npmVers
6879
console.log("##vso[task.setvariable variable=publishCommitId]${versionEnvVars.publishCommitId}");
6980
console.log("##vso[task.setvariable variable=reactDevDependency]${versionEnvVars.reactDevDependency}");
7081
console.log("##vso[task.setvariable variable=reactNativeDevDependency]${versionEnvVars.reactNativeDevDependency}");
82+
console.log("##vso[task.setvariable variable=NpmDistTag]${versionEnvVars.npmDistTag}");
7183
`);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"comment": "Fix NPM dist tags and make some NPM private",
3+
"type": "none",
4+
"packageName": "@react-native-windows/automation",
5+
"email": "[email protected]",
6+
"dependentChangeType": "none"
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"comment": "Fix NPM dist tags and make some NPM private",
3+
"type": "none",
4+
"packageName": "@react-native-windows/automation-channel",
5+
"email": "[email protected]",
6+
"dependentChangeType": "none"
7+
}

0 commit comments

Comments
 (0)