name: Lint and upload source distribution on: push: branches: - main tags: - '**' pull_request: branches: - '**' jobs: upload_source_dist: name: Lint and Upload source distribution runs-on: [ubuntu-latest] timeout-minutes: 30 steps: - name: Cancel previous runs on the same branch if: ${{ github.ref != 'refs/heads/main' }} uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ github.token }} - name: Checkout Code uses: actions/checkout@v2 with: fetch-depth: 0 submodules: recursive - uses: actions/setup-python@v2 name: Install Python with: python-version: '3.8' - name: Test for secrets access id: check_secrets shell: bash run: | unset HAS_SECRET if [ -n "$SECRET" ]; then HAS_SECRET='true' ; fi echo ::set-output name=HAS_SECRET::${HAS_SECRET} env: SECRET: "${{ secrets.test_pypi_password }}" - name: Install lint requirements run: | python -m pip install --upgrade pip python -m pip install pytest flake8 mypy - name: Lint source with flake8 run: | flake8 chia tests - name: Lint source with mypy run: | mypy --exclude config.py tests mypy chia - name: Build source distribution run: | pip install build python -m build --sdist --outdir dist . - name: Upload artifacts uses: actions/upload-artifact@v2 with: name: dist path: ./dist - name: Install twine run: pip install twine - name: Publish distribution to Test PyPI if: steps.check_secrets.outputs.HAS_SECRET env: TWINE_REPOSITORY_URL: https://test.pypi.org/legacy/ TWINE_USERNAME: __token__ TWINE_NON_INTERACTIVE: 1 TWINE_PASSWORD: ${{ secrets.test_pypi_password }} run: twine upload --non-interactive --skip-existing --verbose 'dist/*' - name: Publish distribution to PyPI if: steps.check_secrets.outputs.HAS_SECRET && startsWith(github.event.ref, 'refs/tags') env: TWINE_USERNAME: __token__ TWINE_NON_INTERACTIVE: 1 TWINE_PASSWORD: ${{ secrets.pypi_password }} run: twine upload --non-interactive --skip-existing --verbose 'dist/*'