diff --git a/eng/ci/release.yml b/eng/ci/release.yml index 084871d..827ba3d 100644 --- a/eng/ci/release.yml +++ b/eng/ci/release.yml @@ -21,7 +21,8 @@ extends: os: linux stages: - - stage: release + - stage: release_durabletask_js + displayName: 'Release @microsoft/durabletask-js' jobs: - job: durabletask_js displayName: 'Release @microsoft/durabletask-js' @@ -54,6 +55,20 @@ extends: mainpublisher: 'durabletask-java' domaintenantid: '33e01921-4d64-4f8c-a055-5bdaffd5e33d' + - stage: release_durabletask_js_azuremanaged + displayName: 'Release @microsoft/durabletask-js-azuremanaged' + # Publish the core durabletask-js stage before this dependent package so its + # "@microsoft/durabletask-js" dependency resolves against the just-published core. + # This depends on the core stage only, not on the other provider stage (they are + # siblings, mirroring durabletask-python). ADO's default stage condition requires the + # core stage to have completed and succeeded, so a de-selected (Skipped) core would + # otherwise skip this stage too; the explicit condition below also accepts a Skipped + # core, which is what lets this package release on its own when core is de-selected at + # queue time. It deliberately does NOT accept Failed or Canceled, so a real core publish + # failure still blocks this stage and the publish ordering is preserved. + dependsOn: release_durabletask_js + condition: in(dependencies.release_durabletask_js.result, 'Succeeded', 'SucceededWithIssues', 'Skipped') + jobs: - job: durabletask_js_azuremanaged displayName: 'Release @microsoft/durabletask-js-azuremanaged' templateContext: @@ -85,6 +100,21 @@ extends: mainpublisher: 'durabletask-java' domaintenantid: '33e01921-4d64-4f8c-a055-5bdaffd5e33d' + - stage: release_durable_functions + displayName: 'Release durable-functions' + # Publish the core durabletask-js stage before this dependent package: durable-functions + # pins "@microsoft/durabletask-js" to an EXACT version, so core must be on the registry + # first or the published package is uninstallable. This depends on the core stage only, + # not on the azuremanaged stage (they are siblings, mirroring durabletask-python). ADO's + # default stage condition requires the core stage to have completed and succeeded, so a + # de-selected (Skipped) core would otherwise skip this stage too; the explicit condition + # below also accepts a Skipped core, which is what lets durable-functions release on its + # own when core is de-selected at queue time. It deliberately does NOT accept Failed or + # Canceled, so if the core publish actually fails this stage still will not run and the + # exact-pin ordering guarantee holds. + dependsOn: release_durabletask_js + condition: in(dependencies.release_durabletask_js.result, 'Succeeded', 'SucceededWithIssues', 'Skipped') + jobs: - job: durable_functions displayName: 'Release durable-functions' templateContext: diff --git a/eng/templates/build.yml b/eng/templates/build.yml index c747c8f..06c1ab2 100644 --- a/eng/templates/build.yml +++ b/eng/templates/build.yml @@ -13,7 +13,7 @@ jobs: - checkout: self - task: NodeTool@0 inputs: - versionSpec: 20.x + versionSpec: 22.x displayName: "Install Node.js" - script: node scripts/setupNpmrc.js