)]}'
{".zuul.yaml":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"3b74845c3e92c933541f5b479e9d8348d726a8f7","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    run: playbooks/quick-start/run.yaml"},{"line_number":115,"context_line":"    post-run: playbooks/tutorial-common/post.yaml"},{"line_number":116,"context_line":"    required-projects:"},{"line_number":117,"context_line":"      - zuul/zuul"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"# Image building jobs"},{"line_number":120,"context_line":"- secret:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ff570b3c_07625cae","line":117,"updated":"2020-06-03 17:13:50.000000000","message":"If you\u0027re just renaming the job, you can do it in this one change.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c6eae575cf98e03d743bbd3f703870c8824f548d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    run: playbooks/quick-start/run.yaml"},{"line_number":115,"context_line":"    post-run: playbooks/tutorial-common/post.yaml"},{"line_number":116,"context_line":"    required-projects:"},{"line_number":117,"context_line":"      - zuul/zuul"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"# Image building jobs"},{"line_number":120,"context_line":"- secret:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ff570b3c_a741f0a8","line":117,"in_reply_to":"ff570b3c_07625cae","updated":"2020-06-03 17:54:27.000000000","message":"I tried to in the previous all-in-one change I abandonned: patchset 3: https://review.opendev.org/#/c/728194/3\nbut nodepool won\u0027t let me!.\n\nI was told on #zuul that I have to so a add-switch-remove scheme.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"f5b9f2671c40b6444c6bc9338e32da8f7c7318d4","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    run: playbooks/quick-start/run.yaml"},{"line_number":115,"context_line":"    post-run: playbooks/tutorial-common/post.yaml"},{"line_number":116,"context_line":"    required-projects:"},{"line_number":117,"context_line":"      - zuul/zuul"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"# Image building jobs"},{"line_number":120,"context_line":"- secret:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ff570b3c_9cd242ff","line":117,"in_reply_to":"ff570b3c_a741f0a8","updated":"2020-06-03 18:36:34.000000000","message":"change for nodepool: https://review.opendev.org/#/c/728262/","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0c1408da14eb0e2e6596535fc74a8c7265717d83","unresolved":false,"context_lines":[{"line_number":127,"context_line":"      - zuul/zuul"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"- job:"},{"line_number":130,"context_line":"    name: zuul-tutorial-quick-start"},{"line_number":131,"context_line":"    parent: opendev-buildset-registry-consumer"},{"line_number":132,"context_line":"    description: Run the commands in the Zuul tutorial quick-start documentation."},{"line_number":133,"context_line":"    pre-run: playbooks/tutorial/pre.yaml"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_2416ada9","line":130,"updated":"2020-06-22 22:41:31.000000000","message":"This new job is identical to the job above. Do we need both or can we remove the old job and basically just give it this new \u0027tutorial\u0027 name?","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c199644d0238f744139cb17cda7ab1a6b7ef6cde","unresolved":false,"context_lines":[{"line_number":127,"context_line":"      - zuul/zuul"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"- job:"},{"line_number":130,"context_line":"    name: zuul-tutorial-quick-start"},{"line_number":131,"context_line":"    parent: opendev-buildset-registry-consumer"},{"line_number":132,"context_line":"    description: Run the commands in the Zuul tutorial quick-start documentation."},{"line_number":133,"context_line":"    pre-run: playbooks/tutorial/pre.yaml"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_77db357b","line":130,"in_reply_to":"bf51134e_2416ada9","updated":"2020-06-22 23:49:23.000000000","message":"Yes it will be just to rename quick-start. I did try to rename it but as it\u0027s used by nodepool it can\u0027t be done directly (see error on patch 3 https://review.opendev.org/#/c/728194/3).\nAt least that\u0027s what I was told on #zuul,  a add-switch-remove pattern is needed.\nchange on nodepool: https://review.opendev.org/#/c/728262/","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f0d5098722e4ed06c6e40c99103e99b01383b4d1","unresolved":false,"context_lines":[{"line_number":127,"context_line":"      - zuul/zuul"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"- job:"},{"line_number":130,"context_line":"    name: zuul-tutorial-quick-start"},{"line_number":131,"context_line":"    parent: opendev-buildset-registry-consumer"},{"line_number":132,"context_line":"    description: Run the commands in the Zuul tutorial quick-start documentation."},{"line_number":133,"context_line":"    pre-run: playbooks/tutorial/pre.yaml"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_79df9f39","line":130,"in_reply_to":"bf51134e_77db357b","updated":"2020-06-23 15:01:12.000000000","message":"It may be simpler to do the job rename in a follow on to the stack to separate these concerns then? Mostly these are observations around how we can make it easier to review large changes like this without having what appears to be unnecessary change included in the diff.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"}],"/COMMIT_MSG":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0c1408da14eb0e2e6596535fc74a8c7265717d83","unresolved":false,"context_lines":[{"line_number":15,"context_line":"the latest version available, for gerrit it\u0027s the 3.0.4"},{"line_number":16,"context_line":"and even if it points to the latest avaible stable version it can be"},{"line_number":17,"context_line":"buggy. I had the same issue as [1]."},{"line_number":18,"context_line":"So let\u0027s use explicit known version that are working"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"from_json | to_json | from_json | json_query\" in test is due to a bug"},{"line_number":21,"context_line":"in ansible [2]"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"bf51134e_448641dd","line":18,"updated":"2020-06-22 22:41:31.000000000","message":"The problem with this is we\u0027ll need to make sure we\u0027re keeping it up to date. The nice thing about relying on latest is we find out it is broken quickly and can fix it.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c199644d0238f744139cb17cda7ab1a6b7ef6cde","unresolved":false,"context_lines":[{"line_number":15,"context_line":"the latest version available, for gerrit it\u0027s the 3.0.4"},{"line_number":16,"context_line":"and even if it points to the latest avaible stable version it can be"},{"line_number":17,"context_line":"buggy. I had the same issue as [1]."},{"line_number":18,"context_line":"So let\u0027s use explicit known version that are working"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"from_json | to_json | from_json | json_query\" in test is due to a bug"},{"line_number":21,"context_line":"in ansible [2]"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"bf51134e_f7ef451b","line":18,"in_reply_to":"bf51134e_448641dd","updated":"2020-06-22 23:49:23.000000000","message":"Gerrit \"latest\" now points to 3.2.2 which does work, but mariadb latest which is 10.4.13 still crashes. I do think it\u0027s best to use fixed known working version and have a reminder somewhere to try new versions.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"}],"doc/source/examples/docker-compose.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0c1408da14eb0e2e6596535fc74a8c7265717d83","unresolved":false,"context_lines":[{"line_number":6,"context_line":"  gerrit:"},{"line_number":7,"context_line":"    image: gerritcodereview/gerrit:3.2.2"},{"line_number":8,"context_line":"    environment:"},{"line_number":9,"context_line":"      - CANONICAL_WEB_URL\u003dhttp://localhost:8080"},{"line_number":10,"context_line":"    ports:"},{"line_number":11,"context_line":"      - \"8080:8080\""},{"line_number":12,"context_line":"      - \"29418:29418\""}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_84269914","line":9,"updated":"2020-06-22 22:41:31.000000000","message":"Being consistent with the settings overrides below would be nice. Makes it clearer where we are doing those changes.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"99c03847f26a56bd05cd192dd4e29bc82f7b6cca","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    image: gerritcodereview/gerrit"},{"line_number":8,"context_line":"    ports:"},{"line_number":9,"context_line":"      - \"8080:8080\""},{"line_number":10,"context_line":"      - \"29418:29418\""},{"line_number":11,"context_line":"    entrypoint: |"},{"line_number":12,"context_line":"      /bin/sh -c \u0027\\"},{"line_number":13,"context_line":"        /entrypoint.sh init"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"9f560f44_4c3e8829","line":10,"updated":"2020-08-19 23:32:23.000000000","message":"Why are you making these changes?","commit_id":"9b14492dad2579ce1f75fe91ad486c743d899782"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c816fb50428383ff4e5f85155d388da6a3075550","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    image: gerritcodereview/gerrit"},{"line_number":8,"context_line":"    ports:"},{"line_number":9,"context_line":"      - \"8080:8080\""},{"line_number":10,"context_line":"      - \"29418:29418\""},{"line_number":11,"context_line":"    entrypoint: |"},{"line_number":12,"context_line":"      /bin/sh -c \u0027\\"},{"line_number":13,"context_line":"        /entrypoint.sh init"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"9f560f44_5b68f885","line":10,"in_reply_to":"9f560f44_4c3e8829","updated":"2020-08-20 09:28:23.000000000","message":"Some old parameters are useless:\n- Default UI is POLYGERRIT [1]\n- Gerrit 3.X database is NoteDB [2]\n\nnice feature to have:\n- Git protocol v2 [3]\n\nto correctly execute the container with expected argument \"command\" shall be modified to \"entrypoint\" otherwise it can\u0027t work. Gerrit docker image is not built to allow passing argument using \"command\"\n\n[1] https://gitenterprise.me/2019/05/20/gerrit-v3-0-is-here/ \"Then in 2018 with v2.16 the PolyGerrit UI became the “default” interface and thus renamed just “Gerrit” UI.\"\n[2] https://gerrit-review.googlesource.com/Documentation/note-db.html#_current_status\n[3] https://gitenterprise.me/2020/05/15/gerrit-goes-git-v2/","commit_id":"9b14492dad2579ce1f75fe91ad486c743d899782"}],"doc/source/examples/etc_zuul/zuul.conf":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"99c03847f26a56bd05cd192dd4e29bc82f7b6cca","unresolved":false,"context_lines":[{"line_number":37,"context_line":"listen_address\u003d0.0.0.0"},{"line_number":38,"context_line":"port\u003d9000"},{"line_number":39,"context_line":"root\u003dhttp://localhost:9000"},{"line_number":40,"context_line":"status_url\u003dhttp://localhost:9000/t/example-tenant/status"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"[executor]"},{"line_number":43,"context_line":"private_key_file\u003d/var/ssh/nodepool"}],"source_content_type":"text/plain","patch_set":27,"id":"9f560f44_2c39943e","line":40,"updated":"2020-08-19 23:32:23.000000000","message":"We shouldn\u0027t need to set status_url anymore.  That may have changed since you wrote this patch.","commit_id":"9b14492dad2579ce1f75fe91ad486c743d899782"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c816fb50428383ff4e5f85155d388da6a3075550","unresolved":false,"context_lines":[{"line_number":37,"context_line":"listen_address\u003d0.0.0.0"},{"line_number":38,"context_line":"port\u003d9000"},{"line_number":39,"context_line":"root\u003dhttp://localhost:9000"},{"line_number":40,"context_line":"status_url\u003dhttp://localhost:9000/t/example-tenant/status"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"[executor]"},{"line_number":43,"context_line":"private_key_file\u003d/var/ssh/nodepool"}],"source_content_type":"text/plain","patch_set":27,"id":"9f560f44_e737b2fd","line":40,"in_reply_to":"9f560f44_2c39943e","updated":"2020-08-20 09:28:23.000000000","message":"Done","commit_id":"9b14492dad2579ce1f75fe91ad486c743d899782"}],"doc/source/examples/httpd.conf":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"99c03847f26a56bd05cd192dd4e29bc82f7b6cca","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    AllowOverride none"},{"line_number":247,"context_line":"    Require all denied"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    Header set Access-Control-Allow-Origin \"*\""},{"line_number":250,"context_line":"\u003c/Directory\u003e"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"#"}],"source_content_type":"text/plain","patch_set":27,"id":"9f560f44_8c48a0cc","line":249,"updated":"2020-08-19 23:32:23.000000000","message":"This shouldn\u0027t be necessary for the tutorial.  Are you adding it because you feel it\u0027s a good thing to have for someone who might run a production system based on the tutorial?","commit_id":"9b14492dad2579ce1f75fe91ad486c743d899782"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c816fb50428383ff4e5f85155d388da6a3075550","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    AllowOverride none"},{"line_number":247,"context_line":"    Require all denied"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    Header set Access-Control-Allow-Origin \"*\""},{"line_number":250,"context_line":"\u003c/Directory\u003e"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"#"}],"source_content_type":"text/plain","patch_set":27,"id":"9f560f44_27afeae3","line":249,"in_reply_to":"9f560f44_8c48a0cc","updated":"2020-08-20 09:28:23.000000000","message":"When checking build results, firefox reported this error: \"Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8000/2/2/1/check/testjob/71c18c3/job-output.json.gz. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).\"","commit_id":"9b14492dad2579ce1f75fe91ad486c743d899782"}],"doc/source/examples/node-Dockerfile":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"3b74845c3e92c933541f5b479e9d8348d726a8f7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"        python2 \\"},{"line_number":8,"context_line":"        python3 \\"},{"line_number":9,"context_line":"        python3-pip \\"},{"line_number":10,"context_line":"        python3-venv \\"},{"line_number":11,"context_line":"        rsync \\"},{"line_number":12,"context_line":"        sudo \\"},{"line_number":13,"context_line":"    ;"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_e76488bb","line":10,"updated":"2020-06-03 17:13:50.000000000","message":"We shouldn\u0027t need anythong other than python3 at this point.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"68015baede89d645c4ad69c4ddbb77e6289c5b4f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"        python2 \\"},{"line_number":8,"context_line":"        python3 \\"},{"line_number":9,"context_line":"        python3-pip \\"},{"line_number":10,"context_line":"        python3-venv \\"},{"line_number":11,"context_line":"        rsync \\"},{"line_number":12,"context_line":"        sudo \\"},{"line_number":13,"context_line":"    ;"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_6db6968c","line":10,"in_reply_to":"ff570b3c_e76488bb","updated":"2020-06-03 22:00:58.000000000","message":"Done","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c6eae575cf98e03d743bbd3f703870c8824f548d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"        python2 \\"},{"line_number":8,"context_line":"        python3 \\"},{"line_number":9,"context_line":"        python3-pip \\"},{"line_number":10,"context_line":"        python3-venv \\"},{"line_number":11,"context_line":"        rsync \\"},{"line_number":12,"context_line":"        sudo \\"},{"line_number":13,"context_line":"    ;"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_390a281f","line":10,"in_reply_to":"ff570b3c_e76488bb","updated":"2020-06-03 17:54:27.000000000","message":"That\u0027s what i did at the begining, but:\n\nERROR:  py27: InterpreterNotFound: python2.7","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"3b74845c3e92c933541f5b479e9d8348d726a8f7","unresolved":false,"context_lines":[{"line_number":16,"context_line":"RUN echo \"Set disable_coredump false\" \u003e\u003e /etc/sudo.conf"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"RUN useradd -m -s /bin/bash -p zuul zuul "},{"line_number":19,"context_line":"USER zuul"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"RUN python3 -m pip install --no-warn-script-location --user -U pip \\"},{"line_number":22,"context_line":"    wheel \\"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_4758d4f8","line":19,"updated":"2020-06-03 17:13:50.000000000","message":"One of the things I\u0027d like to accomplish in this tutorial is show that users don\u0027t need a specially-created node image.  They just need something that ansible can run on.  That\u0027s why this used root by default, since that\u0027s the only user in the image.  You don\u0027t need a zuul user, so let\u0027s not create one in the quickstart.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"68015baede89d645c4ad69c4ddbb77e6289c5b4f","unresolved":false,"context_lines":[{"line_number":16,"context_line":"RUN echo \"Set disable_coredump false\" \u003e\u003e /etc/sudo.conf"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"RUN useradd -m -s /bin/bash -p zuul zuul "},{"line_number":19,"context_line":"USER zuul"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"RUN python3 -m pip install --no-warn-script-location --user -U pip \\"},{"line_number":22,"context_line":"    wheel \\"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_4db91277","line":19,"in_reply_to":"ff570b3c_4758d4f8","updated":"2020-06-03 22:00:58.000000000","message":"Done","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c6eae575cf98e03d743bbd3f703870c8824f548d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"RUN echo \"Set disable_coredump false\" \u003e\u003e /etc/sudo.conf"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"RUN useradd -m -s /bin/bash -p zuul zuul "},{"line_number":19,"context_line":"USER zuul"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"RUN python3 -m pip install --no-warn-script-location --user -U pip \\"},{"line_number":22,"context_line":"    wheel \\"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_b96638ba","line":19,"in_reply_to":"ff570b3c_4758d4f8","updated":"2020-06-03 17:54:27.000000000","message":"I Agree. But to me \"static node\" sounds a lot like a standard server and not a VM or a container where it\u0027s unlikely to be connected as root.\nbut also: why not ?","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"3b74845c3e92c933541f5b479e9d8348d726a8f7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    virtenv \\"},{"line_number":25,"context_line":"    virtualenv \\"},{"line_number":26,"context_line":"    tox \\"},{"line_number":27,"context_line":"    twine"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# If proxy environment variables supplied during build allow pass through via"},{"line_number":30,"context_line":"# ~/.ssh/environment, as the test env likely will require these set for any"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_275b20f6","line":27,"updated":"2020-06-03 17:13:50.000000000","message":"None of these should be necessary.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"68015baede89d645c4ad69c4ddbb77e6289c5b4f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    virtenv \\"},{"line_number":25,"context_line":"    virtualenv \\"},{"line_number":26,"context_line":"    tox \\"},{"line_number":27,"context_line":"    twine"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# If proxy environment variables supplied during build allow pass through via"},{"line_number":30,"context_line":"# ~/.ssh/environment, as the test env likely will require these set for any"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_8dae8a2b","line":27,"in_reply_to":"ff570b3c_275b20f6","updated":"2020-06-03 22:00:58.000000000","message":"Done","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c6eae575cf98e03d743bbd3f703870c8824f548d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    virtenv \\"},{"line_number":25,"context_line":"    virtualenv \\"},{"line_number":26,"context_line":"    tox \\"},{"line_number":27,"context_line":"    twine"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# If proxy environment variables supplied during build allow pass through via"},{"line_number":30,"context_line":"# ~/.ssh/environment, as the test env likely will require these set for any"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_276e80ff","line":27,"in_reply_to":"ff570b3c_275b20f6","updated":"2020-06-03 17:54:27.000000000","message":"I agree, but they are going to be installed anyway. it\u0027s also to save some time during job execution.\nSame idea why I installed \"python3-venv\"","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"3b74845c3e92c933541f5b479e9d8348d726a8f7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"# job launched on the node to be capable of internet access."},{"line_number":32,"context_line":"RUN set -e ; \\"},{"line_number":33,"context_line":"    mkdir -p -m 0700 ~/.ssh; \\"},{"line_number":34,"context_line":"    echo \"PATH\u003d${PATH}:${HOME}/.local/bin\" \u003e\u003e ~/.ssh/environment; \\"},{"line_number":35,"context_line":"    if [ -n \"${http_proxy}\" ]; then \\"},{"line_number":36,"context_line":"        echo \"http_proxy\u003d${http_proxy}\" \u003e ~/.ssh/environment; \\"},{"line_number":37,"context_line":"        echo \"https_proxy\u003d${https_proxy}\" \u003e\u003e ~/.ssh/environment; \\"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_8775cc66","line":34,"updated":"2020-06-03 17:13:50.000000000","message":"We shouldn\u0027t need to modify the PATH.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"68015baede89d645c4ad69c4ddbb77e6289c5b4f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"# job launched on the node to be capable of internet access."},{"line_number":32,"context_line":"RUN set -e ; \\"},{"line_number":33,"context_line":"    mkdir -p -m 0700 ~/.ssh; \\"},{"line_number":34,"context_line":"    echo \"PATH\u003d${PATH}:${HOME}/.local/bin\" \u003e\u003e ~/.ssh/environment; \\"},{"line_number":35,"context_line":"    if [ -n \"${http_proxy}\" ]; then \\"},{"line_number":36,"context_line":"        echo \"http_proxy\u003d${http_proxy}\" \u003e ~/.ssh/environment; \\"},{"line_number":37,"context_line":"        echo \"https_proxy\u003d${https_proxy}\" \u003e\u003e ~/.ssh/environment; \\"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_eda90624","line":34,"in_reply_to":"ff570b3c_8775cc66","updated":"2020-06-03 22:00:58.000000000","message":"Done","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c6eae575cf98e03d743bbd3f703870c8824f548d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"# job launched on the node to be capable of internet access."},{"line_number":32,"context_line":"RUN set -e ; \\"},{"line_number":33,"context_line":"    mkdir -p -m 0700 ~/.ssh; \\"},{"line_number":34,"context_line":"    echo \"PATH\u003d${PATH}:${HOME}/.local/bin\" \u003e\u003e ~/.ssh/environment; \\"},{"line_number":35,"context_line":"    if [ -n \"${http_proxy}\" ]; then \\"},{"line_number":36,"context_line":"        echo \"http_proxy\u003d${http_proxy}\" \u003e ~/.ssh/environment; \\"},{"line_number":37,"context_line":"        echo \"https_proxy\u003d${https_proxy}\" \u003e\u003e ~/.ssh/environment; \\"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_c7fb4444","line":34,"in_reply_to":"ff570b3c_8775cc66","updated":"2020-06-03 17:54:27.000000000","message":"required for pip as --user","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"3b74845c3e92c933541f5b479e9d8348d726a8f7","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"RUN set -e ; \\"},{"line_number":45,"context_line":"    mkdir /var/run/sshd ; \\"},{"line_number":46,"context_line":"    sed -ri \u0027s/UsePAM yes/#UsePAM yes/g\u0027 /etc/ssh/sshd_config ; \\"},{"line_number":47,"context_line":"    sed -ri \u0027s/#PermitUserEnvironment no/PermitUserEnvironment yes/g\u0027 /etc/ssh/sshd_config;"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"COPY --chown\u003droot:root ./ssh_host_ed25519_key /etc/ssh/ssh_host_ed25519_key"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_67707873","line":46,"updated":"2020-06-03 17:13:50.000000000","message":"Why the PAM change?","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"68015baede89d645c4ad69c4ddbb77e6289c5b4f","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"RUN set -e ; \\"},{"line_number":45,"context_line":"    mkdir /var/run/sshd ; \\"},{"line_number":46,"context_line":"    sed -ri \u0027s/UsePAM yes/#UsePAM yes/g\u0027 /etc/ssh/sshd_config ; \\"},{"line_number":47,"context_line":"    sed -ri \u0027s/#PermitUserEnvironment no/PermitUserEnvironment yes/g\u0027 /etc/ssh/sshd_config;"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"COPY --chown\u003droot:root ./ssh_host_ed25519_key /etc/ssh/ssh_host_ed25519_key"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_cda4024e","line":46,"in_reply_to":"ff570b3c_67707873","updated":"2020-06-03 22:00:58.000000000","message":"Done","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c6eae575cf98e03d743bbd3f703870c8824f548d","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"RUN set -e ; \\"},{"line_number":45,"context_line":"    mkdir /var/run/sshd ; \\"},{"line_number":46,"context_line":"    sed -ri \u0027s/UsePAM yes/#UsePAM yes/g\u0027 /etc/ssh/sshd_config ; \\"},{"line_number":47,"context_line":"    sed -ri \u0027s/#PermitUserEnvironment no/PermitUserEnvironment yes/g\u0027 /etc/ssh/sshd_config;"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"COPY --chown\u003droot:root ./ssh_host_ed25519_key /etc/ssh/ssh_host_ed25519_key"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_67007835","line":46,"in_reply_to":"ff570b3c_67707873","updated":"2020-06-03 17:54:27.000000000","message":"It was in the previous used image, so I kept it.\nhttps://github.com/rastasheep/ubuntu-sshd/blob/master/18.04/Dockerfile","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"}],"doc/source/examples/playbooks/project.config":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"3b74845c3e92c933541f5b479e9d8348d726a8f7","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\tforgeCommitter \u003d group Registered Users"},{"line_number":31,"context_line":"\tpush \u003d +force group Administrators"},{"line_number":32,"context_line":"\tpush \u003d group Project Owners"},{"line_number":33,"context_line":"\tpush \u003d group Registered Users"},{"line_number":34,"context_line":"\tlabel-Code-Review \u003d -2..+2 group Registered Users"},{"line_number":35,"context_line":"\tlabel-Verified \u003d -2..+2 group Administrators"},{"line_number":36,"context_line":"\tlabel-Verified \u003d -2..+2 group Non-Interactive Users"}],"source_content_type":"text/x-ini","patch_set":3,"id":"ff570b3c_c76b4482","line":33,"updated":"2020-06-03 17:13:50.000000000","message":"This is not something users should be able to do in a typical gerrit deployment.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"68015baede89d645c4ad69c4ddbb77e6289c5b4f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\tforgeCommitter \u003d group Registered Users"},{"line_number":31,"context_line":"\tpush \u003d +force group Administrators"},{"line_number":32,"context_line":"\tpush \u003d group Project Owners"},{"line_number":33,"context_line":"\tpush \u003d group Registered Users"},{"line_number":34,"context_line":"\tlabel-Code-Review \u003d -2..+2 group Registered Users"},{"line_number":35,"context_line":"\tlabel-Verified \u003d -2..+2 group Administrators"},{"line_number":36,"context_line":"\tlabel-Verified \u003d -2..+2 group Non-Interactive Users"}],"source_content_type":"text/x-ini","patch_set":3,"id":"ff570b3c_ed574625","line":33,"in_reply_to":"ff570b3c_87614c08","updated":"2020-06-03 22:00:58.000000000","message":"removed for this change","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"68015baede89d645c4ad69c4ddbb77e6289c5b4f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\tforgeCommitter \u003d group Registered Users"},{"line_number":31,"context_line":"\tpush \u003d +force group Administrators"},{"line_number":32,"context_line":"\tpush \u003d group Project Owners"},{"line_number":33,"context_line":"\tpush \u003d group Registered Users"},{"line_number":34,"context_line":"\tlabel-Code-Review \u003d -2..+2 group Registered Users"},{"line_number":35,"context_line":"\tlabel-Verified \u003d -2..+2 group Administrators"},{"line_number":36,"context_line":"\tlabel-Verified \u003d -2..+2 group Non-Interactive Users"}],"source_content_type":"text/x-ini","patch_set":3,"id":"ff570b3c_2d4e5e96","line":33,"in_reply_to":"ff570b3c_c76b4482","updated":"2020-06-03 22:00:58.000000000","message":"Done","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c6eae575cf98e03d743bbd3f703870c8824f548d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\tforgeCommitter \u003d group Registered Users"},{"line_number":31,"context_line":"\tpush \u003d +force group Administrators"},{"line_number":32,"context_line":"\tpush \u003d group Project Owners"},{"line_number":33,"context_line":"\tpush \u003d group Registered Users"},{"line_number":34,"context_line":"\tlabel-Code-Review \u003d -2..+2 group Registered Users"},{"line_number":35,"context_line":"\tlabel-Verified \u003d -2..+2 group Administrators"},{"line_number":36,"context_line":"\tlabel-Verified \u003d -2..+2 group Non-Interactive Users"}],"source_content_type":"text/x-ini","patch_set":3,"id":"ff570b3c_87614c08","line":33,"in_reply_to":"ff570b3c_c76b4482","updated":"2020-06-03 17:54:27.000000000","message":"I agree, but there are some use cases in the following tutorials where users are asked to do a standard push.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"3b74845c3e92c933541f5b479e9d8348d726a8f7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"\tcreateTag \u003d group Registered Users"},{"line_number":62,"context_line":"\tcreateSignedTag \u003d group Administrators"},{"line_number":63,"context_line":"\tcreateSignedTag \u003d group Project Owners"},{"line_number":64,"context_line":"\tcreateSignedTag \u003d group Registered Users"},{"line_number":65,"context_line":"[label \"Code-Review\"]"},{"line_number":66,"context_line":"\tfunction \u003d MaxWithBlock"},{"line_number":67,"context_line":"\tdefaultValue \u003d 0"}],"source_content_type":"text/x-ini","patch_set":3,"id":"ff570b3c_a76610ba","line":64,"updated":"2020-06-03 17:13:50.000000000","message":"Ditto.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"68015baede89d645c4ad69c4ddbb77e6289c5b4f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"\tcreateTag \u003d group Registered Users"},{"line_number":62,"context_line":"\tcreateSignedTag \u003d group Administrators"},{"line_number":63,"context_line":"\tcreateSignedTag \u003d group Project Owners"},{"line_number":64,"context_line":"\tcreateSignedTag \u003d group Registered Users"},{"line_number":65,"context_line":"[label \"Code-Review\"]"},{"line_number":66,"context_line":"\tfunction \u003d MaxWithBlock"},{"line_number":67,"context_line":"\tdefaultValue \u003d 0"}],"source_content_type":"text/x-ini","patch_set":3,"id":"ff570b3c_4d3c72e0","line":64,"in_reply_to":"ff570b3c_1cdf520d","updated":"2020-06-03 22:00:58.000000000","message":"removed for this change","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"68015baede89d645c4ad69c4ddbb77e6289c5b4f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"\tcreateTag \u003d group Registered Users"},{"line_number":62,"context_line":"\tcreateSignedTag \u003d group Administrators"},{"line_number":63,"context_line":"\tcreateSignedTag \u003d group Project Owners"},{"line_number":64,"context_line":"\tcreateSignedTag \u003d group Registered Users"},{"line_number":65,"context_line":"[label \"Code-Review\"]"},{"line_number":66,"context_line":"\tfunction \u003d MaxWithBlock"},{"line_number":67,"context_line":"\tdefaultValue \u003d 0"}],"source_content_type":"text/x-ini","patch_set":3,"id":"ff570b3c_0d36fa03","line":64,"in_reply_to":"ff570b3c_a76610ba","updated":"2020-06-03 22:00:58.000000000","message":"Done","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c6eae575cf98e03d743bbd3f703870c8824f548d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"\tcreateTag \u003d group Registered Users"},{"line_number":62,"context_line":"\tcreateSignedTag \u003d group Administrators"},{"line_number":63,"context_line":"\tcreateSignedTag \u003d group Project Owners"},{"line_number":64,"context_line":"\tcreateSignedTag \u003d group Registered Users"},{"line_number":65,"context_line":"[label \"Code-Review\"]"},{"line_number":66,"context_line":"\tfunction \u003d MaxWithBlock"},{"line_number":67,"context_line":"\tdefaultValue \u003d 0"}],"source_content_type":"text/x-ini","patch_set":3,"id":"ff570b3c_e71e486e","line":64,"in_reply_to":"ff570b3c_a76610ba","updated":"2020-06-03 17:54:27.000000000","message":"use on time, see follow up tutorial \"job-secrets\".\nWe can make users push as admin tho.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"f5b9f2671c40b6444c6bc9338e32da8f7c7318d4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"\tcreateTag \u003d group Registered Users"},{"line_number":62,"context_line":"\tcreateSignedTag \u003d group Administrators"},{"line_number":63,"context_line":"\tcreateSignedTag \u003d group Project Owners"},{"line_number":64,"context_line":"\tcreateSignedTag \u003d group Registered Users"},{"line_number":65,"context_line":"[label \"Code-Review\"]"},{"line_number":66,"context_line":"\tfunction \u003d MaxWithBlock"},{"line_number":67,"context_line":"\tdefaultValue \u003d 0"}],"source_content_type":"text/x-ini","patch_set":3,"id":"ff570b3c_1cdf520d","line":64,"in_reply_to":"ff570b3c_e71e486e","updated":"2020-06-03 18:36:34.000000000","message":"used one time.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"}],"doc/source/examples/zuul-config/playbooks/base/post-rm.yaml":[{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"21d2d4535f6b24f911d43b826dc03a0216e87361","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- hosts: localhost"},{"line_number":2,"context_line":"  gather_facts: False"},{"line_number":3,"context_line":"  tasks:"},{"line_number":4,"context_line":"    - name: Ansible delete file example"},{"line_number":5,"context_line":"      file:"},{"line_number":6,"context_line":"        path: \"{{ item.value.src_dir }}\""},{"line_number":7,"context_line":"        state: absent"},{"line_number":8,"context_line":"      loop: \"{{ q(\u0027dict\u0027, zuul.projects) }}\""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ff570b3c_3d67c9b9","line":8,"range":{"start_line":1,"start_character":0,"end_line":8,"end_character":44},"updated":"2020-06-02 19:21:02.000000000","message":"file to be removed","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"}],"doc/source/tutorials/quick-start.rst":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"99c03847f26a56bd05cd192dd4e29bc82f7b6cca","unresolved":false,"context_lines":[{"line_number":51,"context_line":"   # Ubuntu / Debian:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"   sudo apt-get install docker.io git python3-pip"},{"line_number":54,"context_line":"   sudo python3 -m pip install git-review docker-compose"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"   # Start and Enable the docker service on Fedora / CentOS"},{"line_number":57,"context_line":"   # Red Hat / OpenSuse / Ubuntu / Debian:"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_6c438cb0","line":54,"updated":"2020-08-19 23:32:23.000000000","message":"I don\u0027t think we should install docke-compose with pip.  Global install via pip can really mess up a system.  In fact, at this point we may be able to move git-review to a package installation.","commit_id":"9b14492dad2579ce1f75fe91ad486c743d899782"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c816fb50428383ff4e5f85155d388da6a3075550","unresolved":false,"context_lines":[{"line_number":51,"context_line":"   # Ubuntu / Debian:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"   sudo apt-get install docker.io git python3-pip"},{"line_number":54,"context_line":"   sudo python3 -m pip install git-review docker-compose"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"   # Start and Enable the docker service on Fedora / CentOS"},{"line_number":57,"context_line":"   # Red Hat / OpenSuse / Ubuntu / Debian:"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_c710ae03","line":54,"in_reply_to":"9f560f44_6c438cb0","updated":"2020-08-20 09:28:23.000000000","message":"A recent docker-compose for test is required (see commit message), I had an error with patchset 9, fixed in patchset 10 because the packaged version for ubuntu-bionic is too old.\nTo be coherent with tests, and if a reader wants to execute run-localtest-***.yaml, it\u0027s best to have a working docker-compose, otherwise there will be errors when \"docker logs ***\" are executed.","commit_id":"9b14492dad2579ce1f75fe91ad486c743d899782"}],"playbooks/quick-start/localtest.yaml":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"3b74845c3e92c933541f5b479e9d8348d726a8f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- hosts: localhost"},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    workspace: /tmp/tutorial-quick-start"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ff570b3c_0707fccb","line":1,"updated":"2020-06-03 17:13:50.000000000","message":"We don\u0027t usually include these except in multi-document YAML files, so no need to add them here.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c6eae575cf98e03d743bbd3f703870c8824f548d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- hosts: localhost"},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    workspace: /tmp/tutorial-quick-start"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ff570b3c_d9616cd5","line":1,"in_reply_to":"ff570b3c_0707fccb","updated":"2020-06-03 17:54:27.000000000","message":"default yamllint was complaining about document-start, so I added them.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"3b74845c3e92c933541f5b479e9d8348d726a8f7","unresolved":false,"context_lines":[{"line_number":8,"context_line":"      stdout: \u0027\u0027"},{"line_number":9,"context_line":"  tasks:"},{"line_number":10,"context_line":"    - name: Setup Tutorial Execution"},{"line_number":11,"context_line":"      include_tasks: ../tutorial-common/setup.yaml"},{"line_number":12,"context_line":"    - name: Run tasks in ssh agent"},{"line_number":13,"context_line":"      include_tasks: main.yaml"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ff570b3c_e70928dd","line":11,"updated":"2020-06-03 17:13:50.000000000","message":"The purpose of this playbook is to facilitate local testing of the gate job.  So this should run exactly what the gate job runs, but with an SSH configuration suitable for running locally.  In other words, we shouldn\u0027t add this task here.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c6eae575cf98e03d743bbd3f703870c8824f548d","unresolved":false,"context_lines":[{"line_number":8,"context_line":"      stdout: \u0027\u0027"},{"line_number":9,"context_line":"  tasks:"},{"line_number":10,"context_line":"    - name: Setup Tutorial Execution"},{"line_number":11,"context_line":"      include_tasks: ../tutorial-common/setup.yaml"},{"line_number":12,"context_line":"    - name: Run tasks in ssh agent"},{"line_number":13,"context_line":"      include_tasks: main.yaml"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ff570b3c_b9b8f810","line":11,"in_reply_to":"ff570b3c_e70928dd","updated":"2020-06-03 17:54:27.000000000","message":"This is just old \"main.yaml\" split into 2 files: \"setup.yaml\" and \"main.yaml\".\n   \nThe history behind this is:\nI wanted first other tutorials to just run this setup.yaml and their main.yaml and not main.yaml from quick-start.","commit_id":"328124fe99c2fa3108f4674712c7ffaa3c43a5b5"}],"playbooks/tutorial/quick-start.yaml":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"6ab8591b303f5b729c41b8cdfffd38e4afe8b962","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Init Test1"},{"line_number":3,"context_line":"  include_role:"},{"line_number":4,"context_line":"    name: init-repository"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"3d6a874a_0bf32649","line":1,"updated":"2021-01-10 18:02:38.000000000","message":"Nit: you can (and we always do in Zuul) omit the initial \"---\" in yaml files unless they are multi-document (and they never are).\n\nI wouldn\u0027t -1 for this, but I have a comment below that\u0027s worthy of a -1, so it\u0027d be great to go ahead and remove all these to be consistent.","commit_id":"cb38e7d365fd7564d5e4df0d626902551063946b"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"3a6abfd61beea7fd6e03f54c24a195984747dd7b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Init Test1"},{"line_number":3,"context_line":"  include_role:"},{"line_number":4,"context_line":"    name: init-repository"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"474aacd6_4d0b2d1e","line":1,"in_reply_to":"3d6a874a_0bf32649","updated":"2021-01-11 22:54:14.000000000","message":"Done","commit_id":"cb38e7d365fd7564d5e4df0d626902551063946b"}],"playbooks/tutorial/roles/change-merged/meta/main.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0c1408da14eb0e2e6596535fc74a8c7265717d83","unresolved":false,"context_lines":[{"line_number":1,"context_line":"dependencies:"},{"line_number":2,"context_line":"  - role: check-pipeline"},{"line_number":3,"context_line":"  - role: approve-change"},{"line_number":4,"context_line":"  - role: gate-pipeline"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_b7302dea","line":4,"updated":"2020-06-22 22:41:31.000000000","message":"For these three roles to work reliably you may need to add a sleep timeout to the testjob.yaml playbook. Otherwise I would expect the job can start and complete before the polling above even starts?","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c199644d0238f744139cb17cda7ab1a6b7ef6cde","unresolved":false,"context_lines":[{"line_number":1,"context_line":"dependencies:"},{"line_number":2,"context_line":"  - role: check-pipeline"},{"line_number":3,"context_line":"  - role: approve-change"},{"line_number":4,"context_line":"  - role: gate-pipeline"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_57339162","line":4,"in_reply_to":"bf51134e_b7302dea","updated":"2020-06-22 23:49:23.000000000","message":"check-pipeline and gate-pipeline work reliably. You are right, it can happen that the result of one of those 2 will be checked and valid on the first try. The purpose is to check the step performed correctly, so it\u0027s fine.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"}],"playbooks/tutorial/roles/init-repository/tasks/main.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0c1408da14eb0e2e6596535fc74a8c7265717d83","unresolved":false,"context_lines":[{"line_number":12,"context_line":"        repo: \"http://localhost:8080/{{ projectname }}\""},{"line_number":13,"context_line":"        dest: \"{{ workspace }}/{{ projectname }}\""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    - name: Download commit-msg"},{"line_number":16,"context_line":"      get_url:"},{"line_number":17,"context_line":"        url: http://localhost:8080/tools/hooks/commit-msg"},{"line_number":18,"context_line":"        dest: \"{{ workspace }}/{{ projectname }}/.git/hooks/commit-msg\""}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_842339bd","line":15,"updated":"2020-06-22 22:41:31.000000000","message":"Why not let git review -s do this?","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c199644d0238f744139cb17cda7ab1a6b7ef6cde","unresolved":false,"context_lines":[{"line_number":12,"context_line":"        repo: \"http://localhost:8080/{{ projectname }}\""},{"line_number":13,"context_line":"        dest: \"{{ workspace }}/{{ projectname }}\""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    - name: Download commit-msg"},{"line_number":16,"context_line":"      get_url:"},{"line_number":17,"context_line":"        url: http://localhost:8080/tools/hooks/commit-msg"},{"line_number":18,"context_line":"        dest: \"{{ workspace }}/{{ projectname }}/.git/hooks/commit-msg\""}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_974c0943","line":15,"in_reply_to":"bf51134e_842339bd","updated":"2020-06-22 23:49:23.000000000","message":"This was done in order to change known_hosts for a localtest. Using GIT_SSH_COMMAND we can specify the file for git, but it can\u0027t be done for git-review which does not allow passing options to scp.\nBy fetching commit-msg here, no scp is performed by git-review. This way someone running localtest\u0027s tutorial won\u0027t be prompt to accept a fingerprint.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0c1408da14eb0e2e6596535fc74a8c7265717d83","unresolved":false,"context_lines":[{"line_number":29,"context_line":"      git config user.name \u0027Example User\u0027"},{"line_number":30,"context_line":"      git config gitreview.username \u0027user\u0027"},{"line_number":31,"context_line":"      git review -s"},{"line_number":32,"context_line":"      {% else %}"},{"line_number":33,"context_line":"      git checkout -f master"},{"line_number":34,"context_line":"      git reset --hard $(git log --pretty\u003doneline | grep \"Initial commit\" | awk {\u0027print $1\u0027} | head -1)"},{"line_number":35,"context_line":"      git remote add gerritadmin http://admin:secret@localhost:8080/a/{{ projectname }}"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_f7058512","line":32,"updated":"2020-06-22 22:41:31.000000000","message":"This block feels like it deserves a comment. If the projectdir exists we are reseting it? But why do we need to reset --hard to the first commit then refetch all history from gerrit (and wherever else)? Seems to me we can just assume a previous pass had set things up and maybe we just want to git remote update \u0026\u0026 git reset --hard origin master?","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f82a09aaef35a3f32096aa9b1223bf9ae8e62367","unresolved":false,"context_lines":[{"line_number":29,"context_line":"      git config user.name \u0027Example User\u0027"},{"line_number":30,"context_line":"      git config gitreview.username \u0027user\u0027"},{"line_number":31,"context_line":"      git review -s"},{"line_number":32,"context_line":"      {% else %}"},{"line_number":33,"context_line":"      git checkout -f master"},{"line_number":34,"context_line":"      git reset --hard $(git log --pretty\u003doneline | grep \"Initial commit\" | awk {\u0027print $1\u0027} | head -1)"},{"line_number":35,"context_line":"      git remote add gerritadmin http://admin:secret@localhost:8080/a/{{ projectname }}"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_79a79f0c","line":32,"in_reply_to":"bf51134e_1762b9ae","updated":"2020-06-23 14:53:22.000000000","message":"I think we need to describe the utility here in the code. This is a really odd way to be updating a git repo. If it serves a purpose let\u0027s write that down.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"b0786c703e6cc13babd5e16b47630cea9a109348","unresolved":false,"context_lines":[{"line_number":29,"context_line":"      git config user.name \u0027Example User\u0027"},{"line_number":30,"context_line":"      git config gitreview.username \u0027user\u0027"},{"line_number":31,"context_line":"      git review -s"},{"line_number":32,"context_line":"      {% else %}"},{"line_number":33,"context_line":"      git checkout -f master"},{"line_number":34,"context_line":"      git reset --hard $(git log --pretty\u003doneline | grep \"Initial commit\" | awk {\u0027print $1\u0027} | head -1)"},{"line_number":35,"context_line":"      git remote add gerritadmin http://admin:secret@localhost:8080/a/{{ projectname }}"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_012ee990","line":32,"in_reply_to":"bf51134e_79a79f0c","updated":"2020-06-23 17:12:48.000000000","message":"Removed from this change, will add in the next one","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c199644d0238f744139cb17cda7ab1a6b7ef6cde","unresolved":false,"context_lines":[{"line_number":29,"context_line":"      git config user.name \u0027Example User\u0027"},{"line_number":30,"context_line":"      git config gitreview.username \u0027user\u0027"},{"line_number":31,"context_line":"      git review -s"},{"line_number":32,"context_line":"      {% else %}"},{"line_number":33,"context_line":"      git checkout -f master"},{"line_number":34,"context_line":"      git reset --hard $(git log --pretty\u003doneline | grep \"Initial commit\" | awk {\u0027print $1\u0027} | head -1)"},{"line_number":35,"context_line":"      git remote add gerritadmin http://admin:secret@localhost:8080/a/{{ projectname }}"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_1762b9ae","line":32,"in_reply_to":"bf51134e_f7058512","updated":"2020-06-22 23:49:23.000000000","message":"As written in the commit message, this commit also includes preparation for other tutorials.\nthis is the easiest and cleaniest method (IMO) to go from one tutorial to another without forcing the reader to redo quick-start tutorial.\n\nsee my comment in the following tutorial change: \nhttps://review.opendev.org/#/c/732067/3/doc/source/tutorials/gate-your-first-patch.rst@27","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"6ab8591b303f5b729c41b8cdfffd38e4afe8b962","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  git:"},{"line_number":5,"context_line":"    repo: \"http://localhost:8080/{{ projectname }}\""},{"line_number":6,"context_line":"    dest: \"{{ workspace }}/{{ projectname }}\""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- name: Download commit-msg"},{"line_number":9,"context_line":"  get_url:"},{"line_number":10,"context_line":"    url: http://localhost:8080/tools/hooks/commit-msg"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"780ad841_63bdd079","line":7,"updated":"2021-01-10 18:02:38.000000000","message":"-1: This warrants a comment; you include an explanation in the commit message, but since there\u0027s a \"git review -s\" right below this, we\u0027re going to wonder in the future why we\u0027re downloading the commit hook here.  I really did need the commit message to understand what was going on, which is a good indication we need that information in the code too.  Something like:\n\n# Git-review doesn\u0027t support supplying a known_hosts file to scp, so we\n# fetch the commit hook ahead of time to avoid that.","commit_id":"cb38e7d365fd7564d5e4df0d626902551063946b"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"3a6abfd61beea7fd6e03f54c24a195984747dd7b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  git:"},{"line_number":5,"context_line":"    repo: \"http://localhost:8080/{{ projectname }}\""},{"line_number":6,"context_line":"    dest: \"{{ workspace }}/{{ projectname }}\""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- name: Download commit-msg"},{"line_number":9,"context_line":"  get_url:"},{"line_number":10,"context_line":"    url: http://localhost:8080/tools/hooks/commit-msg"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"bd878755_6fbbc394","line":7,"in_reply_to":"780ad841_63bdd079","updated":"2021-01-11 22:54:14.000000000","message":"Done","commit_id":"cb38e7d365fd7564d5e4df0d626902551063946b"}],"playbooks/tutorial/roles/setup-tutorial/defaults/main.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0c1408da14eb0e2e6596535fc74a8c7265717d83","unresolved":false,"context_lines":[{"line_number":1,"context_line":"zuul_tutorial_confignum: 0"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_8475f9cd","line":1,"updated":"2020-06-22 22:41:31.000000000","message":"What uses this var? A git grep shows this is the only place this name is used.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f82a09aaef35a3f32096aa9b1223bf9ae8e62367","unresolved":false,"context_lines":[{"line_number":1,"context_line":"zuul_tutorial_confignum: 0"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_b9ac97ed","line":1,"in_reply_to":"bf51134e_570d51e6","updated":"2020-06-23 14:53:22.000000000","message":"It is ok to add the variable when it is first used. particularly since we seem to be adding all of the additional items in series and not in a forked set of changes.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c199644d0238f744139cb17cda7ab1a6b7ef6cde","unresolved":false,"context_lines":[{"line_number":1,"context_line":"zuul_tutorial_confignum: 0"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_570d51e6","line":1,"in_reply_to":"bf51134e_8475f9cd","updated":"2020-06-22 23:49:23.000000000","message":"In this change yes, will be useful for following tutorials.\n\nAs written in the commit message, this change also has a few elements which will be common for all follow up tutorials. If it\u0027s not used here I should have not included in this change, but it felt akward adding in the 2nd tutorials things that will be used by all tutorials.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"b0786c703e6cc13babd5e16b47630cea9a109348","unresolved":false,"context_lines":[{"line_number":1,"context_line":"zuul_tutorial_confignum: 0"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_c15d1116","line":1,"in_reply_to":"bf51134e_b9ac97ed","updated":"2020-06-23 17:12:48.000000000","message":"Removed","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"}],"playbooks/tutorial/roles/setup-tutorial/tasks/main.yaml":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"6ab8591b303f5b729c41b8cdfffd38e4afe8b962","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    executable: /bin/bash"},{"line_number":22,"context_line":"    cmd: |"},{"line_number":23,"context_line":"      {{ ssh_agent.stdout }}"},{"line_number":24,"context_line":"      ssh-add {{ workspace }}/id_rsa"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- name: Run docker-compose up"},{"line_number":27,"context_line":"  when: not local"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"5db5d7ea_370004f1","line":24,"updated":"2021-01-10 18:02:38.000000000","message":"The original idea of the localtest playbook was to use the user\u0027s normal ssh key and ssh-agent to ease testing.  It seems like you\u0027re saying you think it\u0027s more valuable to harmonize the local and zuul test paths, even if it makes things a little more difficult for us when we run this test locally?  I don\u0027t disagree, I just want to make sure I understand your reasoning.\n\nIt looks like all paths now kill the extra ssh-agent process, so this should be fine.","commit_id":"cb38e7d365fd7564d5e4df0d626902551063946b"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"3a6abfd61beea7fd6e03f54c24a195984747dd7b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    executable: /bin/bash"},{"line_number":22,"context_line":"    cmd: |"},{"line_number":23,"context_line":"      {{ ssh_agent.stdout }}"},{"line_number":24,"context_line":"      ssh-add {{ workspace }}/id_rsa"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- name: Run docker-compose up"},{"line_number":27,"context_line":"  when: not local"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"82d99f8b_3f6762ad","line":24,"in_reply_to":"5db5d7ea_370004f1","updated":"2021-01-11 22:54:14.000000000","message":"I have restored user\u0027s normal ssh key as default, and generated one if id_rsa.pub is not found","commit_id":"cb38e7d365fd7564d5e4df0d626902551063946b"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"6ab8591b303f5b729c41b8cdfffd38e4afe8b962","unresolved":false,"context_lines":[{"line_number":101,"context_line":"  get_url:"},{"line_number":102,"context_line":"    url: http://localhost:8080/tools/hooks/commit-msg"},{"line_number":103,"context_line":"    dest: \"{{ workspace }}/zuul-config/.git/hooks/commit-msg\""},{"line_number":104,"context_line":"    mode: a+x"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"- name: Make initial change in zuul-config"},{"line_number":107,"context_line":"  copy:"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"5b086152_bea6fe51","line":104,"updated":"2021-01-10 18:02:38.000000000","message":"Why don\u0027t you use the init-repository role here?","commit_id":"cb38e7d365fd7564d5e4df0d626902551063946b"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"3a6abfd61beea7fd6e03f54c24a195984747dd7b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"  get_url:"},{"line_number":102,"context_line":"    url: http://localhost:8080/tools/hooks/commit-msg"},{"line_number":103,"context_line":"    dest: \"{{ workspace }}/zuul-config/.git/hooks/commit-msg\""},{"line_number":104,"context_line":"    mode: a+x"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"- name: Make initial change in zuul-config"},{"line_number":107,"context_line":"  copy:"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"0b57ef8b_788514c3","line":104,"in_reply_to":"5b086152_bea6fe51","updated":"2021-01-11 22:54:14.000000000","message":"Done","commit_id":"cb38e7d365fd7564d5e4df0d626902551063946b"}],"playbooks/tutorial/run-localtest-all.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0c1408da14eb0e2e6596535fc74a8c7265717d83","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- hosts: localhost"},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    workspace: /tmp/tutorial-zuul"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_64b6e58c","line":1,"updated":"2020-06-22 22:41:31.000000000","message":"This file is identical to run-localtest-quick-start.yaml","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c199644d0238f744139cb17cda7ab1a6b7ef6cde","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- hosts: localhost"},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    workspace: /tmp/tutorial-zuul"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_37125d0a","line":1,"in_reply_to":"bf51134e_64b6e58c","updated":"2020-06-22 23:49:23.000000000","message":"atm yes, it won\u0027t be in the next change","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"}],"playbooks/tutorial/run-localtest-quick-start.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0c1408da14eb0e2e6596535fc74a8c7265717d83","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- hosts: localhost"},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    workspace: /tmp/tutorial-zuul"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_44bbe170","line":1,"updated":"2020-06-22 22:41:31.000000000","message":"This file is identical to run-localtest-all.yaml","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f82a09aaef35a3f32096aa9b1223bf9ae8e62367","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- hosts: localhost"},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    workspace: /tmp/tutorial-zuul"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_79803f47","line":1,"in_reply_to":"bf51134e_17be39d4","updated":"2020-06-23 14:53:22.000000000","message":"Sure, add that first element when it is used.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"c199644d0238f744139cb17cda7ab1a6b7ef6cde","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- hosts: localhost"},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    workspace: /tmp/tutorial-zuul"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_17be39d4","line":1,"in_reply_to":"bf51134e_44bbe170","updated":"2020-06-22 23:49:23.000000000","message":"\"One tutorial to bring them all and in test bind them.\"\nA list has to start with a first element, doesn\u0027t it ?","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"b0786c703e6cc13babd5e16b47630cea9a109348","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- hosts: localhost"},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    workspace: /tmp/tutorial-zuul"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf51134e_2177ada2","line":1,"in_reply_to":"bf51134e_79803f47","updated":"2020-06-23 17:12:48.000000000","message":"the \u0027All\u0027 file (which is not this one) is removed from this change, and will remove also for the next one as it\u0027s still identical.  I\u0027ll introduce it in the 3rd change where it is different from run-localtest-use-zuul-jobs.yaml.\nBut I don\u0027t like to do it this way. Instead of building the file  nicely, it will be introduced with already 3 elements, quickstart + 2 tutorials instead of gradually updating the file.","commit_id":"54c85779bc5a078a56964d94572b2710b1f3432d"}]}
