본문으로 건너뛰기

🤖 CI/CD Automation & GitHub Actions

Automating testing, code quality linting, security vulnerability auditing, and documentation deployment ensures continuous delivery without regressions.

This guide provides complete GitHub Actions workflow configurations.


1. CI Pipeline Workflow (.github/workflows/ci.yml)

name: Ferrox CI Pipeline

on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]

jobs:
check-and-test:
name: Code Quality & Tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt

- name: Rust Cache
uses: Swatinem/rust-cache@v2

- name: Check Format
run: cargo fmt --all -- --check

- name: Run Clippy Linter
run: cargo clippy --workspace -- -D warnings

- name: Run Workspace Unit Tests
run: cargo test --workspace

security-audit:
name: Security Vulnerability Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rustsec/audit-check-action@v1.4.1
with:
token: ${{ secrets.GITHUB_TOKEN }}

2. Documentation Build & Deploy Workflow (.github/workflows/docs.yml)

name: Deploy Docusaurus Portal

on:
push:
branches: [ main ]
paths:
- 'docs/**'

jobs:
deploy-docs:
runs-on: ubuntu-latest
defaults:
run:
working-directory: docs

steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: docs/package-lock.json

- name: Install Dependencies
run: npm ci

- name: Build Docusaurus Website
run: npm run build

- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/build