2019-05-14 15:25:02 +03:00
|
|
|
# Azure Pipelines file, see https://aka.ms/yaml
|
|
|
|
|
2019-06-14 02:12:06 +03:00
|
|
|
# Do not run on PRs
|
|
|
|
pr: none
|
2019-08-16 15:05:11 +03:00
|
|
|
|
2019-06-14 02:12:06 +03:00
|
|
|
# Do not run on merge to master
|
|
|
|
trigger: none
|
2019-08-16 15:05:11 +03:00
|
|
|
|
2019-06-14 02:12:06 +03:00
|
|
|
# Do run on a schedule (hourly)
|
2019-07-26 20:51:45 +03:00
|
|
|
#
|
2019-08-16 15:05:11 +03:00
|
|
|
# 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
|
2019-05-14 15:25:02 +03:00
|
|
|
|
|
|
|
jobs:
|
|
|
|
- job: docs
|
partial fix for docs cron (#3941)
This commit aims at mitigating two issues we have noticed with the
0.13.41 release:
1. The initial cron run for that release got interrupted at the 50
minutes mark, which happened to be right in the middle of the s3 upload.
This means it had already changed the versions.json file, but had not
finished updating the actual html files. Right now, the docs.daml.com
website shows version 0.13.41 in the drop-down, but actually displays
the content for 0.13.40. Additionally, trying to explicitly visit the
website for 0.13.41 (https://docs.daml.com/0.13.41) yields a 404. Note
that this also means the cron job did not reach the "tell HubSpot"
point, so 0.13.41 did not get announced.
2. As the script also did not reach the "clear cache" step, subsequent
runs have been rebuilding the documentation for no reason as the
sequence of steps was: check versions.json through HTTP, get cached one,
see it's not up-to-date, build docs, check versions.json through s3 API,
bypassing the cache, see it's up-to-date, stop.
To address those issues, this PR changes the cron to:
1. Increase the timeout to 2h instead of 50 minutes.
2. Always check the versions.json file through s3, rather than go
through the HTTP cache first.
These are not complete solutions but I'm not sure how to do better given
that s3 does not have atomic operations.
2020-01-03 16:43:22 +03:00
|
|
|
timeoutInMinutes: 120
|
2019-05-14 15:25:02 +03:00
|
|
|
pool:
|
|
|
|
name: 'linux-pool'
|
|
|
|
steps:
|
|
|
|
- checkout: self
|
|
|
|
- bash: ci/dev-env-install.sh
|
|
|
|
displayName: 'Build/Install the Developer Environment'
|
2019-10-28 21:26:06 +03:00
|
|
|
- bash: ci/cron/run.sh
|
2019-05-14 15:25:02 +03:00
|
|
|
env:
|
2019-05-22 01:26:07 +03:00
|
|
|
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
|
|
|
|
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
|
2019-07-29 11:16:33 +03:00
|
|
|
HUBSPOT_TOKEN: $(HUBSPOT_TOKEN)
|
2019-05-14 15:25:02 +03:00
|
|
|
- bash: |
|
|
|
|
set -euo pipefail
|
|
|
|
MESSAGE=$(git log --pretty=format:%s -n1)
|
|
|
|
curl -XPOST \
|
|
|
|
-i \
|
|
|
|
-H 'Content-type: application/json' \
|
|
|
|
--data "{\"text\":\"<!here> *FAILED* Daily Docs: <https://dev.azure.com/digitalasset/daml/_build/results?buildId=$(Build.BuildId)|$MESSAGE>\n\"}" \
|
|
|
|
$(Slack.URL)
|
|
|
|
condition: and(failed(), eq(variables['Build.SourceBranchName'], 'master'))
|
2020-01-23 17:28:37 +03:00
|
|
|
- template: ci/tell-slack-failed.yml
|
2019-06-21 21:39:24 +03:00
|
|
|
|
|
|
|
- job: docker_image
|
2019-06-24 19:37:57 +03:00
|
|
|
timeoutInMinutes: 60
|
2019-06-21 21:39:24 +03:00
|
|
|
pool:
|
|
|
|
name: 'linux-pool'
|
|
|
|
steps:
|
|
|
|
- checkout: self
|
|
|
|
- bash: |
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
eval "$(dev-env/bin/dade-assist)"
|
2020-01-15 21:34:48 +03:00
|
|
|
HEAD=$(git rev-parse HEAD)
|
|
|
|
while ! nix-build -A tools.sed -A tools.jq -A tools.curl nix; do :; done
|
2019-06-21 21:39:24 +03:00
|
|
|
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)
|
2020-01-13 13:53:38 +03:00
|
|
|
# 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.
|
2019-06-21 21:39:24 +03:00
|
|
|
for version in $(echo $RELEASES | sed -e 's/ /\n/g'); do
|
2019-06-24 19:37:57 +03:00
|
|
|
LAST_UPDATE=$(echo $VERSIONS | jq -r '.results[] | select(.name == "'${version#v}'") | .last_updated')
|
2020-01-13 13:53:38 +03:00
|
|
|
if [[ -n "$LAST_UPDATE" ]]; then
|
|
|
|
echo "${version#v} already exists, skipping."
|
2019-06-21 21:39:24 +03:00
|
|
|
else
|
|
|
|
echo "Building version ${version#v}..."
|
2020-01-15 21:34:48 +03:00
|
|
|
git checkout "$version"
|
2019-06-24 19:37:57 +03:00
|
|
|
cd ci/docker/daml-sdk
|
|
|
|
docker build -t digitalasset/daml-sdk:${version#v} --build-arg VERSION=${version#v} .
|
2019-06-22 19:47:25 +03:00
|
|
|
docker push digitalasset/daml-sdk:${version#v}
|
2019-06-21 21:39:24 +03:00
|
|
|
cd "$DIR"
|
2020-01-15 21:34:48 +03:00
|
|
|
git checkout $HEAD
|
2019-06-21 21:39:24 +03:00
|
|
|
echo "Done."
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
env:
|
|
|
|
DOCKER_LOGIN: $(DOCKER_LOGIN)
|
|
|
|
DOCKER_PASSWORD: $(DOCKER_PASSWORD)
|
2020-01-23 17:28:37 +03:00
|
|
|
- template: ci/tell-slack-failed.yml
|
2019-06-27 01:48:19 +03:00
|
|
|
|
|
|
|
- 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
|
2019-07-08 12:40:48 +03:00
|
|
|
cd compiler/daml-extension
|
2019-07-08 22:47:38 +03:00
|
|
|
# This produces out/src/extension.js
|
2020-01-23 16:07:05 +03:00
|
|
|
bazel run @nodejs//:yarn
|
|
|
|
bazel run @nodejs//:yarn compile
|
2019-07-10 22:54:23 +03:00
|
|
|
bazel run --run_under="cd $PWD && " @daml_extension_deps//vsce/bin:vsce -- publish ${GITHUB#v} -p $MARKETPLACE_TOKEN
|
2019-06-27 01:48:19 +03:00
|
|
|
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)
|
2020-01-23 17:28:37 +03:00
|
|
|
- template: ci/tell-slack-failed.yml
|
2019-07-04 14:23:51 +03:00
|
|
|
|
|
|
|
- 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)
|
2019-09-24 14:02:29 +03:00
|
|
|
cleanup () {
|
|
|
|
rm -f $GCS_KEY
|
|
|
|
}
|
|
|
|
trap cleanup EXIT
|
2019-07-04 14:23:51 +03:00
|
|
|
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)
|
2020-01-23 17:28:37 +03:00
|
|
|
- template: ci/tell-slack-failed.yml
|