2022-01-03 19:36:51 +03:00
# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
2021-01-04 22:45:30 +03:00
# SPDX-License-Identifier: Apache-2.0
trigger : none
pr :
autoCancel : true # cancel previous builds on push
branches :
include :
- main
- release/*
jobs :
- template : build.yml
- job : check_standard_change_label
dependsOn :
- git_sha
variables :
fork_sha : $[ dependencies.git_sha.outputs['out.fork_point'] ]
branch_sha : $[ dependencies.git_sha.outputs['out.branch'] ]
condition : eq(variables['Build.Reason'], 'PullRequest')
pool :
2021-01-27 19:38:34 +03:00
name : 'ubuntu_20_04'
2021-01-04 22:45:30 +03:00
demands : assignment -equals default
steps :
- checkout : self
- bash : |
set -euo pipefail
has_changed () {
git diff $(fork_sha) $(branch_sha) --name-only | grep -q "^$1"
}
fail_if_missing_std_change_label () {
curl https://api.github.com/repos/digital-asset/daml/pulls/$PR -s | jq -r '.labels[].name' | grep -q '^Standard-Change$'
}
if has_changed "infra/" || has_changed "LATEST"; then
fail_if_missing_std_change_label
fi
env :
PR : $(System.PullRequest.PullRequestNumber)
- job : check_changelog_entry
dependsOn :
- git_sha
variables :
fork_sha : $[ dependencies.git_sha.outputs['out.fork_point'] ]
branch_sha : $[ dependencies.git_sha.outputs['out.branch'] ]
pr.num : $[ variables['System.PullRequest.PullRequestNumber'] ]
condition : eq(variables['Build.Reason'], 'PullRequest')
pool :
2021-01-27 19:38:34 +03:00
name : 'ubuntu_20_04'
2021-01-04 22:45:30 +03:00
demands : assignment -equals default
steps :
- checkout : self
- template : bash-lib.yml
parameters :
var_name : bash-lib
- bash : |
set -euo pipefail
source $(bash-lib)
git checkout $(branch_sha)
if ci/check-changelog.sh $(fork_sha); then
exit 0
else
user=$(user_slack_handle $(branch_sha))
if [ "$user" != "" ]; then
tell_slack "<@${user}> <https://dev.azure.com/digitalasset/daml/_build/results?buildId=$(Build.BuildId)|Build $(Build.BuildId)> for <https://github.com/digital-asset/daml/pull/$(pr.num)|PR $(pr.num)> is missing a changelog entry." \
"$(Slack.team-daml-ci)"
fi
exit 1
fi
2021-10-07 11:55:38 +03:00
- job : compatiblity_target_protobuf
pool :
name : ubuntu_20_04
demands : assignment -equals default
steps :
- checkout : self
- bash : ci/check-protobuf-stability.sh --target
2021-01-04 22:45:30 +03:00
# required for collect_build_data
- job : release
condition : false
- job : notify_release_pr
condition : and(not(canceled()),
2021-05-12 15:22:38 +03:00
or(startsWith(variables['Build.SourceBranchName'], 'auto-release-pr-'),
startsWith(variables['System.PullRequest.SourceBranch'], 'auto-release-pr-')),
2021-01-04 22:45:30 +03:00
eq(dependencies.check_for_release.outputs['out.is_release'], 'true'))
dependsOn :
- git_sha
- collect_build_data
- check_for_release
2021-12-09 18:19:47 +03:00
- platform_independence_test
2021-01-04 22:45:30 +03:00
pool :
2021-01-27 19:38:34 +03:00
name : 'ubuntu_20_04'
2021-01-04 22:45:30 +03:00
demands : assignment -equals default
variables :
branch_sha : $[ dependencies.git_sha.outputs['out.branch'] ]
status : $[ dependencies.collect_build_data.result ]
is_release : $[ dependencies.check_for_release.outputs['out.is_release'] ]
steps :
- checkout : self
persistCredentials : true
- template : bash-lib.yml
parameters :
var_name : bash-lib
- bash : |
set -euo pipefail
source $(bash-lib)
AUTH="$(get_gh_auth_header)"
PR=$(curl -H "$AUTH" \
-H "Accept: application/vnd.github.groot-preview+json" \
-s -f \
"https://api.github.com/repos/digital-asset/daml/commits/$(git rev-parse HEAD)/pulls" \
| jq '.[0].number' \
|| echo "")
# Note: if we somehow fail to resolve the PR number from the GitHub
# API, there is still value in getting the notification on Slack, as
# we do have the build number and from there we can click through to
# the PR. Hence the `|| echo ""`.
2021-10-07 15:46:55 +03:00
PR_HANDLER=$(next_in_rotation_slack)
2021-01-04 22:45:30 +03:00
case "$(status)" in
Succeeded*)
msg="has succeeded! Next step is to approve & merge."
;;
Failed*)
msg="has failed. Please investigate."
;;
*)
# Should not be reached, but who knows?
msg="has completed with status $(status). See <https://github.com/digital-asset/daml/blob/main/release/RELEASE.md|RELEASE.md> for what to do next."
;;
esac
tell_slack "<@${PR_HANDLER}> <https://dev.azure.com/digitalasset/daml/_build/results?buildId=$(Build.BuildId)|Build $(Build.BuildId)> for release PR <https://github.com/digital-asset/daml/pull/${PR}|#${PR}> $msg"
- job : notify_user
2021-02-24 15:19:57 +03:00
# No Slack tokens on forks
condition : and(eq(variables['Build.Reason'], 'PullRequest'),
not(canceled()),
eq(variables['System.PullRequest.IsFork'], 'False'))
2021-01-04 22:45:30 +03:00
dependsOn :
- git_sha
- collect_build_data
- check_for_release
- check_changelog_entry
pool :
2021-01-27 19:38:34 +03:00
name : 'ubuntu_20_04'
2021-01-04 22:45:30 +03:00
demands : assignment -equals default
variables :
pr.num : $[ variables['System.PullRequest.PullRequestNumber'] ]
branch_sha : $[ dependencies.git_sha.outputs['out.branch'] ]
build_status : $[ dependencies.collect_build_data.result ]
changelog_status : $[ dependencies.check_changelog_entry.result ]
steps :
- template : bash-lib.yml
parameters :
var_name : bash-lib
- bash : |
set -euo pipefail
source $(bash-lib)
user=$(user_slack_handle $(branch_sha))
if [ "$user" != "" ]; then
tell_slack "<@${user}> <https://dev.azure.com/digitalasset/daml/_build/results?buildId=$(Build.BuildId)|Build $(Build.BuildId)> for <https://github.com/digital-asset/daml/pull/$(pr.num)|PR $(pr.num)> has completed with status $(build_status) (changelog: $(changelog_status))." \
"$(Slack.team-daml-ci)"
fi
2021-11-24 21:05:04 +03:00
- job : self_service_compat_test
pool :
vmImage : ubuntu-20.04
2021-11-26 12:26:21 +03:00
condition : eq(variables['Build.Reason'], 'PullRequest')
2021-11-24 21:05:04 +03:00
steps :
- checkout : self
- template : bash-lib.yml
parameters :
var_name : bash-lib
- bash : |
set -euo pipefail
source $(bash-lib)
COMMIT=$(git rev-parse HEAD^2)
REQUEST=$(git log -n1 --format="%(trailers:key=run-full-compat,valueonly)" $COMMIT)
if [ $REQUEST == true ]; then
2021-11-26 19:50:53 +03:00
# Unfortunately recovering the actual branch name is tricky
trigger_azure $AZURE_TOKEN digital-asset.daml-daily-compat --commit-id $COMMIT --branch not-main
2021-11-24 21:05:04 +03:00
fi
env :
AZURE_TOKEN : $(System.AccessToken)