⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Intégration d'environnement générique avec CLI

Table des matières

Vous pouvez créer une intégration d'environnement générique en exécutant le client CLI Docker Scout dans vos workflows CI. Le client CLI est disponible comme binaire sur GitHub et comme image de conteneur sur Docker Hub. Utilisez le client pour invoquer la commande docker scout environment pour assigner vos images aux environnements.

Pour plus d'informations sur comment utiliser la commande docker scout environment, consultez la référence CLI.

Exemples

Avant de commencer, définissez les variables d'environnement suivantes dans votre système CI :

  • DOCKER_SCOUT_HUB_USER : votre nom d'utilisateur Docker Hub
  • DOCKER_SCOUT_HUB_PASSWORD : votre jeton d'accès personnel Docker Hub

Assurez-vous que les variables sont accessibles à votre projet.

version: 2.1

jobs:
  record_environment:
    machine:
      image: ubuntu-2204:current
    image: namespace/repo
    steps:
      - run: |
          if [[ -z "$CIRCLE_TAG" ]]; then
            tag="$CIRCLE_TAG"
            echo "Exécution du tag '$CIRCLE_TAG'"
          else
            tag="$CIRCLE_BRANCH"
            echo "Exécution sur la branche '$CI_COMMIT_BRANCH'"
          fi    
          echo "tag = $tag"
      - run: docker run -it \
          -e DOCKER_SCOUT_HUB_USER=$DOCKER_SCOUT_HUB_USER \
          -e DOCKER_SCOUT_HUB_PASSWORD=$DOCKER_SCOUT_HUB_PASSWORD \
          docker/scout-cli:1.0.2 environment \
          --org "<MY_DOCKER_ORG>" \
          "<ENVIRONMENT>" ${image}:${tag}

L'exemple suivant utilise l'exécuteur Docker.

variables:
  image: namespace/repo

record_environment:
  image: docker/scout-cli:1.0.2
  script:
    - |
      if [[ -z "$CI_COMMIT_TAG" ]]; then
        tag="latest"
        echo "Exécution du tag '$CI_COMMIT_TAG'"
      else
        tag="$CI_COMMIT_REF_SLUG"
        echo "Exécution sur la branche '$CI_COMMIT_BRANCH'"
      fi    
      echo "tag = $tag"
    - environment --org <MY_DOCKER_ORG> "PRODUCTION" ${image}:${tag}
trigger:
  - main

resources:
  - repo: self

variables:
  tag: "$(Build.BuildId)"
  image: "namespace/repo"

stages:
  - stage: Docker Scout
    displayName: Intégration d'environnement Docker Scout
    jobs:
      - job: Record
        displayName: Enregistrer l'environnement
        pool:
          vmImage: ubuntu-latest
        steps:
          - task: Docker@2
          - script: docker run -it \
              -e DOCKER_SCOUT_HUB_USER=$DOCKER_SCOUT_HUB_USER \
              -e DOCKER_SCOUT_HUB_PASSWORD=$DOCKER_SCOUT_HUB_PASSWORD \
              docker/scout-cli:1.0.2 environment \
              --org "<MY_DOCKER_ORG>" \
              "<ENVIRONMENT>" $(image):$(tag)
stage('Analyser l\'image') {
    steps {
        // Installer Docker Scout
        sh 'curl -sSfL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh -s -- -b /usr/local/bin'
        
        // Se connecter à Docker Hub
        sh 'echo $DOCKER_SCOUT_HUB_PASSWORD | docker login -u $DOCKER_SCOUT_HUB_USER --password-stdin'

        // Analyser et échouer sur les vulnérabilités critiques ou élevées
        sh 'docker-scout environment --org "<MY_DOCKER_ORG>" "<ENVIRONMENT>" $IMAGE_TAG
    }
}