daml/ci/daily-snapshot.yml
Gary Verhaegen 0002b7ebae
guard nightly (#13158)
In some cases we may end up with the tip of the main branch built as a
split release manually. When Azure then tries to run it, the release
fails (typically on the upload to NPM step).

Normally, Azure is set to run this only once per commit, but that only
applies when the run is successful. So if it breaks in a reproducible
way (e.g. because the version already exists on NPM), Azure will keep
trying every day.

This PR adds a simple guard that makes the nightly build _not_ a release
commit if the reelease already exists, which should short-circuit most
of the jobs in the build and finish successfully.

CHANGELOG_BEGIN
CHANGELOG_END
2022-03-04 11:16:01 +00:00

74 lines
2.1 KiB
YAML

# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
pr: none
trigger: none
schedules:
- cron: "0 1 * * *"
displayName: Daily split snapshot
branches:
include:
- main
jobs:
- job: check_for_release
dependsOn:
- git_sha
variables:
branch_sha: $[ dependencies.git_sha.outputs['out.branch'] ]
fork_sha: $[ dependencies.git_sha.outputs['out.fork_point'] ]
pool:
name: "ubuntu_20_04"
demands: assignment -equals default
steps:
- template: bash-lib.yml
parameters:
var_name: bash-lib
- bash: |
set -euo pipefail
eval "$(./dev-env/bin/dade-assist)"
source $(bash-lib)
prefix=$(head -1 LATEST | awk '{print $2}' | sed -e 's/\([^-]*\).*/\1/')
release=$(./release.sh snapshot HEAD $prefix | awk '{print $2}')
ERR=$(mktemp)
OUT=$(curl https://digitalasset.jfrog.io/artifactory/api/storage/assembly/daml/$release \
-u $AUTH \
-I \
2>$ERR)
STATUS=$(echo "$OUT" | head -1 | sed 's:HTTP/1.1 \([^ ]\+\).*:\1:')
case "$STATUS" in
200)
echo "Version $release already exists on Artifactory, aborting."
setvar is_release false
;;
404)
setvar is_release true
setvar trigger_sha "$(branch_sha)"
setvar release_sha "$(branch_sha)"
setvar release_tag "$release"
setvar split_release_process true
;;
*)
echo "Unexpected status code: $STATUS"
echo "curl stdout:"
echo "--"
echo "$OUT"
echo "--"
echo "curl stderr:"
echo "--"
echo "$ERR"
echo "--"
exit 1
;;
esac
setvar scala_2_13 true
name: out
env:
AUTH: $(ARTIFACTORY_USERNAME):$(ARTIFACTORY_PASSWORD)
- template: build.yml
- template: split-release-job.yml
- job: release
condition: false