)]}'
{"id":"openstack%2Fansible-collections-openstack~835131","triplet_id":"openstack%2Fansible-collections-openstack~master~I31f9607ab7e2e2ae8534429da7f5e5f235560c56","project":"openstack/ansible-collections-openstack","branch":"master","topic":"fix_parent_job_branch_matching-master","hashtags":[],"change_id":"I31f9607ab7e2e2ae8534429da7f5e5f235560c56","subject":"Fixed branch matching for parent jobs when on stable/1.0.0 branch","status":"MERGED","created":"2022-03-24 20:07:07.000000000","updated":"2022-03-25 08:45:49.000000000","submitted":"2022-03-25 08:45:49.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"835131-fix_parent_job_branch_matching-master","cherry_pick_of_change":835041,"cherry_pick_of_patch_set":2,"meta_rev_id":"31fb44db5ac6a2033491b8d4bb0967f90ff79363","_number":835131,"virtual_id_number":835131,"owner":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2022-03-25 08:45:48.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"all":[{"value":2,"date":"2022-03-25 07:46:45.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"all":[{"value":1,"date":"2022-03-25 07:46:45.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2022-03-24 21:48:08.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"39a2a1a79002bf41d90dc1dcf0b6be05e404c978","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"date":"2022-03-24 20:07:07.000000000","message":"Patch Set 1: Cherry Picked from branch stable/1.0.0.","accounts_in_message":[],"_revision_number":1},{"id":"a7f152a1608eb74a3d0859e849c596f69335b425","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-24 21:48:08.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tox-pep8 https://zuul.opendev.org/t/openstack/build/5fbc5d1c9adf4ff99607a357cfd8a70c : SUCCESS in 5m 36s\n- openstack-tox-linters-ansible-devel https://zuul.opendev.org/t/openstack/build/f4dc69e2c1f4446ebc37035e8741d16e : FAILURE in 8m 56s (non-voting)\n- openstack-tox-linters-ansible-2.12 https://zuul.opendev.org/t/openstack/build/53e516a695cb4f0987d8db57c3892e92 : SUCCESS in 8m 03s\n- openstack-tox-linters-ansible-2.9 https://zuul.opendev.org/t/openstack/build/38e1f13d40f24957ad3c4f3953cfd82e : SUCCESS in 7m 14s\n- ansible-collections-openstack-functional-devstack https://zuul.opendev.org/t/openstack/build/a59dbba0cf6441508386c1b0ee56cc39 : FAILURE in 34m 09s (non-voting)\n- ansible-collections-openstack-functional-devstack-releases https://zuul.opendev.org/t/openstack/build/e94ecc74ddb84b89a5345253fc1a6390 : SUCCESS in 1h 06m 50s\n- ansible-collections-openstack-functional-devstack-ansible-2.9 https://zuul.opendev.org/t/openstack/build/c17ab921e25f496684b55d8e1479e6db : FAILURE in 1h 00m 12s (non-voting)\n- ansible-collections-openstack-functional-devstack-ansible-2.12 https://zuul.opendev.org/t/openstack/build/24b37233310f419ab2939f6e72012979 : FAILURE in 43m 03s (non-voting)\n- ansible-collections-openstack-functional-devstack-ansible-devel https://zuul.opendev.org/t/openstack/build/1be274a344ce48a3a1e1496ac0b2846c : FAILURE in 52m 33s (non-voting)\n- ansible-collections-openstack-functional-devstack-octavia https://zuul.opendev.org/t/openstack/build/e0ca22c328fa49d2a390ae80fd504d71 : SUCCESS in 57m 34s\n- bifrost-collections-src https://zuul.opendev.org/t/openstack/build/2cbd1700ac3f4fabb811b966c9e75dd2 : SUCCESS in 37m 37s (non-voting)\n- bifrost-keystone-collections-src https://zuul.opendev.org/t/openstack/build/c2fe233656c8452fa4dde19e64f78fc7 : SUCCESS in 29m 02s (non-voting)\n- tripleo-ci-centos-9-standalone-osa https://zuul.opendev.org/t/openstack/build/751ffc7c0255433bb625970e20c0fb1c : SUCCESS in 1h 29m 22s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"d2eea15ab4f8d1dbcac72b58fde9854ea7c70080","author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"date":"2022-03-25 07:46:45.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"d2c083ab9b70fc6bb497963aec1d33b937f7f617","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-25 07:47:40.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"e5c14f403a2b70a396ee814384295861f4207395","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-25 08:45:48.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- tox-pep8 https://zuul.opendev.org/t/openstack/build/124df91612624be7b59c00c03718f4cc : SUCCESS in 4m 34s\n- openstack-tox-linters-ansible-2.12 https://zuul.opendev.org/t/openstack/build/db3c5744e8434676bda3019157d4dc7b : SUCCESS in 7m 53s\n- openstack-tox-linters-ansible-2.9 https://zuul.opendev.org/t/openstack/build/0ef2b064357448e18f4e234a72d4240e : SUCCESS in 6m 36s\n- ansible-collections-openstack-functional-devstack-releases https://zuul.opendev.org/t/openstack/build/4d5419361da942d3927f55604fe1c8ce : SUCCESS in 44m 27s\n- ansible-collections-openstack-functional-devstack-octavia https://zuul.opendev.org/t/openstack/build/4dbed094b10b45a98900c465ab5d9710 : SUCCESS in 57m 32s","accounts_in_message":[],"_revision_number":1},{"id":"31fb44db5ac6a2033491b8d4bb0967f90ff79363","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-25 08:45:49.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"e2ee2d0f5df3ff4daafb6dfc9936bff3f121dac5","revisions":{"e2ee2d0f5df3ff4daafb6dfc9936bff3f121dac5":{"kind":"REWORK","_number":1,"created":"2022-03-24 20:07:07.000000000","uploader":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"ref":"refs/changes/31/835131/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ansible-collections-openstack","ref":"refs/changes/31/835131/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/31/835131/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/31/835131/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/31/835131/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/31/835131/1"}}},"commit":{"parents":[{"commit":"771fb68f99c086ae8f8093272f600ca286be3f73","subject":"Run jobs for older OpenStack releases on stable/1.0.0 branch only","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ansible-collections-openstack/commit/771fb68f99c086ae8f8093272f600ca286be3f73"}]}],"author":{"name":"Jakob Meng","email":"code@jakobmeng.de","date":"2022-03-24 11:00:32.000000000","tz":60},"committer":{"name":"Jakob Meng","email":"code@jakobmeng.de","date":"2022-03-24 20:07:07.000000000","tz":0},"subject":"Fixed branch matching for parent jobs when on stable/1.0.0 branch","message":"Fixed branch matching for parent jobs when on stable/1.0.0 branch\n\nWhen a patch is submitted against a branch, Zuul CI will collect job\nvariants for each ci job and all its parent jobs. If both job.\\\noverride-checkout and job.required-projects.override-checkout\nattributes are not defined, then Zuul will for each (parent) job match\nthe current branch of the patch against all branches of the project in\nwhich the job is defined. If no such branch exist in a project, then no\njob variant matches and this job will be ignored [1].\nFor example, if a patch is submitted for our stable/1.0.0 branch, then\nZuul CI will try to match \u0027stable/1.0.0\u0027 against all branches in the\nprojects where job ansible-collections-openstack-functional-devstack\nand its parent job openstacksdk-functional-devstack are defined. The\nfirst is defined in openstack/ansible-collections-openstack/.zuul.yaml,\nso a match for stable/1.0.0 will be found. But openstacksdk-functional-\\\ndevstack is defined in openstack/openstacksdk/.zuul.yaml which has no\nbranch stable/1.0.0 defined. So Zuul will not schedule job ansible-\\\ncollections-openstack-functional-devstack at all.\n\nThe solution is twofold. First, the base jobs such as ansible-\\\ncollections-openstack-functional-devstack have to be changed to always\ncheckout existing branches in projects which define (parent) jobs.\nUsing job.override-checkout might have unintended sideeffects because\nit will checkout the specified branch for all required projects which\nalso includes the project which the patch was submitted for. Instead\nwe set job.required-projects.override-checkout for all projects which\ndefine parent jobs. For example, in ansible-collections-openstack-\\\nfunctional-devstack we set job.required-projects.override-checkout to\nmaster for opendev.org/openstack/devstack which defines parent job\nopenstack-functional-devstack.\n\nIn child jobs which (re)define job.override-checkout, we have to change\njob.required-projects.override-checkout for all projects which define\nparent jobs to the value of job.override-checkout. If we fail to update\njob.required-projects.override-checkout then Zuul will checkout the\nbranch which was defined in the base jobs because job.\\\nrequired-projects.override-checkout has higher precedence than job.\\\noverride-checkout.\n\nSetting attribute project.\u003cpipeline\u003e.debug to true helps with debugging\nthese job scheduling issues. \"If this is set to true, Zuul will include\ndebugging information in reports it makes about items in the pipeline.\nThis should not normally be set, but in situations were it is difficult\nto determine why Zuul did or did not run a certain job, the additional\ninformation this provides may help\" [2].\n\nNote, once job scheduling has been completed, Zuul will use a different\nalgorithm to checkout projects which are listed in job.\\\nrequired-projects [3][4]. It will fallback to a default branch if no\nmatching branch can be found in projects [5].\n\nRef.:\n[1] https://opendev.org/zuul/zuul/src/branch/master/zuul/model.py#L6996\n[2] https://zuul-ci.org/docs/zuul/latest/config/project.html#attr-project.%3Cpipeline%3E.debug\n[3] https://zuul-ci.org/docs/zuul/latest/job-content.html#git-repositories\n[4] https://opendev.org/zuul/zuul/src/branch/master/zuul/executor/server.py#L1648\n[5] https://zuul-ci.org/docs/zuul/latest/config/project.html#attr-project.default-branch\n\nChange-Id: I31f9607ab7e2e2ae8534429da7f5e5f235560c56\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ansible-collections-openstack/commit/e2ee2d0f5df3ff4daafb6dfc9936bff3f121dac5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ansible-collections-openstack/commit/e2ee2d0f5df3ff4daafb6dfc9936bff3f121dac5"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"status":"CLOSED","labels":[{"label":"Verified","status":"OK","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"}},{"label":"Workflow","status":"OK","applied_by":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"}}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Workflow\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}}]}
