diff --git a/obs-packaging/scripts/obs-docker.sh b/obs-packaging/scripts/obs-docker.sh index 58268e5dc5..0ad2b30f0e 100755 --- a/obs-packaging/scripts/obs-docker.sh +++ b/obs-packaging/scripts/obs-docker.sh @@ -27,7 +27,7 @@ user = ${OBS_USER} pass = ${OBS_PASS} eom fi - ) >> /dev/null + ) >>/dev/null if [ ! -e "${OSCRC}" ]; then echo "${OSCRC}, please do 'export OBS_USER=your_user ; export OBS_PASS=your_pass' to configure osc for first time." exit 1 @@ -56,6 +56,7 @@ docker_run() { --env GO_ARCH="${GO_ARCH}" \ --env PUSH="${PUSH:-}" \ --env DEBUG="${DEBUG:-}" \ + --env OBS_PROJECT="${OBS_PROJECT:-}" \ --env OBS_SUBPROJECT="${OBS_SUBPROJECT:-}" \ -v "${cache_dir}":/var/tmp/osbuild-packagecache/ \ -v "${_obs_docker_packaging_repo_dir}":"${_obs_docker_packaging_repo_dir}" \ diff --git a/obs-packaging/wait-obs.sh b/obs-packaging/wait-obs.sh index 3ba5a2cbbe..cf8501d67b 100755 --- a/obs-packaging/wait-obs.sh +++ b/obs-packaging/wait-obs.sh @@ -11,6 +11,10 @@ set -o errtrace script_name="$(basename "${BASH_SOURCE[0]}")" +OBS_PROJECT=${OBS_PROJECT:-"home:katacontainers:"} +# Project to wait for +project="" + handle_error() { local exit_code="${?}" local line_number="${1:-}" @@ -31,12 +35,33 @@ run_in_docker() { fi } - # Check all project has finshed the build wait_finish_building() { - while osc pr -q | grep '(building)'; do sleep 5; done - # just in case something goes wrong - while osc pr -q | grep '(building)'; do sleep 5; done + local out + while true; do + sleep 10 + out=$(osc api "/build/${project}/_result") + if echo "${out}" | grep '
failed
'; then + echo "Project ${project} has failed packages" + osc pr + exit 1 + fi + if echo "${out}" | grep 'code="blocked"'; then + echo "Project ${project} has blocked packages, waiting" + continue + fi + if echo "${out}" | grep 'code="excluded"'; then + echo "Project ${project} has excluded packages, waiting" + continue + fi + if echo "${out}" | grep 'state="building"'; then + echo "Project ${project} is still building, waiting" + continue + fi + echo "No jobs with building status were found" + echo "${out}" + break + done } # obs distro final status is 'published' @@ -63,10 +88,9 @@ wait_published() { done } -check_failed(){ - failed_query=$(osc pr -c -s F) - regex=".*failed.*" - if [[ ${failed_query} =~ ${regex} ]];then +check_failed() { + failed_query=$(osc pr -c -s F) + if [[ ${failed_query} =~ failed ]]; then echo "ERROR: Build failed" osc pr -V -s 'F' exit 1 @@ -92,22 +116,25 @@ EOT } main() { - run_in_docker $@ + run_in_docker $@ local no_wait_publish="false" case "${1:-}" in - "-h"|"--help") - usage "Help" 0 - ;; - --no-wait-publish) - no_wait_publish="true" - shift - ;; - -*) - usage "Invalid option: ${1:-}" 1 - ;; + "-h" | "--help") + usage "Help" 0 + ;; + --no-wait-publish) + no_wait_publish="true" + shift + ;; + -*) + usage "Invalid option: ${1:-}" 1 + ;; esac - OBS_SUBPROJECT="${OBS_SUBPROJECT:-releases:x86_64:alpha}" - project="home:katacontainers:${OBS_SUBPROJECT}" + project=${1:-} + if [ "${project}" == "" ]; then + OBS_SUBPROJECT="${OBS_SUBPROJECT:-}" + project="${OBS_PROJECT}${OBS_SUBPROJECT}" + fi echo "Checkout: ${project}" osc co "$project" || true cd "$project" || exit 1 @@ -120,7 +147,7 @@ main() { check_failed echo "OK - build did not fail" - if [ "${no_wait_publish}" == "true" ];then + if [ "${no_wait_publish}" == "true" ]; then echo " Requested not wait for publish" exit fi