Aller au contenu principal

Autres providers CI

L'image Docker ghcr.io/mankinds/ci fonctionne avec tout CI qui sait lancer un conteneur comme étape de build. Le schéma reste le même : injecter MANKINDS_API_KEY, lancer mankinds-ci --agent ..., et laisser le code de sortie décider l'état du build.

CircleCI

version: 2.1
jobs:
mankinds_eval:
docker:
- image: ghcr.io/mankinds/ci:v1
steps:
- run:
name: Mankinds quality gate
command: mankinds-ci --agent 00000000-0000-4000-8000-000000000000
workflows:
build_and_eval:
jobs:
- mankinds_eval:
context: mankinds # Contexte CircleCI portant MANKINDS_API_KEY
filters:
branches:
only: main

Définissez MANKINDS_API_KEY dans Organization Settings → Contexts → mankinds → Add environment variable.

Bitbucket Pipelines

image: atlassian/default-image:4

pipelines:
branches:
main:
- step:
name: Mankinds quality gate
image: ghcr.io/mankinds/ci:v1
script:
- mankinds-ci --agent 00000000-0000-4000-8000-000000000000

Définissez MANKINDS_API_KEY comme Secured Repository variable dans Repository settings → Pipelines → Repository variables.

Jenkins

Pipeline déclaratif avec le plugin Docker :

pipeline {
agent {
docker {
image 'ghcr.io/mankinds/ci:v1'
args '-e MANKINDS_API_KEY=$MANKINDS_API_KEY'
}
}
environment {
MANKINDS_API_KEY = credentials('mankinds-api-key')
}
stages {
stage('Mankinds quality gate') {
steps {
sh 'mankinds-ci --agent 00000000-0000-4000-8000-000000000000'
}
}
}
}

Créez le credential mankinds-api-key dans Manage Jenkins → Credentials → System → Global credentials comme entrée "Secret text".

Modèle Docker générique

Tout CI qui lance des conteneurs peut lancer le gate :

docker run --rm \
-e MANKINDS_API_KEY=$MANKINDS_API_KEY \
ghcr.io/mankinds/ci:v1 \
--agent 00000000-0000-4000-8000-000000000000 \
--base-url https://app.mankinds.io \
--timeout-minutes 30

Le conteneur sort en 0 quand le gate passe et en non-zéro quand le gate échoue ou ne peut pas être vérifié.

Sans Docker (curl + jq)

Si votre runner ne peut pas pull d'image, appelez directement l'API publique :

  1. POST /api/v1/agents/{agent_id}/runs avec X-API-Key.
  2. Poll GET /api/v1/agents/{agent_id}/runs/{run_id} jusqu'à un statut terminal.
  3. Échouez le job sauf si results.gate.passed vaut true.

L'image Docker évite d'avoir cette logique de polling et de code de sortie dans vos scripts CI.

Voir aussi