Skip to content

Bump version: 0.1.1 → 0.1.2 (#16) #40

Bump version: 0.1.1 → 0.1.2 (#16)

Bump version: 0.1.1 → 0.1.2 (#16) #40

Workflow file for this run

name: Build, test and publish
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build_and_test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ "3.8", "3.9", "3.10", "3.11" ]
steps:
- name: Install libegl1
run: sudo apt-get install -y libegl1
- name: Check out repository
uses: actions/checkout@v4
- name: Set up python
id: setup-python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root
- name: Install project
run: poetry install --no-interaction
- name: Lint with isort, black and flake8
run: |
poetry run isort visprompt
poetry run isort tests
poetry run black visprompt
poetry run black tests
poetry run flake8 visprompt
poetry run flake8 tests
continue-on-error: true
- name: Test with pytest
run: |
poetry run coverage erase
poetry run coverage run -a --source=./visprompt --branch -m pytest -s -v --black --isort tests --junit-xml=junit/test-results-${{ matrix.python-version }}.xml
poetry run coverage report
poetry run coverage xml
publish:
needs: build_and_test
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Check PR Title
id: check_title
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_TITLE="${{ github.event.pull_request.title }}"
echo "PR_TITLE: $PR_TITLE"
VERSION_PATTERN="^Bump version: [0-9]+\.[0-9]+\.[0-9]+ → [0-9]+\.[0-9]+\.[0-9]+$"
if [[ "$PR_TITLE" =~ $VERSION_PATTERN ]]; then
echo "Valid PR title for publishing."
echo "::set-output name=should_publish::true"
else
echo "PR title does not match the required format for publishing."
echo "::set-output name=should_publish::false"
fi
- name: Set up python
if: steps.check_title.outputs.should_publish == 'true'
id: setup-python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
if: steps.check_title.outputs.should_publish == 'true'
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true
- name: Load cached venv
if: steps.check_title.outputs.should_publish == 'true'
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ runner.os }}-3.x-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
if: steps.check_title.outputs.should_publish == 'true' && steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root
- name: Install project
if: steps.check_title.outputs.should_publish == 'true'
run: poetry install --no-interaction
- name: Publish to PyPI
if: steps.check_title.outputs.should_publish == 'true'
env:
PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
run: |
poetry config pypi-token.pypi ${{ secrets.PYPI_API_TOKEN }}
poetry publish --build