Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 23 additions & 47 deletions .ado/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -211,53 +211,6 @@ extends:
- script: dir /s "$(Pipeline.Workspace)\published-packages"
displayName: Show created npm packages

# Beachball usually takes care about the NPM package tagging based on the values in package.json files.
# We use the ESRP Release where we must provide the tag explictly (the productstate parameter).
# Fortunately, we just use two tags: latest and some custom tag like "canary", "v0.73-stable", etc.
# The npmGroupByTag.js script groups the created NPM package by these two tags into the specified folders.
- pwsh: |
node .ado/scripts/npmGroupByTag.js "$(Pipeline.Workspace)\published-packages" "$(Pipeline.Workspace)\published-packages\custom-tag" "$(Pipeline.Workspace)\published-packages\latest-tag"
displayName: Group npm packages by tag

- script: dir /s "$(Pipeline.Workspace)\published-packages"
displayName: Show grouped npm packages by tag

# Publish NPM packages using ESRP Release task with the custom tag such as "canary", "v0.73-stable", etc.
- task: 'SFP.release-tasks.custom-build-release-task.EsrpRelease@10'
displayName: 'ESRP Release to npmjs.com (custom tag)'
condition: and(succeeded(), ${{ not(parameters.skipNpmPublish) }}, eq(variables['NpmCustomFolderHasContent'], 'true'))
inputs:
connectedservicename: 'ESRP-CodeSigning-OGX-JSHost-RNW'
usemanagedidentity: false
keyvaultname: 'OGX-JSHost-KV'
authcertname: 'OGX-JSHost-Auth4'
signcertname: 'OGX-JSHost-Sign3'
clientid: '0a35e01f-eadf-420a-a2bf-def002ba898d'
domaintenantid: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
contenttype: npm
folderlocation: '$(NpmCustomFolder)'
productstate: '$(NpmCustomTag)'
owners: '[email protected]'
approvers: '[email protected]'

# Publish NPM packages using ESRP Release task with the "latest" tag.
- task: 'SFP.release-tasks.custom-build-release-task.EsrpRelease@10'
displayName: 'ESRP Release to npmjs.com (latest)'
condition: and(succeeded(), ${{ not(parameters.skipNpmPublish) }}, eq(variables['NpmLatestFolderHasContent'], 'true'))
inputs:
connectedservicename: 'ESRP-CodeSigning-OGX-JSHost-RNW'
usemanagedidentity: false
keyvaultname: 'OGX-JSHost-KV'
authcertname: 'OGX-JSHost-Auth4'
signcertname: 'OGX-JSHost-Sign3'
clientid: '0a35e01f-eadf-420a-a2bf-def002ba898d'
domaintenantid: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
contenttype: npm
folderlocation: '$(NpmLatestFolder)'
productstate: 'latest'
owners: '[email protected]'
approvers: '[email protected]'

# Beachball reverts to local state after publish, but we want the updates it added
- script: git pull origin $(SourceBranchWithFolders)
displayName: git pull
Expand All @@ -274,6 +227,29 @@ extends:
parameters:
buildEnvironment: Continuous

- script: echo NpmDistTag is $(NpmDistTag)
displayName: Show NPM dist tag

- script: dir /s "$(Pipeline.Workspace)\published-packages"
displayName: Show npm packages before ESRP release

- task: 'SFP.release-tasks.custom-build-release-task.EsrpRelease@10'
displayName: 'ESRP Release to npmjs.com'
condition: and(succeeded(), ne(variables['NpmDistTag'], ''))
inputs:
connectedservicename: 'ESRP-CodeSigning-OGX-JSHost-RNW'
usemanagedidentity: false
keyvaultname: 'OGX-JSHost-KV'
authcertname: 'OGX-JSHost-Auth4'
signcertname: 'OGX-JSHost-Sign3'
clientid: '0a35e01f-eadf-420a-a2bf-def002ba898d'
domaintenantid: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
contenttype: npm
folderlocation: '$(Pipeline.Workspace)\published-packages'
productstate: '$(NpmDistTag)'
owners: '[email protected]'
approvers: '[email protected]'

- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 📒 Generate Manifest Npm
inputs:
Expand Down
30 changes: 12 additions & 18 deletions .ado/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,11 @@ extends:
customBuildTags:
- ES365AIMigrationTooling-Release
stages:
- stage: PushToPrivateAdoStage
displayName: ADO - react-native
- stage: Release
displayName: Publish artifacts
jobs:
- job: PushPackages
displayName: Push packages
condition: succeeded()
- job: PushPrivateAdo
displayName: ADO - react-native
timeoutInMinutes: 0
templateContext:
inputs:
Expand All @@ -52,12 +51,9 @@ extends:
inputs:
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
workingDirectory: $(Pipeline.Workspace)/ReactWindows-final-nuget
- stage: PushToPublicAdoStage
displayName: ADO - react-native-public
jobs:
- job: PushPackages
displayName: Push packages
condition: succeeded()

- job: PushPublicAdo
displayName: ADO - react-native-public
timeoutInMinutes: 0
templateContext:
inputs:
Expand All @@ -78,13 +74,11 @@ extends:
inputs:
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
workingDirectory: $(Pipeline.Workspace)/ReactWindows-final-nuget
- stage: PushToNuGetStage
displayName: nuget.org - Push nuget packages
variables:
- group: RNW Secrets
jobs:
- job: PushPackages
displayName: Push packages

- job: PushNuGetOrg
displayName: nuget.org - Push nuget packages
variables:
- group: RNW Secrets
timeoutInMinutes: 0
templateContext:
inputs:
Expand Down
202 changes: 0 additions & 202 deletions .ado/scripts/npmGroupByTag.js

This file was deleted.

14 changes: 13 additions & 1 deletion .ado/scripts/setVersionEnvVars.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ const versionEnvVars = {
publishCommitId: commitId,
reactDevDependency: pkgJson.devDependencies['react'],
reactNativeDevDependency: pkgJson.devDependencies['react-native'],
npmDistTag: pkgJson?.beachball?.defaultNpmTag?.trim(),
}

if (!versionEnvVars.npmDistTag) {
throw new Error('defaultNpmTag is missing in vnext/package.json');
}

// Set the build number so the build in the publish pipeline and the release pipeline are named with the convenient version
Expand All @@ -54,8 +59,14 @@ console.log(`##vso[task.setvariable variable=npmVersion]${versionEnvVars.npmVers
console.log(`##vso[task.setvariable variable=publishCommitId]${versionEnvVars.publishCommitId}`);
console.log(`##vso[task.setvariable variable=reactDevDependency]${versionEnvVars.reactDevDependency}`);
console.log(`##vso[task.setvariable variable=reactNativeDevDependency]${versionEnvVars.reactNativeDevDependency}`);
console.log(`##vso[task.setvariable variable=NpmDistTag]${versionEnvVars.npmDistTag}`);

const runnerTemp = process.env.RUNNER_TEMP;
if (!runnerTemp) {
throw new Error('RUNNER_TEMP environment variable is not set');
}

const dirPath = path.resolve(process.env.RUNNER_TEMP, 'versionEnvVars');
const dirPath = path.resolve(runnerTemp, 'versionEnvVars');
fs.mkdirSync(dirPath, {recursive: true});

fs.writeFileSync(path.resolve(dirPath, 'versionEnvVars.js'),
Expand All @@ -68,4 +79,5 @@ console.log("##vso[task.setvariable variable=npmVersion]${versionEnvVars.npmVers
console.log("##vso[task.setvariable variable=publishCommitId]${versionEnvVars.publishCommitId}");
console.log("##vso[task.setvariable variable=reactDevDependency]${versionEnvVars.reactDevDependency}");
console.log("##vso[task.setvariable variable=reactNativeDevDependency]${versionEnvVars.reactNativeDevDependency}");
console.log("##vso[task.setvariable variable=NpmDistTag]${versionEnvVars.npmDistTag}");
`);
Loading