https://github.com/kintoun-secops/secops-actions-lab
git clone 후 uv sync로 환경 맞추기 (uv 설치는 공식 문서 참고)
22개 패키지 설치 성공, .venv 가상환경 완성, ruff==0.9.10, mypy==1.15.0 등 문서에서 말한 버전도 일치
워크플로를 채우기 전, 도구를 로컬에서 먼저 실행해보고 실제로 어떤 문제를 잡아내는지 확인해보았다.
| 명령어 | 결과 |
|---|---|
ruff check |
코드 스타일 + 보안 문제 13건 발견 |
ruff format |
포맷 안 맞는 파일 1개 |
mypy |
타입 오류 2건 |
pytest |
테스트 실패 1건 |
pip-audit |
의존성 CVE 18건 |
TODO로 비워진 부분은 크게 두 종류였다.
uv run mypy app/ 같은 실제 명령어 한 줄만 넣으면 되는 부분on:, concurrency, if: 조건을 채우는 부분다 설명하기에는 내용이 너무 길어져서 중요한 부분 2개 정도만 골라서 자세하게 설명하겠다.
이 워크플로는 Ruff로 코드 스타일과 보안 이슈를 검사하는 부분이다.
name: "01 - Ruff (format + lint + security)"
on:
workflow_call:
workflow_dispatch:
permissions:
contents: read
pull-requests: write # reviewdog 인라인 코멘트용
jobs:
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
- run: uv sync --frozen
- uses: reviewdog/action-setup@v1
with:
reviewdog_version: latest
- name: Ruff lint -> reviewdog (PR 인라인 리뷰)
if: github.event_name == 'pull_request'
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
uv run ruff check app/ --output-format=rdjson |
reviewdog -f=rdjson -reporter=github-pr-review -level=warning
- name: Run Ruff (formatter)
run: uv run ruff format --check .
- name: Run Ruff (linter)
run: uv run ruff check app/
on: #언제 시작될지
workflow_call:
workflow_dispatch: