)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"2048b6b0eceb7f58efb5cd2586a9fac2d0abb870","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-08-05 11:45:29 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Tempest Sanity Testing Documentation"},{"line_number":8,"context_line":"This patch set adds documentation for review"},{"line_number":9,"context_line":"suggesting for those whom make new plugins to"},{"line_number":10,"context_line":"create a tempest sanity gate for their plugin"},{"line_number":11,"context_line":"as well as how to do so."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7faddb67_d8a56404","line":8,"updated":"2019-08-05 16:46:55.000000000","message":"You probably want to add a blank line before the subject and the rest of the commit message.","commit_id":"16911a21a162d4af9db78d024986cb8f2266241d"}],"doc/source/tempest_sanity_testing.rst":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"48a4b6200ccc67f3653631c78fa7847a9ce30adc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Tempest Sanity Testing"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"All tempest plugins are ran through a non-voting gate named tempest-tox-plugin-sanity-check."},{"line_number":8,"context_line":"This does a minimal install of each tempest plugin, moves into the top-level directory of"},{"line_number":9,"context_line":"each, and runs the command \"tempest run -l\" to ensure that the basic features of your plugin"},{"line_number":10,"context_line":"cooperate with tempest. If you do not pass this gate after your plugin is established,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_650aab79","line":7,"updated":"2019-08-02 02:59:39.000000000","message":"We\u0027re changing it to voting now. https://review.opendev.org/#/c/641188/\nSo, this will be wrong after the patch gets merged.","commit_id":"368eb7a41c69472510c8bb7e4a5d6046e16d8120"},{"author":{"_account_id":29585,"name":"Jeremy Houser","email":"jeremyhouser@protonmail.com","username":"jh629g"},"change_message_id":"3506ef47d2d93b02a435d640ca66038f5a7d3c73","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Tempest Sanity Testing"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"All tempest plugins are ran through a non-voting gate named tempest-tox-plugin-sanity-check."},{"line_number":8,"context_line":"This does a minimal install of each tempest plugin, moves into the top-level directory of"},{"line_number":9,"context_line":"each, and runs the command \"tempest run -l\" to ensure that the basic features of your plugin"},{"line_number":10,"context_line":"cooperate with tempest. If you do not pass this gate after your plugin is established,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_78c79097","line":7,"in_reply_to":"7faddb67_650aab79","updated":"2019-08-05 16:50:54.000000000","message":"Done","commit_id":"368eb7a41c69472510c8bb7e4a5d6046e16d8120"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"f41dfcacdb9cbfac2eef78ea3583a0ffde5159d4","unresolved":false,"context_lines":[{"line_number":7,"context_line":"All tempest plugins are ran through a non-voting gate named tempest-tox-plugin-sanity-check."},{"line_number":8,"context_line":"This does a minimal install of each tempest plugin, moves into the top-level directory of"},{"line_number":9,"context_line":"each, and runs the command \"tempest run -l\" to ensure that the basic features of your plugin"},{"line_number":10,"context_line":"cooperate with tempest. If you do not pass this gate after your plugin is established,"},{"line_number":11,"context_line":"you will be blacklisted from this check in tools/generate-tempest-plugins-list.py within"},{"line_number":12,"context_line":"the tempest project."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The purpose of this document is to advise in the creation of a sanity gate for a new"},{"line_number":15,"context_line":"tempest plugin within the project repo itself, in order to avoid being blacklisted."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_83423f0e","line":12,"range":{"start_line":10,"start_character":24,"end_line":12,"end_character":20},"updated":"2019-08-02 05:59:36.000000000","message":"How about adding a link to the blacklisted page?\n\nhttps://docs.openstack.org/tempest/latest/plugin-registry.html#blacklisted-plugins","commit_id":"368eb7a41c69472510c8bb7e4a5d6046e16d8120"},{"author":{"_account_id":29585,"name":"Jeremy Houser","email":"jeremyhouser@protonmail.com","username":"jh629g"},"change_message_id":"3506ef47d2d93b02a435d640ca66038f5a7d3c73","unresolved":false,"context_lines":[{"line_number":7,"context_line":"All tempest plugins are ran through a non-voting gate named tempest-tox-plugin-sanity-check."},{"line_number":8,"context_line":"This does a minimal install of each tempest plugin, moves into the top-level directory of"},{"line_number":9,"context_line":"each, and runs the command \"tempest run -l\" to ensure that the basic features of your plugin"},{"line_number":10,"context_line":"cooperate with tempest. If you do not pass this gate after your plugin is established,"},{"line_number":11,"context_line":"you will be blacklisted from this check in tools/generate-tempest-plugins-list.py within"},{"line_number":12,"context_line":"the tempest project."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The purpose of this document is to advise in the creation of a sanity gate for a new"},{"line_number":15,"context_line":"tempest plugin within the project repo itself, in order to avoid being blacklisted."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_98c28c84","line":12,"range":{"start_line":10,"start_character":24,"end_line":12,"end_character":20},"in_reply_to":"7faddb67_83423f0e","updated":"2019-08-05 16:50:54.000000000","message":"Done","commit_id":"368eb7a41c69472510c8bb7e4a5d6046e16d8120"},{"author":{"_account_id":17887,"name":"Doug Schveninger","email":"ds6901@att.com","username":"Doug.Schveninger"},"change_message_id":"24b9843e23d1da3e9d450b3e827e79766ee6a0c4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"of tempest using tox virtual environment automation. The following is a basic example"},{"line_number":22,"context_line":"of using tox.ini to automate tempest testing."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":". code-block:: example tox.ini file"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    [tox]"},{"line_number":27,"context_line":"    minversion \u003d 3.4"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_1270df07","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":2},"updated":"2019-08-02 01:29:56.000000000","message":"missing . needs .. before code-block","commit_id":"368eb7a41c69472510c8bb7e4a5d6046e16d8120"},{"author":{"_account_id":29585,"name":"Jeremy Houser","email":"jeremyhouser@protonmail.com","username":"jh629g"},"change_message_id":"3506ef47d2d93b02a435d640ca66038f5a7d3c73","unresolved":false,"context_lines":[{"line_number":21,"context_line":"of tempest using tox virtual environment automation. The following is a basic example"},{"line_number":22,"context_line":"of using tox.ini to automate tempest testing."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":". code-block:: example tox.ini file"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    [tox]"},{"line_number":27,"context_line":"    minversion \u003d 3.4"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_38bd9801","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":2},"in_reply_to":"7faddb67_1270df07","updated":"2019-08-05 16:50:54.000000000","message":"Done, thanks!","commit_id":"368eb7a41c69472510c8bb7e4a5d6046e16d8120"},{"author":{"_account_id":17887,"name":"Doug Schveninger","email":"ds6901@att.com","username":"Doug.Schveninger"},"change_message_id":"24b9843e23d1da3e9d450b3e827e79766ee6a0c4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"the use of Zuul here is very simple, relying on pre-existing project templates"},{"line_number":68,"context_line":"written as part of OpenDev infrastructure."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":". code-block:: example .zuul.yaml file"},{"line_number":71,"context_line":"    - project:"},{"line_number":72,"context_line":"        name: \u003cdirectory of project\u003e/\u003cname of your plugin\u003e-tempest-plugin"},{"line_number":73,"context_line":"        check: # this list defines what will vrun when a patchset is committed"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_d267a74c","line":70,"updated":"2019-08-02 01:29:56.000000000","message":"miss . need .. code-block","commit_id":"368eb7a41c69472510c8bb7e4a5d6046e16d8120"},{"author":{"_account_id":29585,"name":"Jeremy Houser","email":"jeremyhouser@protonmail.com","username":"jh629g"},"change_message_id":"baea9cd8fd3d7d40462794965c671d86e9d1572d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"the use of Zuul here is very simple, relying on pre-existing project templates"},{"line_number":68,"context_line":"written as part of OpenDev infrastructure."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":". code-block:: example .zuul.yaml file"},{"line_number":71,"context_line":"    - project:"},{"line_number":72,"context_line":"        name: \u003cdirectory of project\u003e/\u003cname of your plugin\u003e-tempest-plugin"},{"line_number":73,"context_line":"        check: # this list defines what will vrun when a patchset is committed"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_adfba176","line":70,"in_reply_to":"7faddb67_d267a74c","updated":"2019-08-05 16:50:03.000000000","message":"Done","commit_id":"368eb7a41c69472510c8bb7e4a5d6046e16d8120"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"33221a8181d1d56e19aac4cc9201ad2a23ea27d6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Tempest Sanity Testing"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"All tempest plugins are ran through a voting gate named tempest-tox-plugin-sanity-check."},{"line_number":8,"context_line":"This does a minimal install of each tempest plugin, moves into the top-level directory of"},{"line_number":9,"context_line":"each, and runs the command \"tempest run -l\" to ensure that the basic features of your plugin"},{"line_number":10,"context_line":"cooperate with tempest. If you do not pass this gate after your plugin is established,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_42409ea5","line":7,"range":{"start_line":7,"start_character":24,"end_line":7,"end_character":27},"updated":"2019-08-05 18:14:01.000000000","message":"run","commit_id":"3393c38852bebfed07e82e86d02a93f0bde3cfd0"},{"author":{"_account_id":29585,"name":"Jeremy Houser","email":"jeremyhouser@protonmail.com","username":"jh629g"},"change_message_id":"a18289f7000fb5ae78c7e4103d618711e6826836","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Tempest Sanity Testing"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"All tempest plugins are ran through a voting gate named tempest-tox-plugin-sanity-check."},{"line_number":8,"context_line":"This does a minimal install of each tempest plugin, moves into the top-level directory of"},{"line_number":9,"context_line":"each, and runs the command \"tempest run -l\" to ensure that the basic features of your plugin"},{"line_number":10,"context_line":"cooperate with tempest. If you do not pass this gate after your plugin is established,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_826a16ea","line":7,"range":{"start_line":7,"start_character":24,"end_line":7,"end_character":27},"in_reply_to":"7faddb67_42409ea5","updated":"2019-08-05 19:49:44.000000000","message":"Sure","commit_id":"3393c38852bebfed07e82e86d02a93f0bde3cfd0"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"33221a8181d1d56e19aac4cc9201ad2a23ea27d6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"All tempest plugins are ran through a voting gate named tempest-tox-plugin-sanity-check."},{"line_number":8,"context_line":"This does a minimal install of each tempest plugin, moves into the top-level directory of"},{"line_number":9,"context_line":"each, and runs the command \"tempest run -l\" to ensure that the basic features of your plugin"},{"line_number":10,"context_line":"cooperate with tempest. If you do not pass this gate after your plugin is established,"},{"line_number":11,"context_line":"you will be blacklisted from this check in tools/generate-tempest-plugins-list.py within"},{"line_number":12,"context_line":"tempest. You can find a list `here`_ which shows currently black-listed plugins."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_024626c1","line":9,"range":{"start_line":9,"start_character":15,"end_line":9,"end_character":43},"updated":"2019-08-05 18:14:01.000000000","message":"`a sanity-check script`_\n\n.. _a sanity check-script: https://github.com/openstack/tempest/blob/master/tools/tempest-plugin-sanity.sh","commit_id":"3393c38852bebfed07e82e86d02a93f0bde3cfd0"},{"author":{"_account_id":29585,"name":"Jeremy Houser","email":"jeremyhouser@protonmail.com","username":"jh629g"},"change_message_id":"a18289f7000fb5ae78c7e4103d618711e6826836","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"All tempest plugins are ran through a voting gate named tempest-tox-plugin-sanity-check."},{"line_number":8,"context_line":"This does a minimal install of each tempest plugin, moves into the top-level directory of"},{"line_number":9,"context_line":"each, and runs the command \"tempest run -l\" to ensure that the basic features of your plugin"},{"line_number":10,"context_line":"cooperate with tempest. If you do not pass this gate after your plugin is established,"},{"line_number":11,"context_line":"you will be blacklisted from this check in tools/generate-tempest-plugins-list.py within"},{"line_number":12,"context_line":"tempest. You can find a list `here`_ which shows currently black-listed plugins."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_02570628","line":9,"range":{"start_line":9,"start_character":15,"end_line":9,"end_character":43},"in_reply_to":"7faddb67_024626c1","updated":"2019-08-05 19:49:44.000000000","message":"Done","commit_id":"3393c38852bebfed07e82e86d02a93f0bde3cfd0"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"df91544331282d18f24b7d69002c782fc0decdb0","unresolved":false,"context_lines":[{"line_number":27,"context_line":"of tempest using tox virtual environment automation. The following is a basic example"},{"line_number":28,"context_line":"of using tox.ini to automate tempest testing."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":".. code-block:: tox.ini"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    [tox]"},{"line_number":33,"context_line":"    minversion \u003d 3.4"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_b1b8be74","line":30,"range":{"start_line":30,"start_character":16,"end_line":30,"end_character":23},"updated":"2019-08-06 01:25:26.000000000","message":"It looks this doesn\u0027t work.\n\nhttps://logs.opendev.org/21/674121/5/check/openstack-tox-docs/dd7ee6c/job-output.txt.gz#_2019-08-05_17_12_06_479107\n\n\n2019-08-05 17:12:06.479107 | ubuntu-bionic | Warning, treated as error:\n2019-08-05 17:12:06.479310 | ubuntu-bionic | /home/zuul/src/opendev.org/openstack/tempest/doc/source/tempest_sanity_testing.rst:30:Pygments lexer name \u0027tox.ini\u0027 is not known\n2019-08-05 17:12:06.690380 | ubuntu-bionic | ERROR: InvocationError for command /home/zuul/src/opendev.org/openstack/tempest/.tox/docs/bin/sphinx-build -W -b html doc/source doc/build/html (exited with code 2)","commit_id":"3393c38852bebfed07e82e86d02a93f0bde3cfd0"},{"author":{"_account_id":17887,"name":"Doug Schveninger","email":"ds6901@att.com","username":"Doug.Schveninger"},"change_message_id":"278d349fd44220e91e6bd3d400fd996bd659a5ac","unresolved":false,"context_lines":[{"line_number":27,"context_line":"of tempest using tox virtual environment automation. The following is a basic example"},{"line_number":28,"context_line":"of using tox.ini to automate tempest testing."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":".. code-block:: tox.ini"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    [tox]"},{"line_number":33,"context_line":"    minversion \u003d 3.4"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_fc884d71","line":30,"range":{"start_line":30,"start_character":16,"end_line":30,"end_character":23},"in_reply_to":"7faddb67_b1b8be74","updated":"2019-08-06 02:02:17.000000000","message":"per https://www.sphinx-doc.org/en/1.5/markup/code.html#directive-code-block\nit is language\n\nmaybe try ini","commit_id":"3393c38852bebfed07e82e86d02a93f0bde3cfd0"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"33221a8181d1d56e19aac4cc9201ad2a23ea27d6","unresolved":false,"context_lines":[{"line_number":20,"context_line":".. _here: https://docs.openstack.org/tempest/latest/plugin-registry.html#blacklisted-plugins"},{"line_number":21,"context_line":".. _tempest-plugin-cookiecutter: https://opendev.org/openstack/tempest-plugin-cookiecutter"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Automating with Tox"},{"line_number":24,"context_line":"-------------------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The first step towards creating your sanity testing check/gate is to automate the running"},{"line_number":27,"context_line":"of tempest using tox virtual environment automation. The following is a basic example"},{"line_number":28,"context_line":"of using tox.ini to automate tempest testing."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":".. code-block:: tox.ini"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    [tox]"},{"line_number":33,"context_line":"    minversion \u003d 3.4"},{"line_number":34,"context_line":"    envlist \u003d tempest-sanity"},{"line_number":35,"context_line":"    skipdist \u003d True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    [testenv]"},{"line_number":39,"context_line":"    usedevelop \u003d True"},{"line_number":40,"context_line":"    install_command \u003d pip install {opts} {packages}"},{"line_number":41,"context_line":"    setenv \u003d"},{"line_number":42,"context_line":"      VIRTUAL_ENV\u003d{envdir}"},{"line_number":43,"context_line":"    commands \u003d"},{"line_number":44,"context_line":"      find . -type f -name \"*.pyc\" -delete"},{"line_number":45,"context_line":"    whitelist_externals \u003d"},{"line_number":46,"context_line":"      find"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    [testenv:venv]"},{"line_number":50,"context_line":"    commands \u003d {posargs}"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    # Tempest sanity check"},{"line_number":53,"context_line":"    [testenv:tempest-sanity]"},{"line_number":54,"context_line":"    description \u003d tempest run -l as sanity check"},{"line_number":55,"context_line":"    sitepackages \u003d True"},{"line_number":56,"context_line":"    basepython \u003d python"},{"line_number":57,"context_line":"    deps \u003d -r requirements.txt"},{"line_number":58,"context_line":"    commands \u003d"},{"line_number":59,"context_line":"      stestr init"},{"line_number":60,"context_line":"      tempest run -l"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Automating with Zuul"},{"line_number":63,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_a235d246","line":60,"range":{"start_line":23,"start_character":0,"end_line":60,"end_character":20},"updated":"2019-08-05 18:14:01.000000000","message":"It would be more authoritative and consistent to simply leverage Tempest\u0027s own sanity check plugin here: https://github.com/openstack/tempest/blob/0a0f5c6e0bd7ee159247b1e432d3d2ca5b5236b4/tools/tempest-plugin-sanity.sh#L103\n\nIt may even be possible to modify this script to take in a project name and sanity check just that one project - otherwise sanity check all known projects.\n\nIt\u0027s my personal opinion that putting in a sanity check tox job in the Tempest plugin itself is out of place, because the plugin should be actively gating Tempest to ensure that only does it 1) install itself properly but 2) execute its test suite successfully.\n\nTempest should be doing the sanity check on behalf of other projects to maintain a registry of active/broken plugins to provide guidance to the community.","commit_id":"3393c38852bebfed07e82e86d02a93f0bde3cfd0"},{"author":{"_account_id":29585,"name":"Jeremy Houser","email":"jeremyhouser@protonmail.com","username":"jh629g"},"change_message_id":"a18289f7000fb5ae78c7e4103d618711e6826836","unresolved":false,"context_lines":[{"line_number":20,"context_line":".. _here: https://docs.openstack.org/tempest/latest/plugin-registry.html#blacklisted-plugins"},{"line_number":21,"context_line":".. _tempest-plugin-cookiecutter: https://opendev.org/openstack/tempest-plugin-cookiecutter"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Automating with Tox"},{"line_number":24,"context_line":"-------------------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The first step towards creating your sanity testing check/gate is to automate the running"},{"line_number":27,"context_line":"of tempest using tox virtual environment automation. The following is a basic example"},{"line_number":28,"context_line":"of using tox.ini to automate tempest testing."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":".. code-block:: tox.ini"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    [tox]"},{"line_number":33,"context_line":"    minversion \u003d 3.4"},{"line_number":34,"context_line":"    envlist \u003d tempest-sanity"},{"line_number":35,"context_line":"    skipdist \u003d True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    [testenv]"},{"line_number":39,"context_line":"    usedevelop \u003d True"},{"line_number":40,"context_line":"    install_command \u003d pip install {opts} {packages}"},{"line_number":41,"context_line":"    setenv \u003d"},{"line_number":42,"context_line":"      VIRTUAL_ENV\u003d{envdir}"},{"line_number":43,"context_line":"    commands \u003d"},{"line_number":44,"context_line":"      find . -type f -name \"*.pyc\" -delete"},{"line_number":45,"context_line":"    whitelist_externals \u003d"},{"line_number":46,"context_line":"      find"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    [testenv:venv]"},{"line_number":50,"context_line":"    commands \u003d {posargs}"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    # Tempest sanity check"},{"line_number":53,"context_line":"    [testenv:tempest-sanity]"},{"line_number":54,"context_line":"    description \u003d tempest run -l as sanity check"},{"line_number":55,"context_line":"    sitepackages \u003d True"},{"line_number":56,"context_line":"    basepython \u003d python"},{"line_number":57,"context_line":"    deps \u003d -r requirements.txt"},{"line_number":58,"context_line":"    commands \u003d"},{"line_number":59,"context_line":"      stestr init"},{"line_number":60,"context_line":"      tempest run -l"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Automating with Zuul"},{"line_number":63,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_08c72766","line":60,"range":{"start_line":23,"start_character":0,"end_line":60,"end_character":20},"in_reply_to":"7faddb67_a235d246","updated":"2019-08-05 19:49:44.000000000","message":"1) only in the case that point two is satisfied would that be an acceptable alternative.\n\n2) Sure, if it is modified in this way that would be an alright alternative. Complicating the process for the sake of complication like this seems extremely counter-intuitive and time-consuming.\n\n3) I see no reason why this also cant happen when changes are made to the plugin project.\n\n4) Sure. Both are perfectly fine to exist at the same time.","commit_id":"3393c38852bebfed07e82e86d02a93f0bde3cfd0"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"33221a8181d1d56e19aac4cc9201ad2a23ea27d6","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Automating with Zuul"},{"line_number":63,"context_line":"--------------------"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"After you\u0027ve completed the above step, the next step is to write a .zuul.yaml. This"},{"line_number":66,"context_line":"file serves to hook your tox.ini and turn it into a check and/or gate which will be"},{"line_number":67,"context_line":"ran by `Zuul`_, a project gating continuous intigration software."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":".. _Zuul: https://zuul-ci.org/docs/zuul/"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"A .zuul.yaml can look like the following. The features of zuul are plentiful, but"},{"line_number":73,"context_line":"the use of Zuul here is very simple, relying on pre-existing project templates"},{"line_number":74,"context_line":"written as part of OpenDev infrastructure."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":".. code-block:: .zuul.yaml"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    - project:"},{"line_number":79,"context_line":"        name: \u003cdirectory of project\u003e/\u003cname of your plugin\u003e-tempest-plugin"},{"line_number":80,"context_line":"        check: # this list defines what will vrun when a patchset is committed"},{"line_number":81,"context_line":"          jobs:"},{"line_number":82,"context_line":"            - ranger-tempest-sanity"},{"line_number":83,"context_line":"        gate: # this list defines what will run before a patchset can merge"},{"line_number":84,"context_line":"          jobs:"},{"line_number":85,"context_line":"            - ranger-tempest-sanity"},{"line_number":86,"context_line":"    - job: # this defines the job listed above if it is a custom job"},{"line_number":87,"context_line":"        name: ranger-tempest-sanity"},{"line_number":88,"context_line":"        parent: openstack-tox # this parent job creates the basic env for running tox"},{"line_number":89,"context_line":"        voting: true # this determines if this job will cause zuul to give -1 if the job fails"},{"line_number":90,"context_line":"        timeout: 1800 # in case of a freeze, this will terminate the job after x seconds expires"},{"line_number":91,"context_line":"        vars:"},{"line_number":92,"context_line":"          tox_envlist: \u0027tempest-sanity\u0027 # this refers to the environment defined in tox.ini"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"It is highly recommended that you perform these steps when you create a new tempest plugin."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_c2900e46","line":92,"range":{"start_line":65,"start_character":0,"end_line":92,"end_character":91},"updated":"2019-08-05 18:14:01.000000000","message":"While this is very helpful, I think a reference to the Zuul documentation will be more authoritative: https://zuul-ci.org/docs/zuul/user/config.html","commit_id":"3393c38852bebfed07e82e86d02a93f0bde3cfd0"}]}
