Sleep longer during test builds (#167) #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
env: | |
POETRY_VERSION: "1.6.1" | |
PYTHON_VERSION: "3.12" | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- synchronize | |
- labeled | |
branches: | |
- main | |
jobs: | |
build-and-publish: | |
name: Publish test release | |
runs-on: ubuntu-latest | |
outputs: | |
build-version: ${{ steps.build.outputs.version }} | |
if: github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'test-build') | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: Set up Python ${{ env.PYTHON_VERSION }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "${{ env.PYTHON_VERSION }}" | |
- name: Set up Poetry | |
run: | | |
pip install poetry==${{ env.POETRY_VERSION }} | |
- name: Publish to Test PyPI | |
id: build | |
env: | |
POETRY_PYPI_TOKEN_TEST_PYPI: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
run: | | |
version=$(./scripts/version dev) | |
echo "version=$version" >> $GITHUB_OUTPUT | |
poetry version $version | |
poetry config repositories.test-pypi https://test.pypi.org/legacy/ | |
poetry publish --build -r test-pypi | |
test-install: | |
# We test the install on a clean machine to avoid poetry behavior attempting to | |
# install the project root when it is checked out | |
name: Test install | |
runs-on: ubuntu-latest | |
needs: build-and-publish | |
timeout-minutes: 5 | |
steps: | |
- name: Set up Python ${{ env.PYTHON_VERSION }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "${{ env.PYTHON_VERSION }}" | |
- name: Set up Poetry | |
run: | | |
pip install poetry==${{ env.POETRY_VERSION }} | |
poetry init --name 'test-project' --no-interaction | |
poetry source add test-pypi https://test.pypi.org/simple/ --priority=explicit | |
- name: Wait for package to be available | |
run: > | |
until | |
curl --silent "https://test.pypi.org/simple/packse/" | |
| grep --quiet "${{ needs.build-and-publish.outputs.build-version }}"; | |
do sleep 10; | |
done | |
&& | |
sleep 120 | |
# We sleep for an additional 120 seconds as it seems to take a bit longer for | |
# the package to be consistently available | |
# Note: The above will not sleep forever due to the job level timeout | |
- name: Install release from Test PyPI | |
run: > | |
poetry add | |
--source test-pypi | |
packse==${{ needs.build-and-publish.outputs.build-version }} | |
- name: Check release version | |
run: | | |
installed=$(poetry run python -c "import pkg_resources; print(pkg_resources.get_distribution('packse').version)") | |
test $installed = ${{ needs.build-and-publish.outputs.build-version }} | |
- name: Check CLI help | |
run: | | |
poetry run -- packse --help |