name: Publishing on: push: tags: - '*' jobs: tests: name: Run tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.9 - run: pip install tox - run: tox env: TOXENV: 3.9 linters: name: Run linters runs-on: ubuntu-latest strategy: matrix: toxenv: [flake8, pydocstyle, mypy, pylint] steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.9 - run: pip install tox - run: tox env: TOXENV: ${{ matrix.toxenv }} build-sdist: name: Build source tarball needs: [tests, linters] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.9 - run: python setup.py sdist - uses: actions/upload-artifact@v2 with: path: ./dist/* build-wheels: name: Build wheels needs: [tests, linters] runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.9 - run: pip install cibuildwheel==1.8.0 - name: Install Visual C++ for Python 2.7 on Windows if: runner.os == 'Windows' run: | choco install vcpython27 -f -y - run: cibuildwheel --output-dir wheelhouse - uses: actions/upload-artifact@v2 with: path: ./wheelhouse/*.whl build-wheels-linux-aarch64: name: Build wheels (ubuntu-latest-aarch64) needs: [tests, linters] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up QEMU uses: docker/setup-qemu-action@v1 - uses: actions/setup-python@v2 with: python-version: 3.9 - run: pip install cibuildwheel==1.8.0 - run: cibuildwheel --archs aarch64 --output-dir wheelhouse - uses: actions/upload-artifact@v2 with: path: ./wheelhouse/*.whl publish: name: Publish on PyPI needs: [build-sdist, build-wheels, build-wheels-linux-aarch64] runs-on: ubuntu-latest steps: - uses: actions/download-artifact@v2 with: name: artifact path: dist - uses: pypa/gh-action-pypi-publish@master with: user: __token__ password: ${{ secrets.PYPI_API_TOKEN }} publish-docs: name: Publish docs needs: [publish] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.9 - run: pip install -r requirements-doc.txt - run: pip install awscli - run: pip install -e . - run: (cd docs && make clean html) - run: | aws s3 sync docs/_build/html s3://python-dependency-injector-docs --delete aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION_ID }} --path "/*" > /dev/null echo "Cache invalidation triggered" env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}