Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env bash
if [ $# != 4 ]
then
cat <<-EOF
Usage:
pat=... $0 {org_url} {proj_name} {repo_name} {branch}
Examples:
pat=... $0 https://dev.azure.com/azvse aztest aztest bensl/tmpbuild/1201
EOF
exit 1
fi
if ! [[ ${pat} ]]
then
echo please set pat as your personalAccessToken
exit 2
fi
export org_url=$1
export proj_name=$2
export repo_name=$3
export branch=$4
function get_repo_id {
az repos list --org "${org_url}" \
--proj aztest | \
jq -r ".[] | select(.name == \"${repo_name}\") | .id"
}
# https://unix.stackexchange.com/a/383166
# export function to subshells for bash
typeset -fx get_repo_id
function print_policy_list() {
az repos policy list \
--branch ${branch} \
--repository-id "${repo_id}" \
--org "${org_url}" \
--project "${proj_name}"
}
function 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,
"isBlocking": false,
"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"
}
]
}
}'
}
function setup_build_validation() {
# TODO: get build definition id
build_definition_id=2
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} \
}
export repo_id=$( get_repo_id )
print_policy_list