Skip to content

chore(ci): pin all external actions to commit SHAs (PLATL-406) #1

chore(ci): pin all external actions to commit SHAs (PLATL-406)

chore(ci): pin all external actions to commit SHAs (PLATL-406) #1

name: Continuous Integration
on:
push:
branches:
- master
tags:
- "*"
pull_request:
# SECRETS
# - PYPI_TOKEN: publishing token for tmbo account, needs to be maintainer of
# tmbo/questionary on pypi
jobs:
quality:
name: Code Quality
runs-on: ubuntu-latest
steps:
- name: Checkout git repository 🕝
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- name: Set up Python 3.11 🐍
uses: actions/setup-python@7f4fc3e22c37d6ff65e88745f38bd3157c663f7c # v4
with:
python-version: "3.11"
- name: Install poetry 🦄
uses: Gr1N/setup-poetry@15821dc8a61bc630db542ae4baf6a7c19a994844 # v8
- name: Load Poetry Cached Libraries ⬇
uses: actions/cache@6f8efc29b200d32929f49075959781ed54ec270c # v3
with:
path: ~/.cache/pypoetry
key: ${{ runner.os }}-poetry-${{ hashFiles('**/poetry.lock') }}
restore-keys: ${{ runner.os }}-poetry-
- name: Install dependencies 🖥
run: poetry install --no-interaction
- name: Lint Code 🎎
run: make lint
- name: Check Types 📚
run: make types
- name: Check Version Numbers 🕸
run: poetry run python scripts/validate_version.py
test:
name: Run Tests
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.8", "3.9", "3.10", "3.11"]
promttoolkit: [3.*, 2.*]
include:
- promttoolkit: 3.0.29
os: ubuntu-latest
- promttoolkit: 3.0.19
os: ubuntu-latest
steps:
- name: Checkout git repository 🕝
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- name: Set up Python ${{ matrix.python-version }} 🐍
uses: actions/setup-python@7f4fc3e22c37d6ff65e88745f38bd3157c663f7c # v4
with:
python-version: ${{ matrix.python-version }}
- name: Install poetry 🦄
uses: Gr1N/setup-poetry@15821dc8a61bc630db542ae4baf6a7c19a994844 # v8
- name: Load Poetry Cached Libraries ⬇
uses: actions/cache@6f8efc29b200d32929f49075959781ed54ec270c # v3
with:
path: ~/.cache/pypoetry
key: ${{ runner.os }}-poetry-${{ hashFiles('**/poetry.lock') }}
restore-keys: ${{ runner.os }}-poetry-
- name: Install dependencies 🖥
run: |
poetry install --no-interaction
poetry run pip install prompt_toolkit==${{ matrix.promttoolkit }}
- name: Test Code 🔍
run: make test
- name: Send Coverage Report 📊
env:
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_SERVICE_NAME: github
COVERALLS_PARALLEL: true
run: poetry run coveralls
post-test:
name: Signal test completion
needs: test
runs-on: ubuntu-latest
container: python:3-slim
steps:
- name: Finished
run: |
pip3 install --upgrade coveralls
coveralls --service=github --finish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
docs:
name: Test Docs
runs-on: ubuntu-latest
steps:
- name: Checkout git repository 🕝
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- name: Set up Python 3.11 🐍
uses: actions/setup-python@7f4fc3e22c37d6ff65e88745f38bd3157c663f7c # v4
with:
python-version: "3.11"
- name: Install poetry 🦄
uses: Gr1N/setup-poetry@15821dc8a61bc630db542ae4baf6a7c19a994844 # v8
- name: Load Poetry Cached Libraries ⬇
uses: actions/cache@6f8efc29b200d32929f49075959781ed54ec270c # v3
with:
path: ~/.cache/pypoetry
key: ${{ runner.os }}-poetry-${{ hashFiles('**/poetry.lock') }}
restore-keys: ${{ runner.os }}-poetry
- name: Install dependencies 🖥
run: poetry install --no-interaction --with=docs
- name: Build docs ⚒️
run: make docs
deploy:
name: Deploy to PyPI
runs-on: ubuntu-latest
# deploy will only be run when there is a tag available
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
needs: [quality, test, docs] # only run after all other stages succeeded
steps:
- name: Checkout git repository 🕝
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
- name: Set up Python 3.11 🐍
uses: actions/setup-python@7f4fc3e22c37d6ff65e88745f38bd3157c663f7c # v4
with:
python-version: "3.11"
- name: Install poetry 🦄
uses: Gr1N/setup-poetry@15821dc8a61bc630db542ae4baf6a7c19a994844 # v8
- name: Build ⚒️ Distributions
run: |
poetry build
poetry publish -u __token__ -p ${{ secrets.PYPI_TOKEN }}