name: Publishing on: workflow_dispatch: push: tags: - '*' jobs: tests: name: Run tests runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: 3.12 - run: pip install tox - run: tox env: TOXENV: 3.12 linters: name: Run linters runs-on: ubuntu-22.04 strategy: matrix: toxenv: [flake8, pydocstyle, mypy, pylint] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: 3.12 - run: pip install tox - run: tox env: TOXENV: ${{ matrix.toxenv }} build-sdist: name: Build source tarball needs: [tests, linters] runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: 3.12 - run: | python -m pip install --upgrade pip setuptools python setup.py sdist - uses: actions/upload-artifact@v3 with: path: ./dist/* build-wheels: name: Build wheels needs: [tests, linters] runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-22.04, windows-2019, macos-14] env: CIBW_SKIP: cp27-* cp313-* steps: - uses: actions/checkout@v3 - name: Build wheels uses: pypa/cibuildwheel@v2.20.0 - uses: actions/upload-artifact@v3 with: path: ./wheelhouse/*.whl build-wheels-linux-aarch64: name: Build wheels (ubuntu-22.04-aarch64) needs: [tests, linters] runs-on: ubuntu-22.04 env: CIBW_SKIP: cp27-* cp313-* steps: - uses: actions/checkout@v3 - name: Set up QEMU if: runner.os == 'Linux' uses: docker/setup-qemu-action@v2 - name: Build wheels uses: pypa/cibuildwheel@v2.20.0 env: CIBW_ARCHS_LINUX: aarch64 - uses: actions/upload-artifact@v3 with: path: ./wheelhouse/*.whl publish: name: Publish on PyPI needs: [build-sdist, build-wheels, build-wheels-linux-aarch64] runs-on: ubuntu-22.04 steps: - uses: actions/download-artifact@v3 with: name: artifact path: dist - uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ password: ${{ secrets.PYPI_API_TOKEN }} # For publishing to Test PyPI, uncomment next two lines: # password: ${{ secrets.TEST_PYPI_API_TOKEN }} # repository_url: https://test.pypi.org/legacy/ publish-docs: name: Publish docs needs: [publish] runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: 3.12 - run: pip install awscli - run: pip install -r requirements-doc.txt - 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 }}