Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GitHub workflow init for pytest #17

Merged
merged 11 commits into from
Nov 1, 2023
9 changes: 5 additions & 4 deletions .github/workflows/hetzner-prd-workflow.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
name: hetzner production workflow

# Controls when the workflow will run
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows
on:
# Triggers the workflow on push events but only for the "develop" branch
push:
branches:
- develop

workflow_run:
workflows: ["Pytest report"]
types:
- completed

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

Expand Down
74 changes: 74 additions & 0 deletions .github/workflows/pytest-workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Pytest report

on: [push, pull_request]

permissions:
contents: read

jobs:
linter:
name: Black Syntax Check
runs-on: [self-hosted, "hetzner"]
steps:
- uses: actions/checkout@v3

- name: Install python3-venv package
run: sudo apt update && sudo apt install python3-venv -y

- name: Run Black
uses: psf/black@stable
with:
options: "--check --verbose"
src: "./src"

Build-Test:
name: Setup Enviornment and Run Tests
runs-on: [self-hosted, "hetzner"]
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: "3.11.6"

- name: Setup Docker Containers
run: |
make setup-detached

- name: Check API is Up
uses: cygnetdigital/[email protected]
with:
url: 'http://localhost:5000/docs'
responseCode: '200,500'
timeout: 120000 # wait up to 120 seconds
interval: 5000 # poll every 5 seconds

- name: Generate Pytest Report
run: |
make test-report

# https://github.com/marketplace/actions/pytest-results-actions
- name: Surface Failing Tests
if: always()
uses: pmeier/pytest-results-action@main
with:
# A list of JUnit XML files, directories containing the former, and wildcard
# patterns to process.
# See @actions/glob for supported patterns.
path: pytest_report.xml

# Add a summary of the results at the top of the report
# Default: true
summary: true

# Select which results should be included in the report.
# Follows the same syntax as
# `pytest -r`
# Default: fEX
display-options: fEX

# Fail the workflow if no JUnit XML was found.
# Default: true
fail-on-empty: true
23 changes: 12 additions & 11 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ clean-test: ## cleanup pytests leftovers
test: clean-test ## Run pytest unit tests
python3 -m pytest --verbosity=1

test-report:
python3 -m pytest --junit-xml=pytest_report.xml

test-debug: ## Run unit tests with debugging enabled
python3 -m pytest --pdb

Expand All @@ -46,17 +49,21 @@ docker-up: ## Startup docker
docker-build: ## Startup docker with build switch
docker-compose --verbose up --build

setup: requirements venv-create pre-commit-setup docker-build test-setup api-setup ## setup & run after downloaded repo
docker-build-detached: ## Startup docker with build switch
docker-compose up --build -d

setup: venv-create requirements pre-commit-setup docker-build test-setup ## setup & run after downloaded repo

setup-detached: venv-create requirements pre-commit-setup docker-build-detached test-setup ## setup & run after downloaded repo detached

pre-commit-setup: ## Install pre-commit
python3 -m pip install pre-commit
pre-commit --version

pre-commit: ## Run pre-commit
pre-commit run --all-files

test-setup: ## installs pytest singular package for local testing
python3 -m pip install pytest
python3 -m pip install requests
python3 -m pip install hypothesis

requirements: ## installs all requirements
python3 -m pip install -r requirements.txt
Expand All @@ -70,9 +77,6 @@ docker-rebuild: docker-down ## shuts down docker then brings it up and rebuilds
docker-force-rebuild: docker-down ## shuts down docker than brings it up and force rebuilds
docker-compose --verbose up --build --force-recreate

api-setup: ## installs fastapi singular package, for local testing
python3 -m pip install "fastapi[all]"

docs: # opens your browser to the webapps testing docs
open http://localhost:5000/docs
xdg-open http://localhost:5000/docs
Expand All @@ -82,7 +86,4 @@ venv-create: venv-remove ## cleans the .venv then creates a venv in the folder .
python3 -m venv .venv

venv-remove: ## removes the .venv folder
rm -rf .venv

check: ## run pre commit hooks for github, should do black checks
pre-commit
rm -rf .venv
1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,4 @@ uvicorn==0.23.2
virtualenv==20.24.5
watchfiles==0.20.0
websockets==11.0.3
hypothesis==6.88.1
cryptography==41.0.4