Newer
Older
$0 --org-url {org_url} --proj-name {proj_name} [--repo-name {repo_name} | --repo-id {repo_id}] [--branch {branch}] [--pipeline-name {pipeline_name} | --build-definition-id {build_definition_id}]
$0 --org-url https://dev.azure.com/azvse --proj-name aztest --repo-name aztest --branch bensl/tmpbuild/1201 --pipeline-name Overlake-Build-PullRequest
$0 --org-url https://dev.azure.com/azvse --proj-name aztest --repo-id a4822210-511f-427f-a36d-26a14c29cc89 --branch bensl/tmpbuild/1201 --build-definition-id 2
get_repo_id() {
az repos list \
--org "${org_url}" \
--query '[].{name:name, id:id}' \
--proj "${proj_name}" | \
jq -r ".[] | select(.name == \"${repo_name}\") | .id"
}
# https://unix.stackexchange.com/a/383166
# export function to subshells for bash
typeset -fx get_repo_id
get_build_definition_id() {
az pipelines build definition show \
--name "${pipeline_name}" \
--org "${org_url}" \
--proj "${proj_name}" \
--query 'id'
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
typeset -fx get_build_definition_id
while [[ $# -gt 0 ]]; do
case "$1" in
--org-url)
org_url=$2
shift 2
;;
--proj-name)
proj_name=$2
shift 2
;;
--repo-name)
repo_name=$2
shift 2
;;
--repo-id)
repo_id=$2
shift 2
;;
--branch)
branch=$2
shift 2
;;
--pipeline-name)
pipeline_name=$2
shift 2
;;
--build-definition-id)
build_definition_id=$2
shift 2
;;
*)
show_usage
exit 1
;;
esac
done
if [[ ! ${org_url} || ! ${proj_name} || (! ${repo_name} && ! ${repo_id}) || (! ${pipeline_name} && ! ${build_definition_id}) ]]; then
show_usage
exit 1
fi
if [[ ! "${pat}" ]]; then
echo "Please set 'pat' as your personalAccessToken"
exit 2
fi
if [[ ! ${repo_id} && ${repo_name} ]]; then
repo_id=$(get_repo_id)
echo repo_id: ${repo_id}
fi
if [[ ! ${build_definition_id} && ${pipeline_name} ]]; then
build_definition_id=$(get_build_definition_id)
echo build_definition_id: ${build_definition_id}
fi
print_policy_list() {
az repos policy list \
--branch ${branch} \
--repository-id "${repo_id}" \
--org "${org_url}" \
--project "${proj_name}"
setup_build_policy() {
curl -X POST "${org_url}/${proj_name}/_apis/policy/configurations?api-version=7.2-preview.1" \
-H "Authorization: Basic $(echo -n :${pat} | base64)" \
-H 'Content-Type: application/json' \
-d '
{
"isEnabled": true,
"type": {
"id": "fa4e907d-c16b-4a4c-9dfa-4906e5d171dd"
},
"settings": {
"allowDownvotes": false,
"blockLastPusherVote": true,
"creatorVoteCounts": false,
"minimumApproverCount": 2,
"requireVoteOnEachIteration": true,
"requireVoteOnLastIteration": true,
"resetOnSourcePush": false,
"resetRejectionsOnSourcePush": false,
"scope": [
{
"repositoryId": "'${repo_id}'",
"refName": "refs/heads/'${branch}'",
"matchKind": "exact"
}
]
setup_build_validation() {
az repos policy build create \
--blocking true \
--branch ${branch} \
--build-definition-id ${build_definition_id} \
--display-name "" \
--enabled true \
--manual-queue-only false \
--queue-on-source-update-only true \
--valid-duration 720 \
--repository-id ${repo_id} \
--org ${org_url} \
--project ${proj_name}