Gestion CI/CD GitHub Actions

VérifiéPrudence

Configure les workflows GitHub Actions, pipelines CI/CD, versions avec Changesets, validation PR et hooks Husky. Inclut le dépannage CI et l'ajout de workflows.

Spar Skills Guide Bot
DevOpsIntermédiaire
08/09/2026
Claude CodeCursorCodex
#github-actions#ci-cd#changesets#release-automation#husky

Recommandé pour

Synthèse automatique

Ce skill guide la configuration des workflows GitHub Actions, la publication automatisée via Changesets et la gestion des hooks Husky pour le projet Saleor Configurator.

Points forts

  • Fournit des modèles YAML complets et prêts à l'emploi pour test-on-pr, release et changeset-bot
  • Décrit le flux de release Changesets étape par étape, de la création du changeset à la publication npm
  • Inclut une table des vérifications obligatoires (typecheck, lint, test, build) et des commandes gh CLI pour le diagnostic
  • Couvre les hooks pre-push Husky et la gestion des secrets (GITHUB_TOKEN, NPM_TOKEN)

Limites

  • Contenu très lié au projet Saleor Configurator (pnpm, Biome, Vitest, Node 20) et peu réutilisable tel quel ailleurs
  • La section changeset-bot et la résolution des échecs CI sont annoncées dans le sommaire mais restent partielles
  • Suppose une familiarité avec GitHub Actions, Changesets et le CLI gh
Quand l'utiliser

À utiliser lorsqu'il faut créer ou modifier un workflow GitHub Actions, automatiser une release Changesets ou diagnostiquer un échec de CI sur ce dépôt.

Quand l'éviter

À éviter pour des pipelines d'un autre fournisseur (GitLab CI, Jenkins) ou pour un projet utilisant npm/yarn sans Changesets.

Analyse de sécurité

Prudence
Score qualité88/100

The skill primarily documents configuration and management of GitHub CI/CD pipelines. The allowed Bash(gh:*) tool can perform network operations and alter repository state (e.g., creating PRs, releases), which is legitimate but warrants caution. No destructive, exfiltrating, or obfuscated actions are present.

Points d'attention
  • •Uses Bash with gh CLI to manage GitHub Actions, PRs, and releases, which can modify repository state and trigger CI workflows.
  • •Includes shell snippets with git commit and pnpm commands that may be executed if tool restrictions are bypassed.
Comment cette analyse est faite

Exemples

Add a CI workflow
Create a GitHub Actions workflow that runs typecheck, lint, test, and build on every pull request targeting main, using pnpm 9 and Node 20 with pnpm caching.
Automate releases
Set up a release.yml workflow that uses changesets/action to open a Version Packages PR on main and publish to npm once it merges, wiring GITHUB_TOKEN and NPM_TOKEN.
Debug a failing CI run
The test-on-pr workflow is failing on the install step — use gh to pull the failing run logs and tell me whether the frozen lockfile is out of sync.

name: managing-github-ci description: "Configures GitHub Actions workflows and CI/CD pipelines. Manages automated releases via Changesets, PR validation, and Husky hooks. Troubleshoots CI failures. Triggers on: GitHub Actions, CI pipeline, workflow, release automation, Husky hooks, gh CLI, workflow failure." allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(gh:*)"

GitHub CI Automation

Purpose

Guide the configuration and management of GitHub Actions workflows, release automation, and CI/CD pipelines for the Saleor Configurator project.

When to Use

  • Creating or modifying GitHub Actions workflows
  • Setting up automated releases
  • Troubleshooting CI failures
  • Configuring pre-commit/pre-push hooks
  • Managing Changesets releases

Table of Contents

Project CI Architecture

.github/
├── workflows/
│   ├── test-on-pr.yml      # PR validation
│   ├── release.yml         # Automated releases
│   └── changeset-bot.yml   # Changeset automation
└── ...

.husky/
├── pre-push               # Pre-push hooks
└── ...

.changeset/
├── config.json            # Changeset configuration
└── *.md                   # Pending changesets

Workflow: test-on-pr.yml

Purpose: Validate PRs before merge

name: Test on PR

on:
  pull_request:
    branches: [main]

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

      - name: Setup pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 9

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'pnpm'

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Type check
        run: pnpm typecheck

      - name: Lint
        run: pnpm lint

      - name: Test
        run: pnpm test

      - name: Build
        run: pnpm build

Required Checks

| Check | Command | Purpose | |-------|---------|---------| | Type check | pnpm typecheck | TypeScript validation | | Lint | pnpm lint | Biome linting | | Test | pnpm test | Vitest test suite | | Build | pnpm build | Compilation check |

Workflow: release.yml

Purpose: Automated npm releases via Changesets

name: Release

on:
  push:
    branches: [main]

concurrency: ${{ github.workflow }}-${{ github.ref }}

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

      - name: Setup pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 9

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'pnpm'
          registry-url: 'https://registry.npmjs.org'

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: pnpm build

      - name: Create Release Pull Request or Publish
        uses: changesets/action@v1
        with:
          publish: pnpm publish:ci-prod
          version: pnpm changeset version
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

Release Flow

1. Developer creates changeset → pnpm changeset
2. PR merged to main
3. Changesets action runs:
   a. If changesets exist → Creates "Version Packages" PR
   b. If version PR merged → Publishes to npm

Workflow: changeset-bot.yml

Purpose: Comment on PRs about missing changesets

name: Changeset Bot

on:
  pull_request:
    types: [opened, synchronize]

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

      - name: Changeset Bot
        uses: changesets/bot@v1
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Pre-Push Hooks (Husky)

Located in .husky/pre-push:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

# Generate schema documentation before push
pnpm generate-schema-docs
git add docs/SCHEMA.md

# Check if there are changes to commit
if ! git diff --staged --quiet; then
  git commit -m "docs: update schema documentation"
fi

Hook Behavior

  • Runs generate-schema-docs before every push
  • Auto-commits schema documentation updates
  • Ensures docs stay in sync with schema changes

Changesets Configuration

Located in .changeset/config.json:

{
  "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json",
  "changelog": "@changesets/cli/changelog",
  "commit": false,
  "fixed": [],
  "linked": [],
  "access": "public",
  "baseBranch": "main",
  "updateInternalDependencies": "patch",
  "ignore": []
}

Changeset Types

| Type | When to Use | |------|-------------| | patch | Bug fixes, documentation, refactoring | | minor | New features, non-breaking enhancements | | major | Breaking changes, API modifications |

GitHub CLI Commands

Check Workflow Status

# List recent workflow runs
gh run list --limit 10

# View specific run
gh run view <run-id>

# Watch running workflow
gh run watch <run-id>

PR Management

# Create PR
gh pr create --title "feat: new feature" --body "Description"

# List PRs
gh pr list

# View PR details
gh pr view <pr-number>

# Check PR status
gh pr checks <pr-number>

Release Management

# List releases
gh release list

# Create release (manual)
gh release create v1.0.0 --title "v1.0.0" --notes "Release notes"

# View release
gh release view v1.0.0

Troubleshooting CI Failures

Common Failures

Type Check Fails:

# Reproduce locally
pnpm typecheck
# or
npx tsc --noEmit

Lint Fails:

# Check and auto-fix
pnpm lint
pnpm check:fix

Tests Fail:

# Run specific test
pnpm test -- --filter=<test-file>

# Run with verbose output
pnpm test -- --reporter=verbose

Build Fails:

# Reproduce locally
pnpm build

Debugging Workflow

  1. Check workflow logs in GitHub Actions UI
  2. Reproduce failure locally
  3. Fix the issue
  4. Push fix to PR
  5. Re-run failed jobs: gh run rerun <run-id>

Rate Limiting

If npm publish fails due to rate limiting:

  • Wait and retry
  • Check npm status: https://status.npmjs.org/

Adding New Workflows

Template Structure

name: Workflow Name

on:
  # Trigger events
  push:
    branches: [main]
  pull_request:
    branches: [main]

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

      - name: Setup pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 9

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'pnpm'

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      # Add your steps here

Best Practices

  • Always use --frozen-lockfile for installs
  • Cache pnpm store for faster runs
  • Use specific action versions (@v4, not @latest)
  • Set concurrency to prevent duplicate runs
  • Use secrets for sensitive values

Secrets Management

Required Secrets

| Secret | Purpose | Where Set | |--------|---------|-----------| | GITHUB_TOKEN | Auto-provided | GitHub | | NPM_TOKEN | npm publishing | Repository Settings |

Adding Secrets

  1. Go to repository Settings
  2. Navigate to Secrets and variables → Actions
  3. Click "New repository secret"
  4. Add name and value

References

Skill Reference Files

Project Resources

  • {baseDir}/.github/workflows/ - Workflow files
  • {baseDir}/.husky/ - Git hooks
  • {baseDir}/.changeset/ - Changeset configuration

External Documentation

  • GitHub Actions docs: https://docs.github.com/en/actions
  • Changesets docs: https://github.com/changesets/changesets

Related Skills

  • Creating releases: See creating-changesets for changeset creation
  • Local validation: See validating-pre-commit for reproducing CI checks locally

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/manage-github-actions-ci-cd-mts7ikpo/download' --output '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md.part' && mv '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md.part' '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Grep, Glob, Write, Edit, Bash(gh:*)

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && test -s '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/managing-github-ci' && cp -R '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo' '.claude/skills/managing-github-ci'

Cursor
test -f '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && test -s '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/managing-github-ci' && cp -R '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo' '.cursor/skills/managing-github-ci'

Codex
test -f '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && test -s '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/managing-github-ci' && cp -R '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo' '.agents/skills/managing-github-ci'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/manage-github-actions-ci-cd-mts7ikpo'

openskills read 'manage-github-actions-ci-cd-mts7ikpo'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires