name: Test on: push: pull_request: workflow_dispatch: jobs: test_local: runs-on: ubuntu-18.04 strategy: matrix: python-version: [3.6, 3.7, 3.8, 3.9] name: 'Test: ${{ matrix.python-version }}' steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '${{ matrix.python-version }}' - name: Initialize Git run: | git config --global user.name 'John Doe' git config --global user.email 'John.Doe@example.com' - name: Test run: ./.ci/local/test.sh test_docker: runs-on: ubuntu-18.04 name: 'Test: Docker' steps: - name: Checkout uses: actions/checkout@v2 - name: Test run: ./.ci/docker/test.sh publish_docker: needs: [test_local, test_docker] runs-on: ubuntu-18.04 name: 'Publish: Docker Hub' if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')) steps: - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to Docker Hub uses: docker/login-action@v1 with: username: '${{ secrets.DOCKERHUB_USERNAME }}' password: '${{ secrets.DOCKERHUB_TOKEN }}' - name: Build and publish uses: docker/build-push-action@v2 with: platforms: linux/amd64,linux/armhf push: true tags: '${{ secrets.DOCKERHUB_USERNAME }}/cgitize:latest' publish_pypi: needs: [test_local, test_docker] runs-on: ubuntu-18.04 name: 'Publish: PyPI' steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: 3.6 - name: Verify package can be installed run: python3 -m pip install . - name: Install package builder run: python3 -m pip install --upgrade build - name: Build package run: python3 -m build - name: Publish as artifact uses: actions/upload-artifact@v2 with: name: dist path: dist if-no-files-found: error - name: Publish to PyPI if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ password: '${{ secrets.PYPI_API_TOKEN }}'