93 lines
2.5 KiB
YAML

name: CI
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
jobs:
lint:
runs-on: ubuntu-latest
container:
image: gitea-job-image
steps:
- name: Clone repo
run: |
rm -rf $GITHUB_WORKSPACE/*
git clone --depth 1 https://git.example.com/jarianc/youtube-cli $GITHUB_WORKSPACE
git -C $GITHUB_WORKSPACE checkout $GITHUB_SHA 2>/dev/null || true
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
pip3 install ruff mypy
pip3 install -e ".[dev]"
pip3 install textual
- name: Run ruff
run: ruff check .
- name: Run mypy
run: mypy youtube_tui/ --config-file youtube_tui/pyproject.toml
test:
runs-on: ubuntu-latest
container:
image: gitea-job-image
steps:
- name: Clone repo
run: |
rm -rf $GITHUB_WORKSPACE/*
git clone --depth 1 https://git.example.com/jarianc/youtube-cli $GITHUB_WORKSPACE
git -C $GITHUB_WORKSPACE checkout $GITHUB_SHA 2>/dev/null || true
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
pip3 install -e ".[dev]"
pip3 install -r requirements-api.txt
pip3 install textual
- name: Run pytest
run: python3 -m pytest tests/ web/server/tests/ -v --tb=short
docker-build:
runs-on: ubuntu-latest
steps:
- name: Clone repo
run: |
rm -rf $GITHUB_WORKSPACE/*
git clone --depth 1 https://git.example.com/jarianc/youtube-cli $GITHUB_WORKSPACE
git -C $GITHUB_WORKSPACE checkout $GITHUB_SHA 2>/dev/null || true
- name: Build Docker image
run: |
docker build -t youtube-cli:test --no-cache .
security:
runs-on: ubuntu-latest
container:
image: gitea-job-image
steps:
- name: Clone repo
run: |
rm -rf $GITHUB_WORKSPACE/*
git clone --depth 1 https://git.example.com/jarianc/youtube-cli $GITHUB_WORKSPACE
git -C $GITHUB_WORKSPACE checkout $GITHUB_SHA 2>/dev/null || true
- name: Run bandit (Python SAST)
run: |
pip3 install bandit
bandit -r youtube_cli/ youtube_tui/ web/server/ --severity-level high --confidence-level high
build-result:
needs: [lint, test, docker-build, security]
runs-on: ubuntu-latest
container:
image: gitea-job-image
if: always()
steps:
- name: Summary
run: echo "All CI checks completed"