CI Testing #108
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: CI Testing | |
on: | |
push: | |
branches: [ main, devel, release ] | |
pull_request: | |
branches: [ main, devel, release ] | |
schedule: | |
- cron: "4 5 4 1/1 *" # Run monthly. | |
jobs: | |
cheap_checks: | |
runs-on: 'ubuntu-latest' | |
steps: | |
- uses: actions/checkout@v3 | |
# Python setup | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Debug Info | |
run: echo ${{ github.ref }} ${{ github.event_name }} ${{ endsWith(github.ref, 'heads/release') && (github.event_name == 'push') }} | |
# refs/heads/main push false is the output of the main branch when tagged with a release ... | |
- name: View Python --version | |
run: python --version | |
# Poetry Setup | |
- name: Python Poetry Action | |
uses: abatilo/[email protected] | |
with: | |
poetry-version: '1.2.2' | |
- name: View poetry --version | |
run: poetry --version | |
- name: Install Stuff | |
run: poetry install --no-root --only checks | |
- name: Black | |
run: poetry run black . --check --diff | |
- name: ruff | |
run: poetry run ruff . | |
- name: isort | |
run: poetry run isort . --check | |
ci: | |
needs: cheap_checks | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['3.10', '3.9'] | |
poetry-version: ['1.2.2',] | |
os: ['ubuntu-latest',] | |
runs-on: ${{ matrix.os }} | |
steps: | |
# Initial Setup | |
- uses: actions/checkout@v3 | |
# Documentation setup | |
- name: Setup Quarto | |
uses: quarto-dev/quarto-actions/setup@v2 | |
- name: View Quarto version | |
run: | |
quarto --version | |
# Python setup | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: View Python --version | |
run: python --version | |
# Poetry Setup | |
- name: Python Poetry Action | |
uses: abatilo/[email protected] | |
with: | |
poetry-version: ${{ matrix.poetry-version }} | |
- name: View poetry --version | |
run: poetry --version | |
# Package Setup | |
- name: Install deps | |
run: poetry install -n -v --with=plotting,dev,docs | |
# CI checks | |
- name: Pytest | |
run: poetry run python -m pytest | |
- name: mkdocs | |
run: poetry run python -m mkdocs build --strict | |
release: | |
# Run when there is a new push on the release branch | |
runs-on: 'ubuntu-latest' | |
needs: ci | |
if: endsWith(github.ref, 'heads/release') && (github.event_name == 'push') | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
# Documentation setup | |
- name: Setup Quarto | |
uses: quarto-dev/quarto-actions/setup@v2 | |
- name: View Quarto version | |
run: | |
quarto --version | |
# Python setup | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: View Python --version | |
run: python --version | |
# Poetry Setup | |
- name: Python Poetry Action | |
uses: abatilo/[email protected] | |
with: | |
poetry-version: '1.2.2' | |
- name: View poetry --version | |
run: poetry --version | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to the GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
# Package Setup | |
- name: Install deps | |
run: poetry install -n -v --all-extras | |
# Build | |
- name: Build package | |
run: | | |
poetry build | |
# Docker Setup | |
- name: Build Docker image | |
id: dockerbuild | |
run: | | |
docker build -t ghcr.io/jspaezp/elfragmentador:v$(poetry version -s) . | |
# Publish Docker | |
- name: Push the Docker image to the GHCR | |
id: ghcr_push | |
run: | | |
docker push ghcr.io/jspaezp/elfragmentador:v$(poetry version -s) | |
# Publishing Docs | |
- name: Deploy Docs | |
run: | | |
poetry run python -m mkdocs gh-deploy --strict --force | |
# Publish Package | |
- name: Publish Setup | |
env: | |
PYPITOKEN: ${{ secrets.PYPITOKEN }} | |
run: | | |
poetry config pypi-token.pypi ${PYPITOKEN} | |
- name: Publish | |
run: | | |
poetry publish --no-interaction |