diff --git a/.github/workflows/testpypi-release.yaml b/.github/workflows/testpypi-release.yaml new file mode 100644 index 0000000..df382cf --- /dev/null +++ b/.github/workflows/testpypi-release.yaml @@ -0,0 +1,88 @@ +name: Build and Upload to TestPyPI + +on: + push: + branches: + - "main" + pull_request: + types: [opened, reopened, synchronize, labeled] + branches: + - "*" + workflow_dispatch: + +# no need for concurrency limits + +jobs: + build-artifacts: + if: ${{ contains( github.event.pull_request.labels.*.name, 'test-build') && github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - uses: actions/setup-python@v4 + name: Install Python + with: + python-version: "3.10" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install build twine + python -m pip install tomli tomli_w + + # - name: Disable local versions + # run: | + # python .github/workflows/configure-testpypi-version.py pyproject.toml + # git update-index --assume-unchanged pyproject.toml + # cat pyproject.toml + + - name: Build tarball and wheels + run: | + git clean -xdf + python -m build + + - name: Check built artifacts + run: | + python -m twine check --strict dist/* + if [ -f dist/py-cordex-0.0.0.tar.gz ]; then + echo "❌ INVALID VERSION NUMBER" + exit 1 + else + echo "✅ Looks good" + fi + + - uses: actions/upload-artifact@v3 + with: + name: releases + path: dist + + test-built-dist: + needs: build-artifacts + runs-on: ubuntu-latest + steps: + - uses: actions/setup-python@v4 + name: Install Python + with: + python-version: "3.10" + - uses: actions/download-artifact@v3 + with: + name: releases + path: dist + - name: List contents of built dist + run: | + ls -ltrh + ls -ltrh dist + + - name: Verify the built dist/wheel is valid + run: | + python -m pip install --upgrade pip + python -m pip install dist/py-cordex*.whl + + # - name: Publish package to TestPyPI + # uses: pypa/gh-action-pypi-publish@v1.6.4 + # with: + # password: ${{ secrets.TESTPYPI_TOKEN }} + # repository_url: https://test.pypi.org/legacy/ + # verbose: true