Skip to content

Redis resilience, fail-open pipeline, configurable country-check logging, non-blocking cloud-IP refresh #89

Redis resilience, fail-open pipeline, configurable country-check logging, non-blocking cloud-IP refresh

Redis resilience, fail-open pipeline, configurable country-check logging, non-blocking cloud-IP refresh #89

Workflow file for this run

name: CI
on:
push:
branches:
- master
paths:
- 'compose.yml'
- 'data/**'
- 'Dockerfile'
- 'guard_core/**'
- 'mypy.ini'
- '.pre-commit-config.yaml'
- 'pyproject.toml'
- 'pytest.ini'
- 'reqs.pip'
- 'tests/**'
pull_request_target:
branches:
- master
paths:
- 'compose.yml'
- 'data/**'
- 'Dockerfile'
- 'guard_core/**'
- 'mypy.ini'
- '.pre-commit-config.yaml'
- 'pyproject.toml'
- 'pytest.ini'
- 'reqs.pip'
- 'tests/**'
workflow_dispatch:
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: '3.10'
- run: pip install uv
- run: uv sync --extra dev --extra otel --extra logfire
- run: uv run pre-commit run --all-files
test:
runs-on: ubuntu-latest
services:
redis:
image: redis
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
permissions:
pull-requests: write
strategy:
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Send Initial Slack Message
id: send_initial_slack_ci
uses: rennf93/good-comms@master
with:
SLACK_WEBHOOK: '${{ secrets.SLACK_WEBHOOK }}'
SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
STATUS: 'Started'
CHANNEL_ID: '${{ secrets.SLACK_CHANNEL }}'
AUTHOR_NAME: 'Guard Core - CI & Tests - Py${{ matrix.python-version }}'
AUTHOR_LINK: 'https://github.com/rennf93/guard-core'
AUTHOR_ICON: ':test_tube:'
TITLE: 'CI & Tests Started - Py${{ matrix.python-version }}'
TITLE_LINK: 'https://github.com/rennf93/guard-core/actions'
MESSAGE: |
.
*CI & TESTS TRIGGERED!*
.
Matrix:
Python: ${{ matrix.python-version }}
Docs version:
${{ secrets.DOCS_VERSION }}
Commit:
${{ github.event.head_commit.message }}
.
COLOR: warning
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
run: |
pip install uv
- name: Install dependencies
run: |
uv sync --extra dev --extra otel --extra logfire
- name: Run tests
run: |
IPINFO_TOKEN='${{ secrets.IPINFO_TOKEN }}' REDIS_URL='redis://localhost:6379' REDIS_PREFIX='test:guard_core:' uv run pytest -v --cov=guard_core
- name: Notify Success on Slack Channel
uses: rennf93/good-comms@master
with:
SLACK_WEBHOOK: '${{ secrets.SLACK_WEBHOOK }}'
SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
STATUS: 'Success'
CHANNEL_ID: '${{ secrets.SLACK_CHANNEL }}'
AUTHOR_NAME: 'Guard Core - CI & Tests - Py${{ matrix.python-version }}'
AUTHOR_LINK: 'https://github.com/rennf93/guard-core'
AUTHOR_ICON: ':gem:'
TITLE: 'CI & Tests Successful - Py${{ matrix.python-version }}'
TITLE_LINK: 'https://github.com/rennf93/guard-core/actions'
MESSAGE: |
.
Matrix:
Python: ${{ matrix.python-version }}
Docs version:
${{ secrets.DOCS_VERSION }}
Commit message:
${{ github.event.head_commit.message }}
Commit URL:
${{ github.event.head_commit.url }}
.
COLOR: good
SLACK_THREAD_TS: ${{ steps.send_initial_slack_ci.outputs.SLACK_THREAD_TS }}
- name: Send Failure Notification to Slack
if: failure()
uses: rennf93/good-comms@master
with:
SLACK_WEBHOOK: '${{ secrets.SLACK_WEBHOOK }}'
SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
STATUS: 'Failed'
CHANNEL_ID: '${{ secrets.SLACK_CHANNEL }}'
AUTHOR_NAME: 'Guard Core - CI & Tests - Py${{ matrix.python-version }}'
AUTHOR_LINK: 'https://github.com/rennf93/guard-core'
AUTHOR_ICON: ':skull:'
TITLE: 'CI & Tests Failed - Py${{ matrix.python-version }}'
TITLE_LINK: 'https://github.com/rennf93/guard-core/actions'
MESSAGE: |
.
Matrix:
Python: ${{ matrix.python-version }}
Docs version:
${{ secrets.DOCS_VERSION }}
CI & Tests failed for commit:
${{ github.event.head_commit.message }}
Commit URL:
${{ github.event.head_commit.url }}
Please check the logs for more details.
.
COLOR: danger
SLACK_THREAD_TS: ${{ steps.send_initial_slack_ci.outputs.SLACK_THREAD_TS }}