# Copyright (c) 2020 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. # SPDX-License-Identifier: Apache-2.0 parameters: is_release: '' name: '' release_tag: '' steps: - bash: ci/dev-env-install.sh displayName: 'Build/Install the Developer Environment' - bash: | source dev-env/lib/ensure-nix ci/dev-env-push.py displayName: 'Push Developer Environment build results' condition: eq(variables['System.PullRequest.IsFork'], 'False') env: # to upload to the Nix cache GOOGLE_APPLICATION_CREDENTIALS_CONTENT: $(GOOGLE_APPLICATION_CREDENTIALS_CONTENT) NIX_SECRET_KEY_CONTENT: $(NIX_SECRET_KEY_CONTENT) - bash: ci/configure-bazel.sh displayName: 'Configure Bazel' env: IS_FORK: $(System.PullRequest.IsFork) # to upload to the bazel cache GOOGLE_APPLICATION_CREDENTIALS_CONTENT: $(GOOGLE_APPLICATION_CREDENTIALS_CONTENT) - bash: ./fmt.sh --test displayName: 'Platform-agnostic lints and checks' condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) - bash: ./build.sh "_$(uname)" displayName: 'Build' env: DAML_SDK_RELEASE_VERSION: ${{parameters.release_tag}} - task: PublishBuildArtifacts@1 condition: failed() displayName: 'Publish the bazel test logs' inputs: pathtoPublish: 'bazel-testlogs/' artifactName: 'Test logs' - bash: | set -euo pipefail eval "$(./dev-env/bin/dade-assist)" mkdir -p ~/.jfrog cleanup() { rm -f ~/.jfrog/jfrog-cli.conf } trap cleanup EXIT echo "$JFROG_CONFIG_CONTENT" > ~/.jfrog/jfrog-cli.conf unset JFROG_CONFIG_CONTENT ./bazel-bin/release/release --release-dir "$(mktemp -d)" --upload env: DAML_SDK_RELEASE_VERSION: ${{parameters.release_tag}} JFROG_CONFIG_CONTENT: $(JFROG_CONFIG_CONTENT) GPG_KEY: $(gpg-code-signing) MAVEN_USERNAME: $(MAVEN_USERNAME) MAVEN_PASSWORD: $(MAVEN_PASSWORD) MAVEN_URL: "https://oss.sonatype.org" NPM_TOKEN: $(NPM_TOKEN) name: publish_npm_mvn condition: and(succeeded(), eq(${{parameters.is_release}}, 'true'), eq(variables['Build.SourceBranchName'], 'master'), eq('${{parameters.name}}', 'linux')) - bash: | set -euo pipefail eval "$(./dev-env/bin/dade-assist)" TARBALL=daml-sdk-${{parameters.release_tag}}-${{parameters.name}}.tar.gz cp bazel-bin/release/sdk-release-tarball.tar.gz $(Build.StagingDirectory)/$TARBALL echo "##vso[task.setvariable variable=tarball;isOutput=true]$TARBALL" PROTOS_ZIP=protobufs-${{parameters.release_tag}}.zip cp bazel-bin/release/protobufs.zip $(Build.StagingDirectory)/$PROTOS_ZIP echo "##vso[task.setvariable variable=protos-zip;isOutput=true]$PROTOS_ZIP" DAML_ON_SQL=daml-on-sql-${{parameters.release_tag}}.jar ## Not built by default bazel build //ledger/daml-on-sql:daml-on-sql-binary_deploy.jar cp bazel-bin/ledger/daml-on-sql/daml-on-sql-binary_deploy.jar $(Build.StagingDirectory)/$DAML_ON_SQL echo "##vso[task.setvariable variable=daml-on-sql;isOutput=true]$DAML_ON_SQL" JSON_API=http-json-${{parameters.release_tag}}.jar ## Not built by default bazel build //ledger-service/http-json:http-json-binary_deploy.jar cp bazel-bin/ledger-service/http-json/http-json-binary_deploy.jar $(Build.StagingDirectory)/$JSON_API echo "##vso[task.setvariable variable=json-api;isOutput=true]$JSON_API" TRIGGER=daml-trigger-runner-${{parameters.release_tag}}.jar bazel build //triggers/runner:trigger-runner_deploy.jar cp bazel-bin/triggers/runner/trigger-runner_deploy.jar $(Build.StagingDirectory)/$TRIGGER echo "##vso[task.setvariable variable=trigger-runner;isOutput=true]$TRIGGER" SCRIPT=daml-script-${{parameters.release_tag}}.jar bazel build //daml-script/runner:script-runner_deploy.jar cp bazel-bin/daml-script/runner/script-runner_deploy.jar $(Build.StagingDirectory)/$SCRIPT echo "##vso[task.setvariable variable=script-runner;isOutput=true]$SCRIPT" env: DAML_SDK_RELEASE_VERSION: ${{parameters.release_tag}} name: publish condition: and(succeeded(), eq(${{parameters.is_release}}, 'true'), eq(variables['Build.SourceBranchName'], 'master')) - task: PublishPipelineArtifact@0 inputs: targetPath: $(Build.StagingDirectory)/$(publish.tarball) artifactName: $(publish.tarball) condition: and(succeeded(), eq(${{parameters.is_release}}, 'true'), eq(variables['Build.SourceBranchName'], 'master')) - task: PublishPipelineArtifact@0 inputs: targetPath: $(Build.StagingDirectory)/$(publish.protos-zip) artifactName: $(publish.protos-zip) condition: and(succeeded(), eq(${{parameters.is_release}}, 'true'), eq(variables['Build.SourceBranchName'], 'master'), eq('${{parameters.name}}', 'linux')) - task: PublishPipelineArtifact@0 inputs: targetPath: $(Build.StagingDirectory)/$(publish.daml-on-sql) artifactName: $(publish.daml-on-sql) condition: and(succeeded(), eq(${{parameters.is_release}}, 'true'), eq(variables['Build.SourceBranchName'], 'master'), eq('${{parameters.name}}', 'linux')) - task: PublishPipelineArtifact@0 inputs: targetPath: $(Build.StagingDirectory)/$(publish.json-api) artifactName: $(publish.json-api) condition: and(succeeded(), eq(${{parameters.is_release}}, 'true'), eq(variables['Build.SourceBranchName'], 'master'), eq('${{parameters.name}}', 'linux')) - task: PublishPipelineArtifact@0 inputs: targetPath: $(Build.StagingDirectory)/$(publish.trigger-runner) artifactName: $(publish.trigger-runner) condition: and(succeeded(), eq(${{parameters.is_release}}, 'true'), eq(variables['Build.SourceBranchName'], 'master'), eq('${{parameters.name}}', 'linux')) - task: PublishPipelineArtifact@0 inputs: targetPath: $(Build.StagingDirectory)/$(publish.script-runner) artifactName: $(publish.script-runner) condition: and(succeeded(), eq(${{parameters.is_release}}, 'true'), eq(variables['Build.SourceBranchName'], 'master'), eq('${{parameters.name}}', 'linux'))