From ccb5f6184502dbc2ebdf05e05e46eee2a2d675ad Mon Sep 17 00:00:00 2001 From: John Chilton Date: Thu, 26 Oct 2017 14:56:34 -0400 Subject: [PATCH] Absolute pins on linting dependencies. - Use completely pinned and hashed dependencies for more consistent, reproducible linting. - Leverage the awesomeness of pipenv to automate updating these. - These will always be locked now so builds don't break randomly on other people updating their software. When we finally have the bot up and running that forward merges fixes for Galaxy we can add another if statement that runs this check against dev once a day and opens a PR if needed. --- .ci/tox_envs/flake8/Pipfile | 14 +++++++++ .ci/tox_envs/flake8/requirements.txt | 6 ++++ .ci/tox_envs/flake8_imports/Pipfile | 15 ++++++++++ .ci/tox_envs/flake8_imports/requirements.txt | 7 +++++ .ci/tox_envs/update.sh | 14 +++++++++ Makefile | 3 ++ scripts/bootstrap_history.py | 1 - tox.ini | 30 ++++++-------------- 8 files changed, 68 insertions(+), 22 deletions(-) create mode 100644 .ci/tox_envs/flake8/Pipfile create mode 100644 .ci/tox_envs/flake8/requirements.txt create mode 100644 .ci/tox_envs/flake8_imports/Pipfile create mode 100644 .ci/tox_envs/flake8_imports/requirements.txt create mode 100755 .ci/tox_envs/update.sh diff --git a/.ci/tox_envs/flake8/Pipfile b/.ci/tox_envs/flake8/Pipfile new file mode 100644 index 00000000000..1799cac56fd --- /dev/null +++ b/.ci/tox_envs/flake8/Pipfile @@ -0,0 +1,14 @@ +[[source]] + +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + + +[dev-packages] + + + +[packages] + +"flake8" = "*" \ No newline at end of file diff --git a/.ci/tox_envs/flake8/requirements.txt b/.ci/tox_envs/flake8/requirements.txt new file mode 100644 index 00000000000..12e76601cc6 --- /dev/null +++ b/.ci/tox_envs/flake8/requirements.txt @@ -0,0 +1,6 @@ +mccabe==0.6.1 --hash=sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42 --hash=sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f +pycodestyle==2.3.1 --hash=sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9 --hash=sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766 +pyflakes==1.6.0 --hash=sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f --hash=sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805 +enum34==1.1.6; python_version < '3.4' --hash=sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79 --hash=sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a --hash=sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1 --hash=sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850 +flake8==3.5.0 --hash=sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37 --hash=sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0 +configparser==3.5.0; python_version < '3.2' --hash=sha256:5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a diff --git a/.ci/tox_envs/flake8_imports/Pipfile b/.ci/tox_envs/flake8_imports/Pipfile new file mode 100644 index 00000000000..479069f0784 --- /dev/null +++ b/.ci/tox_envs/flake8_imports/Pipfile @@ -0,0 +1,15 @@ +[[source]] + +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + + +[dev-packages] + + + +[packages] + +"flake8" = "*" +"flake8-import-order" = "*" \ No newline at end of file diff --git a/.ci/tox_envs/flake8_imports/requirements.txt b/.ci/tox_envs/flake8_imports/requirements.txt new file mode 100644 index 00000000000..e5bcbe56858 --- /dev/null +++ b/.ci/tox_envs/flake8_imports/requirements.txt @@ -0,0 +1,7 @@ +mccabe==0.6.1 --hash=sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42 --hash=sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f +pycodestyle==2.3.1 --hash=sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9 --hash=sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766 +pyflakes==1.6.0 --hash=sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f --hash=sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805 +enum34==1.1.6; python_version < '3.4' --hash=sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79 --hash=sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a --hash=sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1 --hash=sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850 +flake8-import-order==0.14 --hash=sha256:69aa93a5bdb526310a0bd994e3603122673d1103d8063d3505e45118005044b3 --hash=sha256:77271feabb17d7cc286e9156531bb94781fdf2bbc1690e2fd6fa2776580b2209 +flake8==3.5.0 --hash=sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37 --hash=sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0 +configparser==3.5.0; python_version < '3.2' --hash=sha256:5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a diff --git a/.ci/tox_envs/update.sh b/.ci/tox_envs/update.sh new file mode 100755 index 00000000000..f3ad89588f8 --- /dev/null +++ b/.ci/tox_envs/update.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +THIS_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +ENVS=(flake8 flake8_imports) + +for env in "${ENVS[@]}" +do + cd "$THIS_DIRECTORY/$env" + pipenv lock + pipenv lock -r > requirements.txt +done + +git add -u "$THIS_DIRECTORY" +git commit -m "Rev and re-lock linting dependencies." diff --git a/Makefile b/Makefile index 4c49289d23a..7031b448297 100644 --- a/Makefile +++ b/Makefile @@ -119,6 +119,9 @@ release-check-blocking-prs: ## Check github for release blocking PRs release-bootstrap-history: ## bootstrap history for a new release $(IN_VENV) python scripts/bootstrap_history.py --release $(RELEASE_CURR) +update-linting-requirements: ## update linting dependencies + sh .ci/tox_envs/update.sh + node-deps: ## Install NodeJS dependencies. cd client && yarn install --check-files diff --git a/scripts/bootstrap_history.py b/scripts/bootstrap_history.py index 49c1bfaad57..7b3faa92731 100644 --- a/scripts/bootstrap_history.py +++ b/scripts/bootstrap_history.py @@ -160,7 +160,6 @@ RELEASE_ISSUE_TEMPLATE = string.Template(""" make release-create-rc RELEASE_CURR=${version} RELEASE_NEXT=${next_version} - [ ] Open PRs from your fork of branch ``version-${version}`` to upstream ``release_${version}`` and of ``version-${next_version}.dev`` to ``dev``. - - [ ] Open PR against ``release_${version}`` branch to pin flake8 deps in tox.ini to the latest available version. See [example](https://github.com/galaxyproject/galaxy/pull/3476). - [ ] Update ``next_milestone`` in [P4's configuration](https://github.com/galaxyproject/p4) to `${next_version}` so it properly tags new PRs. - [ ] Set the ``release_${version}`` branch in GitHub [settings](https://github.com/galaxyproject/galaxy/settings/branches) as protected. diff --git a/tox.ini b/tox.ini index 1798790aaa6..0c22801b794 100644 --- a/tox.ini +++ b/tox.ini @@ -5,25 +5,23 @@ skipsdist = True [testenv:py27-lint] commands = bash .ci/flake8_wrapper.sh whitelist_externals = bash -deps = - flake8>=3.4.1 - flake8-docstrings>=1.1.0 - pydocstyle>=2.1.1 +deps = -r.ci/tox_envs/flake8/requirements.txt [testenv:py33-lint] commands = bash .ci/flake8_wrapper.sh whitelist_externals = bash -deps = flake8>=3.4.1 +deps = -r.ci/tox_envs/flake8/requirements.txt + [testenv:py34-lint] commands = bash .ci/flake8_wrapper.sh whitelist_externals = bash -deps = flake8>=3.4.1 +deps = -r.ci/tox_envs/flake8/requirements.txt [testenv:py35-lint] commands = bash .ci/flake8_wrapper.sh whitelist_externals = bash -deps = flake8>=3.4.1 +deps = -r.ci/tox_envs/flake8/requirements.txt [testenv:py27-unit] commands = bash run_tests.sh --no-create-venv -u @@ -43,17 +41,13 @@ deps = commands = bash .ci/flake8_wrapper.sh whitelist_externals = bash skip_install = True -deps = - flake8>=3.4.1 - flake8-import-order>=0.14 +deps = -r.ci/tox_envs/flake8_imports/requirements.txt [testenv:py27-lint-imports-include-list] commands = bash .ci/flake8_wrapper_imports.sh whitelist_externals = bash skip_install = True -deps = - flake8>=3.4.1 - flake8-import-order>=0.14 +deps = -r.ci/tox_envs/flake8_imports/requirements.txt [testenv:qunit] commands = bash run_tests.sh -q @@ -79,19 +73,13 @@ whitelist_externals = bash commands = bash .ci/flake8_wrapper_docstrings.sh --exclude whitelist_externals = bash skip_install = True -deps = - flake8>=3.4.1 - flake8-docstrings>=1.1.0 - pydocstyle>=2.1.1 +deps = -r.ci/tox_envs/flake8/requirements.txt [testenv:py27-lint-docstring-include-list] commands = bash .ci/flake8_wrapper_docstrings.sh --include whitelist_externals = bash skip_install = True -deps = - flake8>=3.4.1 - flake8-docstrings>=1.1.0 - pydocstyle>=2.1.1 +deps = -r.ci/tox_envs/flake8/requirements.txt [testenv:check-python-dependencies] commands = make list-dependency-updates # someday change exit code on this.