# Copyright (c) 2020 The DAML Authors. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # Azure Pipelines file, see https://aka.ms/yaml # Do not run on PRs pr: none # Do not run on merge to master trigger: none # Do run on a schedule (hourly) # # This is currently (2019-08-15) broken on Azure for GitHub-hosted repos. It # does, however, work as expected for Azure-hosted repos. As a workaround, we # have created a repo inside Azure that contains an `azure-pipelines.yml` file # that just triggers this job. # # When the situation is resolved, delete that repo in Azure and uncomment the # following. In the meantime, this should stay commented so we avoid running # jobs twice when Azure fixes this issue. #schedules: #- cron: "0 * * * *" # displayName: hourly cron # branches: # include: # - master # always: true jobs: - job: docs timeoutInMinutes: 120 pool: name: 'linux-pool' steps: - checkout: self - bash: ci/dev-env-install.sh displayName: 'Build/Install the Developer Environment' - bash: ci/cron/run.sh env: AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID) AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY) - bash: | set -euo pipefail MESSAGE=$(git log --pretty=format:%s -n1) curl -XPOST \ -i \ -H 'Content-type: application/json' \ --data "{\"text\":\" *FAILED* Daily Docs: \n\"}" \ $(Slack.team-daml) condition: and(failed(), eq(variables['Build.SourceBranchName'], 'master')) - template: ci/tell-slack-failed.yml - job: docker_image timeoutInMinutes: 60 pool: name: 'linux-pool' steps: - checkout: self - bash: | set -euo pipefail eval "$(dev-env/bin/dade-assist)" HEAD=$(git rev-parse HEAD) while ! nix-build -A tools.sed -A tools.jq -A tools.curl nix; do :; done echo $DOCKER_PASSWORD | docker login --username $DOCKER_LOGIN --password-stdin RELEASES=$(curl https://api.github.com/repos/digital-asset/daml/releases -s | jq -r '. | map(select(.prerelease == false)) | map(.tag_name)[]') DIR=$(pwd) VERSIONS=$(curl 'https://hub.docker.com/v2/repositories/digitalasset/daml-sdk/tags/?page_size=10000' -s) # Our docker tags should be stable. Therefore, we only build the image if it has not already # been built before and we checkout the Dockerfile for the release tag. # We do not update docker images for older releases so only docker images for SDK releases # >= 0.13.43 are built this way. for version in $(echo $RELEASES | sed -e 's/ /\n/g'); do LAST_UPDATE=$(echo $VERSIONS | jq -r '.results[] | select(.name == "'${version#v}'") | .last_updated') if [[ -n "$LAST_UPDATE" ]]; then echo "${version#v} already exists, skipping." else echo "Building version ${version#v}..." git checkout "$version" cd ci/docker/daml-sdk docker build -t digitalasset/daml-sdk:${version#v} --build-arg VERSION=${version#v} . docker push digitalasset/daml-sdk:${version#v} cd "$DIR" git checkout $HEAD echo "Done." fi done env: DOCKER_LOGIN: $(DOCKER_LOGIN) DOCKER_PASSWORD: $(DOCKER_PASSWORD) - template: ci/tell-slack-failed.yml - job: vscode_marketplace timeoutInMinutes: 10 pool: name: 'linux-pool' steps: - checkout: self - bash: | set -euo pipefail eval "$(dev-env/bin/dade-assist)" AUTH=$(echo -n "OAuth:${MARKETPLACE_TOKEN}" | base64 -w0) MARKET=$(curl -H "Authorization: Basic $AUTH" \ -H "Accept: application/json;api-version=5.0-preview.2" \ -s \ "https://marketplace.visualstudio.com/_apis/gallery/publishers/DigitalAssetHoldingsLLC/extensions/daml?flags=1" \ | jq -r '.versions[0].version') GITHUB=$(curl https://api.github.com/repos/digital-asset/daml/releases -s | jq -r '. | map(select(.prerelease == false)) | map(.tag_name)[0]') if [[ "${GITHUB#v}" != "$MARKET" ]] && git merge-base --is-ancestor 798e96c9b9034eac85ace786b9e1955cf380285c $GITHUB; then echo "Publishing $GITHUB to VSCode Marketplace" git checkout $GITHUB cd compiler/daml-extension # This produces out/src/extension.js bazel run @nodejs//:yarn bazel run @nodejs//:yarn compile bazel run --run_under="cd $PWD && " @daml_extension_deps//vsce/bin:vsce -- publish ${GITHUB#v} -p $MARKETPLACE_TOKEN else if [[ "${GITHUB#v}" == "$MARKET" ]]; then echo "Version on marketplace is already the latest ($GITHUB)." else echo "Latest version is not ready for marketplace publication." fi fi env: MARKETPLACE_TOKEN: $(VSCODE_MARKETPLACE_TOKEN) - template: ci/tell-slack-failed.yml - job: download_stats timeoutInMinutes: 10 pool: name: "linux-pool" steps: - checkout: self - bash: | set -euo pipefail eval "$(dev-env/bin/dade-assist)" STATS=$(mktemp) curl https://api.github.com/repos/digital-asset/daml/releases -s | gzip -9 > $STATS GCS_KEY=$(mktemp) cleanup () { rm -f $GCS_KEY } trap cleanup EXIT echo "$GOOGLE_APPLICATION_CREDENTIALS_CONTENT" > $GCS_KEY gcloud auth activate-service-account --key-file=$GCS_KEY BOTO_CONFIG=/dev/null gsutil cp $STATS gs://daml-data/downloads/$(date -u +%Y%m%d_%H%M%SZ).json.gz env: GOOGLE_APPLICATION_CREDENTIALS_CONTENT: $(GOOGLE_APPLICATION_CREDENTIALS_CONTENT) - template: ci/tell-slack-failed.yml