Skip to content

Bump codecov/codecov-action from 3 to 5 #4

Bump codecov/codecov-action from 3 to 5

Bump codecov/codecov-action from 3 to 5 #4

Workflow file for this run

name: API Test Automation CI/CD
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
schedule:
# Run tests daily at 6 AM UTC
- cron: '0 6 * * *'
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.9, 3.10, 3.11, 3.12]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Cache pip dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# Stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# Exit-zero treats all errors as warnings
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Run smoke tests
run: |
python -m pytest tests/ -m smoke -v --tb=short
- name: Run all tests with coverage
run: |
pip install pytest-cov
python -m pytest tests/ -v --cov=utils --cov=tests --cov-report=xml --cov-report=html
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
file: ./coverage.xml
flags: unittests
name: codecov-umbrella
- name: Generate Allure report
if: always()
run: |
pip install allure-pytest
python -m pytest tests/ --alluredir=allure-results
- name: Upload Allure results
if: always()
uses: actions/upload-artifact@v3
with:
name: allure-results-${{ matrix.python-version }}
path: allure-results/
- name: Upload test reports
if: always()
uses: actions/upload-artifact@v3
with:
name: test-reports-${{ matrix.python-version }}
path: reports/
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install bandit safety
- name: Run Bandit security scan
run: bandit -r . -f json -o bandit-report.json || true
- name: Run Safety check
run: safety check --json --output safety-report.json || true
- name: Upload security reports
uses: actions/upload-artifact@v3
with:
name: security-reports
path: |
bandit-report.json
safety-report.json
performance-test:
runs-on: ubuntu-latest
if: github.event_name == 'schedule' || contains(github.event.head_commit.message, '[perf]')
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run performance tests
run: |
python -m pytest tests/ -m performance -v --tb=short
- name: Upload performance results
uses: actions/upload-artifact@v3
with:
name: performance-results
path: reports/
deploy-docs:
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install allure-pytest
- name: Generate test documentation
run: |
python -m pytest tests/ --alluredir=allure-results
# Generate Allure report
allure generate allure-results -o allure-report --clean
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./allure-report
destination_dir: test-reports
notify:
runs-on: ubuntu-latest
needs: [test, security-scan]
if: failure()
steps:
- name: Notify on failure
run: |
echo "Tests failed! Check the logs for details."
# Add Slack/Teams notification here if needed