Skip to content

Commit

Permalink
GitHub workflow init for pytest (Bot-detector#17)
Browse files Browse the repository at this point in the history
* merge conflicts

* removing unused

* remove test requirements and docker runs in detached mode

* add workflow for pytest

* Revert "merge conflicts"

This reverts commit 553305a.

* run on self hosted + minor changes

* on push & pull request

* fix style

* sudo apt install python3-venv -y

* make file improvements

* run deployment affter succesfull test

---------

Co-authored-by: extreme4all <[email protected]>
  • Loading branch information
RusticPotatoes and extreme4all authored Nov 1, 2023
1 parent a9eee32 commit 8b313a3
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 16 deletions.
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

0 comments on commit 8b313a3

Please sign in to comment.