Claude-skill-registry ci-cd-pipeline
GitHub Actions CI/CD patterns for automated testing, building, and deployment. Covers workflow syntax, secrets management, matrix builds, and deployment strategies.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/ci-cd-pipeline-frankxai-agentic-creator-os" ~/.claude/skills/majiayu000-claude-skill-registry-ci-cd-pipeline && rm -rf "$T"
manifest:
skills/data/ci-cd-pipeline-frankxai-agentic-creator-os/SKILL.mdsource content
CI/CD Pipeline Skill
Build robust CI/CD pipelines with GitHub Actions for automated testing, building, and deployment.
Core Workflow Structure
# .github/workflows/ci.yml name: CI/CD Pipeline on: push: branches: [main, develop] pull_request: branches: [main] env: NODE_VERSION: '20' jobs: # Job 1: Lint and Type Check quality: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - name: Install dependencies run: npm ci - name: Lint run: npm run lint - name: Type check run: npm run type-check # Job 2: Test test: runs-on: ubuntu-latest needs: quality steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - name: Install dependencies run: npm ci - name: Run tests run: npm test -- --coverage - name: Upload coverage uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} # Job 3: Build build: runs-on: ubuntu-latest needs: test steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - name: Install dependencies run: npm ci - name: Build run: npm run build - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: build path: dist/ # Job 4: Deploy (only on main) deploy: runs-on: ubuntu-latest needs: build if: github.ref == 'refs/heads/main' environment: production steps: - uses: actions/checkout@v4 - name: Download build artifacts uses: actions/download-artifact@v4 with: name: build path: dist/ - name: Deploy to Vercel uses: amondnet/vercel-action@v25 with: vercel-token: ${{ secrets.VERCEL_TOKEN }} vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} vercel-args: '--prod'
Matrix Builds
Test across multiple versions/platforms:
jobs: test: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] node: [18, 20, 22] fail-fast: false steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} - run: npm ci - run: npm test
Secrets Management
# Using secrets env: DATABASE_URL: ${{ secrets.DATABASE_URL }} API_KEY: ${{ secrets.API_KEY }} # GitHub environment secrets (for staging/production) deploy: environment: production # Uses production environment secrets
Caching Strategies
# NPM cache - uses: actions/setup-node@v4 with: cache: 'npm' # Custom cache - uses: actions/cache@v4 with: path: | ~/.npm node_modules key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node-
Deployment Patterns
Preview Deployments (PRs)
preview: if: github.event_name == 'pull_request' steps: - name: Deploy Preview run: vercel --token=${{ secrets.VERCEL_TOKEN }} - name: Comment PR uses: actions/github-script@v7 with: script: | github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: '🚀 Preview: https://preview-url.vercel.app' })
Conditional Deploys
deploy: if: | github.ref == 'refs/heads/main' && github.event_name == 'push'
FrankX Standard Pipeline
For FrankX projects, use this template:
name: FrankX CI/CD on: push: branches: [main] pull_request: branches: [main] jobs: validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - run: npm ci - run: npm run lint - run: npm run type-check - run: npm test deploy: needs: validate if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Deploy to Vercel uses: amondnet/vercel-action@v25 with: vercel-token: ${{ secrets.VERCEL_TOKEN }} vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} vercel-args: '--prod'
Anti-Patterns
❌ Storing secrets in code ❌ No caching (slow builds) ❌ Running all jobs sequentially when they can be parallel ❌ No artifact upload for debugging failed builds ❌ Hardcoded versions instead of matrix
✅ Use environment secrets ✅ Cache dependencies aggressively ✅ Parallelize independent jobs ✅ Upload artifacts for debugging ✅ Use matrix for cross-platform testing