Workflows solución P2 2425
De Wiki de EGC
Ejercicios CI
name: Codacy CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: uvlhub_root_password
MYSQL_DATABASE: uvlhubdb_test
MYSQL_USER: uvlhub_user
MYSQL_PASSWORD: uvlhub_password
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
strategy:
matrix:
python-version: ['3.11', '3.12']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Check for outdated dependencies
run: |
pip list --outdated
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Security audit with pip-audit
run: |
pip install pip-audit
pip-audit || true
- name: Upload coverage to Codacy
run: |
pip install codacy-coverage
coverage run -m pytest app/modules/ --ignore-glob='*selenium*'
coverage xml
python-codacy-coverage -r coverage.xml
env:
FLASK_ENV: testing
MARIADB_HOSTNAME: 127.0.0.1
MARIADB_PORT: 3306
MARIADB_TEST_DATABASE: uvlhubdb_test
MARIADB_USER: uvlhub_user
MARIADB_PASSWORD: uvlhub_password
CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }}
Ejercicios CD
name: Deploy to Render
on:
push:
tags:
- 'v*'
pull_request:
branches:
- main
jobs:
testing:
name: Run Tests
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: uvlhub_root_password
MYSQL_DATABASE: uvlhubdb_test
MYSQL_USER: uvlhub_user
MYSQL_PASSWORD: uvlhub_password
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run Tests
env:
FLASK_ENV: testing
MARIADB_HOSTNAME: 127.0.0.1
MARIADB_PORT: 3306
MARIADB_TEST_DATABASE: uvlhubdb_test
MARIADB_USER: uvlhub_user
MARIADB_PASSWORD: uvlhub_password
run: |
pytest app/modules/ --ignore-glob='*selenium*'
deploy:
name: Deploy to Render
needs: testing
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Deploy to Render
env:
deploy_url: ${{ secrets.RENDER_DEPLOY_HOOK_URL }}
run: |
curl "$deploy_url"