Files
ClaudeForge/.github/actions/setup-python-deps/action.yml
T
Reza Rezvani dd6a6c24d7 feat(ci): implement comprehensive CI/CD workflows and quality gates
Phase 1: Core GitHub Workflows Implementation

Composite Actions (4):
- setup-python-deps: Cache Python dependencies for faster runs
- fork-safety: Detect fork PRs and prevent malicious write operations
- rate-limit-check: Circuit breaker pattern for GitHub API exhaustion
- quality-gates: Python syntax, Markdown lint, Bash validation, secret scanning

Workflows (5):
- bootstrap.yml: One-time repository setup (labels, milestones, settings)
- reusable-pr-checks.yml: DRY quality gate orchestrator
- pr-into-dev.yml: Feature PR validation (branch names, conventional commits, linked issues)
- dev-to-main.yml: Release gate validation (source branch, CHANGELOG, production readiness)
- release.yml: Manual release creation with GitHub releases and auto-generated notes

Branch Strategy: Standard (feature/* → dev → main)
Quality Gates: Python, Markdown, Bash, Secrets
Release Trigger: Manual via /release command or workflow_dispatch

Implements comprehensive CI/CD system adapted from blueprint:
- Fork safety and rate limiting for security
- Conventional commits enforcement
- Automated quality validation
- Production release gates
- GitHub release automation

Next: Phase 2 (templates, CODEOWNERS, dependabot)
2025-11-12 12:51:48 +01:00

63 lines
1.8 KiB
YAML

name: 'Setup Python Dependencies'
description: 'Sets up Python with caching for faster workflow runs'
author: 'ClaudeForge'
inputs:
python-version:
description: 'Python version to use'
required: false
default: '3.11'
outputs:
cache-hit:
description: 'Whether the cache was hit'
value: ${{ steps.cache-pip.outputs.cache-hit }}
python-version:
description: 'Python version that was installed'
value: ${{ steps.setup-python.outputs.python-version }}
runs:
using: 'composite'
steps:
- name: Set up Python
id: setup-python
uses: actions/setup-python@v5
with:
python-version: ${{ inputs.python-version }}
- name: Get pip cache dir
id: pip-cache
shell: bash
run: echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: Cache pip dependencies
id: cache-pip
uses: actions/cache@v4
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip-${{ inputs.python-version }}-${{ hashFiles('skill/requirements.txt', '**/setup.py', '**/pyproject.toml') }}
restore-keys: |
${{ runner.os }}-pip-${{ inputs.python-version }}-
${{ runner.os }}-pip-
- name: Install Python dependencies
shell: bash
run: |
python -m pip install --upgrade pip
# Install common validation tools
pip install flake8 pylint black mypy
# Install project dependencies if they exist
if [ -f "skill/requirements.txt" ]; then
pip install -r skill/requirements.txt
fi
if [ -f "requirements.txt" ]; then
pip install -r requirements.txt
fi
- name: Display Python info
shell: bash
run: |
echo "Python version: $(python --version)"
echo "Pip version: $(pip --version)"
echo "Cache hit: ${{ steps.cache-pip.outputs.cache-hit }}"