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@v4 with: fetch-depth: 0 - uses: actions/setup-python@v5 name: Install Python with: python-version: "3.12" - 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/flox-999.tar.gz ]; then echo "❌ INVALID VERSION NUMBER" exit 1 else echo "✅ Looks good" fi - uses: actions/upload-artifact@v4 with: name: releases path: dist test-built-dist: needs: build-artifacts runs-on: ubuntu-latest steps: - uses: actions/setup-python@v5 name: Install Python with: python-version: "3.12" - uses: actions/download-artifact@v4 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/flox*.whl # python -m cf_xarray.scripts.print_versions # - 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