mcpField
C
cicd-automation

cicd-automation

github.com/autumnsgroveCloud & DevOps667 installsUpdated 5d ago
Repository

About cicd-automation

A skill for setting up CI/CD workflows, testing, quality checks, and release or deployment automation. It provides GitHub Actions patterns for developers configuring repository pipelines.

Key features

  1. 01GitHub Actions workflow setup
  2. 02Push and pull request triggers
  3. 03Test and coverage configuration
  4. 04Dependency caching and matrix testing
  5. 05Release publishing and Docker builds

Use cases

  1. 01Running tests on code changes
  2. 02Testing across operating systems and Python versions
  3. 03Publishing a package on release
  4. 04Building and pushing Docker images

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/autumnsgrove/lattice --skill cicd-automation

After installing, type/cicd-automationin Claude Code to confirm it loaded.

Details

From the project README

CI/CD Automation Skill

When to Activate

Activate this skill when:

  • Creating GitHub Actions workflows
  • Setting up automated testing
  • Configuring deployment pipelines
  • Adding code quality checks to CI
  • Automating release processes

Quick Start Workflow

Create .github/workflows/ci.yml:

name: CI

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

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install UV
        run: curl -LsSf https://astral.sh/uv/install.sh | sh

      - name: Add UV to PATH
        run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH

      - name: Install dependencies
        run: uv sync

      - name: Run tests
        run: uv run pytest tests/ -v --cov=src

      - name: Lint with Ruff
        run: uv run ruff check src/ tests/

      - name: Check formatting
        run: uv run black --check src/ tests/

Workflow Structure

.github/
└── workflows/
    ├── ci.yml        # Tests and linting
    ├── release.yml   # Package publishing
    └── deploy.yml    # Deployment

Common Triggers

# Every push and PR
on: [push, pull_request]

# Specific branches
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

# Manual trigger
on: workflow_dispatch

# Scheduled (cron)
on:
  schedule:
    - cron: '0 0 * * *'  # Daily at midnight

Testing with Coverage

- name: Run tests with coverage
  run: |
    uv run pytest tests/ \
      --cov=src \
      --cov-report=xml \
      --cov-report=term-missing \
      --junitxml=junit.xml

- name: Upload coverage to Codecov
  uses: codecov/codecov-action@v3
  with:
    files: ./coverage.xml
    fail_ci_if_error: true

Multi-Environment Testing

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python-version: ['3.10', '3.11', '3.12']

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install UV
        run: curl -LsSf https://astral.sh/uv/install.sh | sh

      - name: Run tests
        run: uv run pytest tests/

Caching Dependencies

- name: Cache UV dependencies
  uses: actions/cache@v3
  with:
    path: |
      ~/.cache/uv
      .venv
    key: ${{ runner.os }}-uv-${{ hashFiles('**/pyproject.toml') }}
    restore-keys: |
      ${{ runner.os }}-uv-

- name: Install dependencies
  run: uv sync

Secrets in Workflows

- name: Deploy
  env:
    API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
    DATABASE_URL: ${{ secrets.DATABASE_URL }}
  run: uv run python deploy.py

Setting up secrets:

  1. Repository Settings → Secrets and variables → Actions
  2. Click "New repository secret"
  3. Add name and value

Publishing to PyPI

name: Publish

on:
  release:
    types: [published]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install UV
        run: curl -LsSf https://astral.sh/uv/install.sh | sh

      - name: Build package
        run: uv build

      - name: Publish to PyPI
        env:
          UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
        run: uv publish --token $UV_PUBLISH_TOKEN

Docker Image Build

- name: Build and push Docker image
  uses: docker/build-push-action@v5
  with:
    context: .
    push: true
    tags: user/app:latest,user/app:${{ github.sha }}

Status Badges

Add to README:

![CI](https://github.com/username/repo/workflows/CI/badge.svg)
[![codecov](https://codecov.io/gh/username/repo/badge.svg)](https://codecov.io/gh/username/repo)

Best Practices

DO ✅
  • Run tests on every push
  • Cache dependencies for speed
  • Use matrix for cross-platform testing
  • Separate CI from CD workflows
  • Use secrets for sensitive data
DON'T ❌
  • Skip linting in CI
  • Ignore test failures
  • Store secrets in code
  • Run unnecessary jobs

When to Use CI/CD

Start with:

  1. Running tests on every push
  2. Code quality checks (lint, format)
  3. Security scanning

Add later:

  1. Deployment automation
  2. Docker builds
  3. Documentation generation

Related Resources

See AgentUsage/ci_cd_patterns.md for complete documentation including:

  • Complex workflow examples
  • Environment-specific configs
  • Advanced caching strategies
  • Deployment patterns

Comments

Markdown supported