🔁 DevOps

devops-github-actions-expert

Maîtrise de GitHub Actions — workflows CI/CD, actions custom, matrix builds, secrets, environments et reusable workflows.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- devops-github-actions-expert --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } devops-github-actions-expert -Launch"

🚀 Déjà installé ?

claude "/devops-github-actions-expert"

Ou tapez /devops-github-actions-expert dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

GitHub Actionsworkflow GitHubactionsCI/CD GitHub.github/workflows

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/devops-github-actions-expert ~/.claude/skills/

Payload du plugin : skills/devops-github-actions-expert · source éditable : devops-skills/github-actions-expert

📖 Manuel

GitHub Actions Expert

Workflow

  1. Analyser le pipeline requis — Identifier les étapes (build, test, lint, SAST, déploiement), les triggers adaptés et les branches concernées.
TriggerQuand l'utiliser
push sur mainCI post-merge, déploiement continu
pull_requestValidation avant merge, checks obligatoires
scheduleJobs de maintenance, audit de sécurité nocturne
workflow_dispatchDéploiement manuel avec paramètres
release (published)Publication de packages, binaires
  1. Structurer le YAML — Organiser les jobs avec dépendances explicites et conditions.

```yaml name: CI on: push: branches: [main] pull_request: branches: [main] permissions: # Principe du moindre privilège global contents: read jobs: build: runs-on: ubuntu-latest permissions: contents: read steps:

with: node-version: '22' cache: 'npm'

test: needs: build runs-on: ubuntu-latest steps:

```

  1. Configurer les matrix builds — Tester plusieurs environnements sans duplication.

```yaml strategy: fail-fast: false # Ne pas annuler les autres axes si un échoue matrix: node: ['20', '22'] os: [ubuntu-latest, windows-latest] include:

os: ubuntu-latest coverage: true # Variable custom pour un axe précis exclude:

os: windows-latest runs-on: ${{ matrix.os }} steps:

run: npm run test:coverage ```

  1. Gérer les secrets et variables — Hiérarchie : Organization > Repository > Environment.

```yaml env: DATABASE_URL: ${{ vars.DATABASE_URL }} # Variable non-sensible steps:

env: API_KEY: ${{ secrets.PROD_API_KEY }} # Secret injecté en env, jamais en arg CLI run: ./deploy.sh ```

OIDC (recommandé sur AWS/Azure/GCP) — supprime les secrets statiques cloud : ```yaml permissions: id-token: write contents: read steps:

with: role-to-assume: arn:aws:iam::123456789012:role/GitHubActions aws-region: eu-west-1 ```

  1. Cacher les dépendances — Impact direct sur la durée du pipeline.

```yaml

with: node-version: '22' cache: 'npm' # Gère le cache automatiquement (préférer cette option) # Ou cache manuel pour des cas custom :

with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- ```

  1. Créer des reusable workflows — Extraire les patterns communs dès qu'ils se répètent.

```yaml # .github/workflows/reusable-deploy.yml on: workflow_call: inputs: environment: required: true type: string secrets: DEPLOY_TOKEN: required: true jobs: deploy: runs-on: ubuntu-latest environment: ${{ inputs.environment }} steps:

```

Appel depuis un autre workflow : ```yaml jobs: deploy-prod: uses: my-org/.github/.github/workflows/reusable-deploy.yml@main with: environment: production secrets: DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }} ```

  1. Sécuriser le pipeline — Checklist obligatoire.

```yaml # Épingler sur SHA (jamais sur tag mutable)

# Attester la provenance du build permissions: id-token: write attestations: write steps:

with: subject-path: dist/app.tar.gz ```

  1. Optimiser les temps d'exécution — Techniques d'accélération.

```yaml # Skip jobs si les fichiers concernés n'ont pas changé

id: changes with: filters: | backend:

run: npm run test:backend

# Partager des artifacts entre jobs

with: name: dist path: dist/ retention-days: 1 ```

Anti-patterns et pièges

Anti-patternRisqueCorrection
uses: actions/checkout@v4 (tag mutable)Supply chain attackÉpingler sur le SHA du commit
permissions: write-all globalÉlévation de privilègesDéclarer seulement les permissions nécessaires par job
Secrets affichés dans les runFuite dans les logsInjecter via env: jamais via ${{ secrets.X }} dans les commandes shell
continue-on-error: true sans loggingMasquer des défaillances silencieusesUtiliser avec un step de reporting explicite
Pas de timeout-minutesJob bloqué indéfiniment = factureToujours fixer un timeout (par défaut GitHub : 6h)
Stocker des credentials dans les variables (vars)Exposition accidentelleVars = config publique, secrets = credentials
Concurrence non gérée sur déploiementsDouble déploiementUtiliser concurrency avec cancel-in-progress: true
# Gestion de la concurrence pour les déploiements
concurrency:
  group: deploy-${{ github.ref }}
  cancel-in-progress: true

Bonnes pratiques 2026

```yaml updates:

directory: "/" schedule: interval: "weekly" ```