#!/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