)]}'
{"doc/source/admin/examples/zuul-config/zuul.d/github-reference-pipelines.yaml":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"d99d503d5d6c9391e18d02c47c5fc971aa3afe8a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            type: approved"},{"line_number":45,"context_line":"        # Require label"},{"line_number":46,"context_line":"        label: mergeit"},{"line_number":47,"context_line":"        status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""},{"line_number":48,"context_line":"        open: True"},{"line_number":49,"context_line":"        current-patchset: True"},{"line_number":50,"context_line":"    trigger:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_7b6555e0","line":47,"updated":"2019-08-20 13:57:22.000000000","message":"This also has clean check, why don\u0027t we remove it (and add supercedes).","commit_id":"89eece2e01fe2ca8f8c0fba6e5afc76818f5dd16"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"28030306d48d4413ada9a47b838b026045e2c502","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            type: approved"},{"line_number":45,"context_line":"        # Require label"},{"line_number":46,"context_line":"        label: mergeit"},{"line_number":47,"context_line":"        status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""},{"line_number":48,"context_line":"        open: True"},{"line_number":49,"context_line":"        current-patchset: True"},{"line_number":50,"context_line":"    trigger:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_0e27c8c9","line":47,"in_reply_to":"7faddb67_7b6555e0","updated":"2019-08-27 12:57:24.000000000","message":"Done","commit_id":"89eece2e01fe2ca8f8c0fba6e5afc76818f5dd16"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e599adf01f624295df6c71ff96364d271ead50c5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    name: check"},{"line_number":3,"context_line":"    description: |"},{"line_number":4,"context_line":"      Newly uploaded patchsets enter this pipeline to receive an"},{"line_number":5,"context_line":"      initial +/-1 Verified vote."},{"line_number":6,"context_line":"    manager: independent"},{"line_number":7,"context_line":"    trigger:"},{"line_number":8,"context_line":"      github.com:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_0bafaf7d","line":5,"updated":"2019-08-27 19:37:41.000000000","message":"This terminology doesn\u0027t really match the github workflow. Github doesn\u0027t have +- Verified votes but rather \u0027\u003cpipeline\u003e status\u0027.","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"b913fe007d86424019547766042ab27051d7a9c6","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    name: check"},{"line_number":3,"context_line":"    description: |"},{"line_number":4,"context_line":"      Newly uploaded patchsets enter this pipeline to receive an"},{"line_number":5,"context_line":"      initial +/-1 Verified vote."},{"line_number":6,"context_line":"    manager: independent"},{"line_number":7,"context_line":"    trigger:"},{"line_number":8,"context_line":"      github.com:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_34466ec2","line":5,"in_reply_to":"7faddb67_0bafaf7d","updated":"2019-08-29 10:27:11.000000000","message":"Done","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e599adf01f624295df6c71ff96364d271ead50c5","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    description: |"},{"line_number":4,"context_line":"      Newly uploaded patchsets enter this pipeline to receive an"},{"line_number":5,"context_line":"      initial +/-1 Verified vote."},{"line_number":6,"context_line":"    manager: independent"},{"line_number":7,"context_line":"    trigger:"},{"line_number":8,"context_line":"      github.com:"},{"line_number":9,"context_line":"        - event: pull_request"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_2bb2abe6","line":6,"updated":"2019-08-27 19:37:41.000000000","message":"Not sure if it\u0027s really needed but we typically require that the pr is open here.","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"b913fe007d86424019547766042ab27051d7a9c6","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    description: |"},{"line_number":4,"context_line":"      Newly uploaded patchsets enter this pipeline to receive an"},{"line_number":5,"context_line":"      initial +/-1 Verified vote."},{"line_number":6,"context_line":"    manager: independent"},{"line_number":7,"context_line":"    trigger:"},{"line_number":8,"context_line":"      github.com:"},{"line_number":9,"context_line":"        - event: pull_request"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_0988fb1f","line":6,"in_reply_to":"7faddb67_2bb2abe6","updated":"2019-08-29 10:27:11.000000000","message":"Done","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"b913fe007d86424019547766042ab27051d7a9c6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    precedence: high"},{"line_number":39,"context_line":"    supercedes: check"},{"line_number":40,"context_line":"    require:"},{"line_number":41,"context_line":"      github.com:"},{"line_number":42,"context_line":"        review:"},{"line_number":43,"context_line":"          # Require an approval from user with write access (e.g. core-reviewer)"},{"line_number":44,"context_line":"          - permission: write"},{"line_number":45,"context_line":"            type: approved"},{"line_number":46,"context_line":"        # Require label"},{"line_number":47,"context_line":"        label: mergeit"},{"line_number":48,"context_line":"        status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_e9b6bff9","line":45,"range":{"start_line":41,"start_character":0,"end_line":45,"end_character":26},"updated":"2019-08-29 10:27:11.000000000","message":"@Tobias you said Zuul checks branch protection rules, then is this requirement really needed ? Within the branch protection rules \"Require pull request reviews before merging\" can be set and configured as well. I haven\u0027t tested btw, what do you think ?","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"1ce24e6504cff6ee4c36b63393751b51bd00e04c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    precedence: high"},{"line_number":39,"context_line":"    supercedes: check"},{"line_number":40,"context_line":"    require:"},{"line_number":41,"context_line":"      github.com:"},{"line_number":42,"context_line":"        review:"},{"line_number":43,"context_line":"          # Require an approval from user with write access (e.g. core-reviewer)"},{"line_number":44,"context_line":"          - permission: write"},{"line_number":45,"context_line":"            type: approved"},{"line_number":46,"context_line":"        # Require label"},{"line_number":47,"context_line":"        label: mergeit"},{"line_number":48,"context_line":"        status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_8f1dcb78","line":45,"range":{"start_line":41,"start_character":0,"end_line":45,"end_character":26},"in_reply_to":"7faddb67_e9b6bff9","updated":"2019-08-29 11:40:28.000000000","message":"It only checks the status part of branch protection rules, but not (yet) the review part. See https://review.opendev.org/644557 which is in review for the code review part.","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"b9374320fbe3af8740f7b4a08b711eea25aad33f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"          - permission: write"},{"line_number":45,"context_line":"            type: approved"},{"line_number":46,"context_line":"        # Require label"},{"line_number":47,"context_line":"        label: mergeit"},{"line_number":48,"context_line":"        status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""},{"line_number":49,"context_line":"        open: True"},{"line_number":50,"context_line":"        current-patchset: True"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_96bc2607","line":47,"updated":"2019-08-27 20:16:49.000000000","message":"I\u0027d like to see us use \u0027gate\u0027 here, goes nicely with the idea of zuul.","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"b913fe007d86424019547766042ab27051d7a9c6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"          - permission: write"},{"line_number":45,"context_line":"            type: approved"},{"line_number":46,"context_line":"        # Require label"},{"line_number":47,"context_line":"        label: mergeit"},{"line_number":48,"context_line":"        status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""},{"line_number":49,"context_line":"        open: True"},{"line_number":50,"context_line":"        current-patchset: True"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_a98d2736","line":47,"in_reply_to":"7faddb67_96bc2607","updated":"2019-08-29 10:27:11.000000000","message":"Done","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e599adf01f624295df6c71ff96364d271ead50c5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            type: approved"},{"line_number":46,"context_line":"        # Require label"},{"line_number":47,"context_line":"        label: mergeit"},{"line_number":48,"context_line":"        status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""},{"line_number":49,"context_line":"        open: True"},{"line_number":50,"context_line":"        current-patchset: True"},{"line_number":51,"context_line":"    trigger:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_cbc8b757","line":48,"updated":"2019-08-27 19:37:41.000000000","message":"Status requirements shouldn\u0027t generally be necessary as zuul evaluates the status branch protection rules.","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"1ce24e6504cff6ee4c36b63393751b51bd00e04c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            type: approved"},{"line_number":46,"context_line":"        # Require label"},{"line_number":47,"context_line":"        label: mergeit"},{"line_number":48,"context_line":"        status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""},{"line_number":49,"context_line":"        open: True"},{"line_number":50,"context_line":"        current-patchset: True"},{"line_number":51,"context_line":"    trigger:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_af11a75f","line":48,"in_reply_to":"7faddb67_a91a0715","updated":"2019-08-29 11:40:28.000000000","message":"Yes, imho using branch protection for this should be the best practice we should embrace.","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"b913fe007d86424019547766042ab27051d7a9c6","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            type: approved"},{"line_number":46,"context_line":"        # Require label"},{"line_number":47,"context_line":"        label: mergeit"},{"line_number":48,"context_line":"        status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""},{"line_number":49,"context_line":"        open: True"},{"line_number":50,"context_line":"        current-patchset: True"},{"line_number":51,"context_line":"    trigger:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_a91a0715","line":48,"in_reply_to":"7faddb67_cbc8b757","updated":"2019-08-29 10:27:11.000000000","message":"Alright but it means that branch protection must be set to true (zuul default is false) and \"Require status checks to pass before merging\" is checked. Furthermore \"\u003ctenant\u003e/check\" status must be checked in the list. If not if the pr got the \u0027gate\u0027 tag and an approval it will enter the gate pipeline whatever the status of the check pipeline. I\u0027m fine with that but we should explain it.","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e599adf01f624295df6c71ff96364d271ead50c5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"          state: request_changes"},{"line_number":65,"context_line":"        - event: pull_request"},{"line_number":66,"context_line":"          action: status"},{"line_number":67,"context_line":"          status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""},{"line_number":68,"context_line":"        - event: pull_request"},{"line_number":69,"context_line":"          action: labeled"},{"line_number":70,"context_line":"          label:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_ebc33338","line":67,"updated":"2019-08-27 19:37:41.000000000","message":"I found it useful to react on all status events. This way it\u0027s very easy to combine zuul with other github apps like WIP bot:\n\n  - event: pull_request\n    action: status\n    status: .*:success\n\nConfiguring it this way makes zuul also reacting on other status bots (which might be required by the branch protection). Each positive status will trigger then the pipeline which then checks if all required status are fulfilled now (if not the change won\u0027t enter the gate anyway).","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"b913fe007d86424019547766042ab27051d7a9c6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"          state: request_changes"},{"line_number":65,"context_line":"        - event: pull_request"},{"line_number":66,"context_line":"          action: status"},{"line_number":67,"context_line":"          status: \"my-zuul-app\\\\[bot\\\\]:my-tenant/check:success\""},{"line_number":68,"context_line":"        - event: pull_request"},{"line_number":69,"context_line":"          action: labeled"},{"line_number":70,"context_line":"          label:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_8992ab57","line":67,"in_reply_to":"7faddb67_ebc33338","updated":"2019-08-29 10:27:11.000000000","message":"Alright it makes sense.","commit_id":"939103c501530e5d3772aab579f049de7f3e24b4"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"2b4c7cb27184f7e1a609efb125bab5b8f6664262","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- pipeline:"},{"line_number":2,"context_line":"    name: check"},{"line_number":3,"context_line":"    description: |"},{"line_number":4,"context_line":"      Newly uploaded patchsets enter this pipeline to receive an"},{"line_number":5,"context_line":"      initial check status."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_9b7bca79","line":2,"updated":"2019-08-29 16:05:13.000000000","message":"The reason we cannot unlabel here, is because we only want to unlabel if pull_request is changed. With below, zuul would unlabel \u0027gate\u0027 all all the triggers below like recheck / open / close.\n\nThe only way to handle it today I found, is a new pipeline. This is based on what spamaps is doing too.","commit_id":"d3763dbb0a20bcdc44b60318e69d8ccedc34cf0b"}]}
