diff --git a/populate-local.sh b/populate-local.sh index 851a305..c7ea488 100755 --- a/populate-local.sh +++ b/populate-local.sh @@ -4,27 +4,30 @@ remote_instance=https://builds.robur.coop local_user_pass=test:test local_instance="http://${local_user_pass}@localhost:3000" -limit=100 +global_limit=100 +per_job_limit=3 # Limit to 3 builds per job curl_json () { curl --silent --fail --location --header "Accept: application/json" "$@" } curl_json "${remote_instance}/" | jq -r .jobs[] | { - while read -r job_name; do - curl_json "${remote_instance}/job/${job_name}" | jq -r .builds[].uuid | { - while read -r build_uuid; do - if [ "$limit" -eq 0 ]; then - break 2; - fi - dest=$(mktemp "builder-${build_uuid}.XXXXXXXXXX") - curl --silent --fail "${remote_instance}/job/${job_name}/build/${build_uuid}/exec" > "$dest" && { - echo "Uploading $job_name build $build_uuid" - curl --data-binary "@${dest}" "${local_instance}/upload" - } - rm -f "$dest" - limit=$((limit - 1)) - done - } - done + while read -r job_name; do + build_count=0 + curl_json "${remote_instance}/job/${job_name}" | jq -r .builds[].uuid | { + while read -r build_uuid; do + if [ "$global_limit" -eq 0 ] || [ "$build_count" -ge "$per_job_limit" ]; then + break 2 + fi + dest=$(mktemp "builder-${build_uuid}.XXXXXXXXXX") + curl --silent --fail "${remote_instance}/job/${job_name}/build/${build_uuid}/exec" > "$dest" && { + echo "Uploading $job_name build $build_uuid" + curl --data-binary "@${dest}" "${local_instance}/upload" + } + rm -f "$dest" + global_limit=$((global_limit - 1)) + build_count=$((build_count + 1)) + done + } + done }