mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 09:17:43 +03:00
9e1e42d27c
This should hopefully get CI working again. There are two changes in here: 1. We can no longer change our patched Bazel. I didn’t switch away from the current patched version for now (we upload it to gcp bucket so it still works fine even if we cannot build it) but if we upgrade, we need to go to an unpatched version for now. 2. We need to get `az` from dev-env. I tested the self service compat job stuff and it works fine with this but there is a chance other parts don’t. changelog_begin changelog_end
199 lines
6.8 KiB
YAML
199 lines
6.8 KiB
YAML
# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
trigger: none
|
|
|
|
pr:
|
|
autoCancel: true # cancel previous builds on push
|
|
branches:
|
|
include:
|
|
- main
|
|
- release/*
|
|
|
|
jobs:
|
|
- template: build.yml
|
|
- template: check-for-release-job.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:
|
|
name: 'ubuntu_20_04'
|
|
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:
|
|
name: 'ubuntu_20_04'
|
|
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
|
|
|
|
- job: compatiblity_target_protobuf
|
|
pool:
|
|
name: ubuntu_20_04
|
|
demands: assignment -equals default
|
|
steps:
|
|
- checkout: self
|
|
- bash: ci/check-protobuf-stability.sh --target
|
|
|
|
# required for collect_build_data
|
|
- job: release
|
|
condition: false
|
|
|
|
- job: notify_release_pr
|
|
condition: and(not(canceled()),
|
|
or(startsWith(variables['Build.SourceBranchName'], 'auto-release-pr-'),
|
|
startsWith(variables['System.PullRequest.SourceBranch'], 'auto-release-pr-')),
|
|
eq(dependencies.check_for_release.outputs['out.is_release'], 'true'))
|
|
dependsOn:
|
|
- git_sha
|
|
- collect_build_data
|
|
- check_for_release
|
|
- platform_independence_test
|
|
pool:
|
|
name: 'ubuntu_20_04'
|
|
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 ""`.
|
|
PR_HANDLER=$(next_in_rotation_slack)
|
|
|
|
case "$(status)" in
|
|
Succeeded*)
|
|
msg="has succeeded! Next step is to approve & merge. This is probably a good time to start your Windows testing machine."
|
|
;;
|
|
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
|
|
# No Slack tokens on forks
|
|
condition: and(eq(variables['Build.Reason'], 'PullRequest'),
|
|
not(canceled()),
|
|
eq(variables['System.PullRequest.IsFork'], 'False'))
|
|
dependsOn:
|
|
- git_sha
|
|
- collect_build_data
|
|
- check_for_release
|
|
- check_changelog_entry
|
|
pool:
|
|
name: 'ubuntu_20_04'
|
|
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
|
|
|
|
- job: self_service_compat_test
|
|
pool:
|
|
name: 'ubuntu_20_04'
|
|
demands: assignment -equals default
|
|
condition: eq(variables['Build.Reason'], 'PullRequest')
|
|
steps:
|
|
- checkout: self
|
|
- template: bash-lib.yml
|
|
parameters:
|
|
var_name: bash-lib
|
|
- bash: |
|
|
set -euo pipefail
|
|
eval "$(./dev-env/bin/dade-assist)"
|
|
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
|
|
# Unfortunately recovering the actual branch name is tricky
|
|
trigger_azure $AZURE_TOKEN digital-asset.daml-daily-compat --commit-id $COMMIT --branch not-main
|
|
fi
|
|
env:
|
|
AZURE_TOKEN: $(System.AccessToken)
|