X-Git-Url: https://git.phdru.name/?p=cookiecutter.git;a=blobdiff_plain;f=project_template%2F.github%2Fworkflows%2Ftest-publish.yaml;fp=project_template%2F.github%2Fworkflows%2Ftest-publish.yaml;h=5242df79e87329da66a7d1e185562516992641db;hp=0000000000000000000000000000000000000000;hb=8b1ec1591c7f86b93b75c49df1e63b12c519b812;hpb=d1f19d1f19ef79d39a87eefb1de55ced87d46ab1 diff --git a/project_template/.github/workflows/test-publish.yaml b/project_template/.github/workflows/test-publish.yaml new file mode 100644 index 0000000..5242df7 --- /dev/null +++ b/project_template/.github/workflows/test-publish.yaml @@ -0,0 +1,77 @@ +name: Test, build, publish + +# Run tests (all branches), +# for tags build wheels, publish wheels to PyPI. + +on: [push, pull_request] + +jobs: + run-tests: + + strategy: + matrix: + os: [ubuntu-latest, macos-11, windows-latest] + python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "pypy-2.7", "pypy-3.7"] + include: + - os: ubuntu-latest + os-name: Linux + pip-cache-path: ~/.cache/pip + - os: macos-11 + os-name: MacOS + pip-cache-path: ~/Library/Caches/pip + - os: windows-latest + os-name: w32 + pip-cache-path: ~\AppData\Local\pip\Cache + + name: Python ${{ matrix.python-version }} @ ${{ matrix.os-name }} + runs-on: ${{ matrix.os }} + + steps: + + # Setup Python/pip + - uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Cache pip + uses: actions/cache@v3 + with: + path: ${{ matrix.pip-cache-path }} + key: ${{ runner.os }}-pip + + # Setup tox + - name: Install dependencies + run: | + python --version + python -m pip install --upgrade pip setuptools wheel + pip --version + pip install --upgrade virtualenv tox + - name: Set TOXENV + run: | + import os, sys + if hasattr(sys, 'pypy_version_info'): + toxenv = 'pypy' + else: + pyver = '%d%d' % tuple(sys.version_info[:2]) + toxenv = 'py%s' % pyver + if os.name == 'posix': + toxenv += ',py%s-flake8' % pyver + with open(os.environ['GITHUB_ENV'], 'a') as f: + f.write('TOXENV=' + toxenv + '\n') + print(toxenv) + shell: python + + - name: Run tox + run: | + python -c "import os; print(os.environ['TOXENV'])" + tox --version + tox + + - name: Build and publish wheel + run: | + pip install -U pip setuptools twine wheel + python setup.py bdist_wheel + twine upload --disable-progress-bar --skip-existing dist\* + if: ${{ startsWith(github.ref, 'refs/tags/') }} + env: + TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }} + TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}