diff --git a/.github/workflows/ci-test.yml b/.github/workflows/ci-test.yml index 890cf4c9..43278b6e 100644 --- a/.github/workflows/ci-test.yml +++ b/.github/workflows/ci-test.yml @@ -44,7 +44,7 @@ jobs: matrix: image: - registry.opensuse.org/opensuse/tumbleweed:latest - - registry.opensuse.org/opensuse/leap:15.5 + - registry.opensuse.org/opensuse/leap:15.6 container: ${{ matrix.image }} steps: @@ -61,8 +61,8 @@ jobs: run: zypper -n ar https://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_Tumbleweed/openSUSE:Tools.repo - name: add the openSUSE:Tools repository for Leap - if: ${{ contains(matrix.image, '15.5') }} - run: zypper -n ar https://download.opensuse.org/repositories/openSUSE:/Tools/15.5/openSUSE:Tools.repo + if: ${{ contains(matrix.image, '15.6') }} + run: zypper -n ar https://download.opensuse.org/repositories/openSUSE:/Tools/15.6/openSUSE:Tools.repo - name: install the build & runtime dependencies of openSUSE-release-tool run: | diff --git a/gocd/slfo-stagings.gocd.yaml b/gocd/slfo-stagings.gocd.yaml index 5eac64bf..bbea109c 100644 --- a/gocd/slfo-stagings.gocd.yaml +++ b/gocd/slfo-stagings.gocd.yaml @@ -59,13 +59,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done @@ -138,13 +143,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done @@ -217,13 +227,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done @@ -296,13 +311,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done @@ -375,13 +395,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done @@ -454,13 +479,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done @@ -533,13 +563,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done @@ -612,13 +647,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done @@ -691,13 +731,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done @@ -770,13 +815,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done @@ -849,13 +899,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done diff --git a/gocd/slfo-stagings.gocd.yaml.erb b/gocd/slfo-stagings.gocd.yaml.erb index 74b685e2..d4395e12 100644 --- a/gocd/slfo-stagings.gocd.yaml.erb +++ b/gocd/slfo-stagings.gocd.yaml.erb @@ -60,13 +60,18 @@ pipelines: fi - Build.product: + timeout: 180 resources: - staging-bot tasks: - script: |- osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build" export PYTHONPATH=$PWD/scripts - while ! ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; do + while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do + if [ ${ret} -eq 2 ]; then + echo "product repository not found. Project configuration issue?" >&2 + exit 1 + fi sleep 60 done diff --git a/gocd/verify-repo-built-successful.py b/gocd/verify-repo-built-successful.py index b00e9483..23fe92b7 100755 --- a/gocd/verify-repo-built-successful.py +++ b/gocd/verify-repo-built-successful.py @@ -14,9 +14,10 @@ from lxml import etree as ET if __name__ == '__main__': parser = argparse.ArgumentParser(description='Check if all packages built fine') parser.add_argument('--apiurl', '-A', type=str, help='API URL of OBS') - parser.add_argument('-p', '--project', type=str, help='Project to check') + parser.add_argument('-p', '--project', type=str, help='Project to check', + required=True) parser.add_argument('-r', '--repository', type=str, - help='Repository to check') + help='Repository to check', required=True) args = parser.parse_args() @@ -26,7 +27,14 @@ if __name__ == '__main__': logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) - # first check if repo is finished + # first check if repo is available + url = makeurl(apiurl, ['source', args.project, "_meta"]) + root = ET.parse(http_GET(url)).getroot() + if not root.xpath(f'repository[@name="{args.repository}"]'): + logger.error(f'Repository {args.repository} is not available in {args.project}') + sys.exit(2) + + # then check if repo is finished archs = target_archs(apiurl, args.project, args.repository) for arch in archs: url = makeurl(apiurl, ['build', args.project, args.repository, arch], {'view': 'status'})