Skip to content

Move more Travis jobs to GitHub Actions #705

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Oct 12, 2020
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v1
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
Expand Down
56 changes: 47 additions & 9 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,42 @@
name: Main

on: [push, pull_request]
on:
push:
pull_request:
schedule:
- cron: '0 0 * * *' # daily

jobs:

lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v1
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install tox
run: python -m pip install tox
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools wheel tox
- name: Run linting
run: python -m tox -e lint

types:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to make the types and docs jobs "Required" checks (along with lint and test)? They were implicitly required by Travis.

If so, I don't have permission to do that. Which of the @pypa/twine-maintainers does?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think they need to run on master before they can be made required?

strategy:
matrix:
python: [3.6, 3.7, 3.8]
Comment on lines +25 to +26
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This duplicates the test matrix. It'd be nice to specify it once, as well as the "latest Python" to use in the other jobs.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TIL about YAML anchors and aliases, which are supported by Travis, but not (yet) by GitHub Actions.

There's a discussion thread about how to share matrix between jobs, but the documented configuration seems more complex than it's worth.

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools wheel tox
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This "stanza" duplicated in all jobs, and I haven't looked into ways to DRY it out. There's an open feature request on the setup-python action.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- name: Run type-checking
run: python -m tox -e types

test:
strategy:
matrix:
Expand All @@ -24,12 +45,29 @@ jobs:
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v1
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: "Install dependencies"
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools wheel tox
- name: Run tests
run: python -m tox -e py # Run tox using the version of Python in `PATH`
run: python -m tox -e py -- --cov-report xml
- uses: codecov/codecov-action@v1
with:
file: ./coverage.xml
name: ${{ matrix.python }} - ${{ matrix.platform }}
fail_ci_if_error: true

docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools wheel tox
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add .github/actions/requirements.txt with these and run python -m pip install --upgrade -r .github/actions/requirements.txt instead? That way all of these are less duplicated? Helps when we move to something else and might be a decent pattern to upstream to the python action

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like that idea, but it got me thinking that it would be sufficient (if not preferred) to let tox manage the versions of pip, setuptools, and wheel, so in 7c65ce6 this has been reduced to pip install tox.

The output of pip list shows that the testenvs are using the latest versions, but if we want more control in the future, we can use the requires and download options in tox.ini (with the caveat that there's an open issue re: download = true.

- name: Build docs
run: python -m tox -e docs
26 changes: 1 addition & 25 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,27 +11,6 @@ matrix:

include:
- python: &latest_py3 3.8
- python: 3.7
- python: &oldest_py3 3.6

- python: 3.7
name: Linting code style
env:
TOXENV: lint

- python: *latest_py3
name: Checking type annotations (latest Python)
env:
TOXENV: types
- python: *oldest_py3
name: Checking type annotations (oldest Python)
env:
TOXENV: types

- python: 3.7
name: Making sure that docs build is healthy
env:
TOXENV: docs

- stage: deploy
if: tag IS present
Expand All @@ -41,10 +20,7 @@ matrix:
after_script: skip

install:
- pip install tox codecov
- pip install tox

script:
- tox

after_script:
- codecov --env TRAVIS_OS_NAME,TOXENV
4 changes: 2 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
.. image:: https://img.shields.io/readthedocs/twine
:target: https://twine.readthedocs.io

.. image:: https://img.shields.io/travis/com/pypa/twine
:target: https://travis-ci.com/github/pypa/twine
.. image:: https://img.shields.io/github/workflow/status/pypa/twine/Main
:target: https://github.com/pypa/twine/actions

.. image:: https://img.shields.io/codecov/c/github/pypa/twine
:target: https://codecov.io/gh/pypa/twine
Expand Down
13 changes: 6 additions & 7 deletions docs/contributing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,9 @@ To pass options to ``pytest``, e.g. the name of a test, run:

tox -e py -- tests/test_upload.py::test_exception_for_http_status

Twine is continuously tested against Python 3.6, 3.7, and 3.8 using `Travis`_.
To run the tests against a specific version, e.g. Python 3.6, you will need it
installed on your machine. Then, run:
Twine is continuously tested against Python 3.6, 3.7, and 3.8 using `GitHub
Actions`_. To run the tests against a specific version, e.g. Python 3.6, you
will need it installed on your machine. Then, run:

.. code-block:: console

Expand Down Expand Up @@ -183,9 +183,7 @@ Adding a maintainer

A checklist for adding a new maintainer to the project.

#. Add them as a Member in the GitHub repo settings. (This will also
give them privileges on the `Travis CI project
<https://travis-ci.com/github/pypa/twine>`_.)
#. Add them as a Member in the GitHub repo settings.
#. Get them Test PyPI and canon PyPI usernames and add them as a
Maintainer on `our Test PyPI project
<https://test.pypi.org/manage/project/twine/collaboration/>`_ and
Expand All @@ -202,7 +200,7 @@ A checklist for creating, testing, and distributing a new version.
#. Choose a version number, e.g. ``3.2.0``.
#. Add a ``:release:`` line to :file:`docs/changelog.rst`.
#. Commit and open a pull request for review.
#. Merge the pull request, and ensure the `Travis`_ build passes.
#. Merge the pull request, and ensure the `GitHub Actions`_ build passes.
#. Create a new git tag with ``git tag -m "Release v{version}" {version}``.
#. Push the new tag with ``git push upstream {version}``.
#. Watch the release in `Travis`_.
Expand All @@ -225,6 +223,7 @@ merge into a single tool; see `ongoing discussion
.. _`virtual environment`: https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/
.. _`tox`: https://tox.readthedocs.io/
.. _`pytest`: https://docs.pytest.org/
.. _`GitHub Actions`: https://github.com/pypa/twine/actions
.. _`Travis`: https://travis-ci.com/github/pypa/twine
.. _`isort`: https://timothycrosley.github.io/isort/
.. _`black`: https://black.readthedocs.io/
Expand Down
1 change: 0 additions & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ long_description = file:README.rst
url = https://twine.readthedocs.io/
project_urls =
Packaging tutorial = https://packaging.python.org/tutorials/distributing-packages/
Travis CI = https://travis-ci.com/github/pypa/twine
Twine documentation = https://twine.readthedocs.io/en/latest/
Twine source = https://github.com/pypa/twine/
classifiers =
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ deps =
passenv =
PYTEST_ADDOPTS
commands =
pytest --ignore-glob '*integration*.py' {posargs:--cov-report term-missing --cov-report html tests}
pytest --ignore-glob '*integration*.py' {posargs:--cov-report term-missing --cov-report html}

[testenv:integration]
deps =
Expand Down