IBM Cloud Docs
Création d'un pipeline avec une configuration DevSecOps inférée

Création d'un pipeline avec une configuration DevSecOps inférée

Une fois que vous avez ajouté votre propre application ou micro-service à la chaîne d'outils DevSecOps CI, vous pouvez utiliser la fonctionnalité de configuration du pipeline DevSecOps inféré pour démarrer rapidement. Cette fonctionnalité :

  • Influence le contenu du fichier de configuration du pipeline DevSecOps " .pipeline-config.yaml pour vous
  • Identifie les scripts nécessaires pour construire, tester et déployer votre code
  • Fournit le code de ces scripts, afin que vous puissiez vous concentrer sur votre application

En utilisant cette fonctionnalité, vous pouvez facilement intégrer vos microservices ou applications à DevSecOps des pipelines et rationaliser leur DevSecOps adoption.

Aucune étape supplémentaire n'est nécessaire pour configurer la configuration de DevSecOps pipeline déduite, car elle est déjà intégrée dans le DevSecOps.

Prérequis

  1. Configurez vos DevSecOps chaînes d'outils et intégrez le référentiel de code source de votre application. N'utilisez pas le référentiel d'applications par défaut. Au lieu de cela, embarquez le référentiel de votre propre application.

  2. Passez en revue les bases de la personnalisation du pipeline DevSecOps pour en savoir plus sur les différents modèles disponibles, les options d'assistance et d'autres informations importantes pour vous aider à démarrer avec DevSecOps.

Mise en route

Pour commencer, configurez vos chaînes d'outils pour qu'elles utilisent votre propre dépôt de code source. Ensuite, lancez votre premier pipeline CIDevSecOps. Cette fonction est activée par défaut, aucune configuration supplémentaire n'est donc nécessaire. Il déduit dynamiquement la configuration du pipeline DevSecOps et les scripts nécessaires pour construire, tester et déployer votre application ou votre service.

Pour désactiver cette fonctionnalité, définissez une valeur " pipeline-config correspondant à un fichier existant dans votre référentiel.

Points où la configuration du pipeline DevSecOps a été déduite

La fonction de configuration inférée du pipeline DevSecOps utilise l'introspection des sources et la définition du langage pour identifier le " spots dans votre référentiel de sources. Un " spot est un endroit de votre code qui requiert une action spécifique.

Chaque point a les propriétés suivantes :

Propriétés Spot
Propriété Description
Source Identifie un emplacement dans le référentiel du code source comme contexte du spot.
Processus Un ou plusieurs processus qui indiquent le type d'opération à effectuer.
Outils Un tableau associé à un processus qui répertorie les outils à lancer pour effectuer l'action. Chaque outil peut avoir son propre ensemble de propriétés.
configuration de l'environnement Fait référence à un fichier de script (ou à des commandes de script) qui sera lancé pour configurer l'environnement de l'opération de traitement (invocations d'outils) à effectuer.

Taches identifiées

La fonction de configuration du pipeline DevSecOps inféré identifie actuellement les types de " spots suivants : spots code, spots " deployment, spots " acceptance-test, spots " dynamic-scan et spots " release".

Taches de code

Les points de code sont liés à un langage de code source pris en charge, notamment :

Les spots " code gèrent les processus suivants :

  • building: Définit les outils qui réalisent la construction du code source donné.
  • unit-testing: localise les outils qui effectuent les tests unitaires du résultat de la construction.

Points de déploiement

Les spots " deployment localisent un véhicule de déploiement, y compris les ressources et les outils de déploiement. les spots deployment présentent un processus de déploiement qui énumère les outils de déploiement. Les véhicules de déploiement actuellement pris en charge sont les suivants

Taches du test d'acceptation

Les points " acceptance-test localisent une suite de tests d'acceptation à exécuter. les points acceptance-test ont un processus " acceptance-testing qui identifie les outils permettant d'exécuter la suite de tests d'acceptation.

Spots à balayage dynamique

Les points " dynamic-scan identifient les emplacements pour un balayage dynamique. Les spots de balayage dynamique disposent d'un processus " scanning pour dresser la liste des outils de balayage invoqués pendant le balayage dynamique.

L'analyse ZAP de l'OWASP est le seul outil pris en charge pour démarrer un déclencheur de sous-connexion Web.

Taches de libération

Les points " release localisent le processus de libération. Les spots de diffusion ont un processus " releasing qui énumère les outils à utiliser pendant la phase de diffusion. Actuellement, les outils pris en charge pour le processus de déblocage sont les suivants :

Exemple de contenu du polyglot-spots.json

La fonction de configuration du pipeline DevSecOps extrait des spots et génère le contenu JSON suivant pour déclencher des actions et des outils spécifiques au cours des étapes du pipeline de CI.

{
  "code": [
    {
      "source": "Dockerfile",
      "language": "Dockerfile",
      "building": {
        "tools": [
          {
            "tool": "docker"
          }
        ]
      }
    },
    {
      "source": "package.json",
      "language": "NodeJS",
      "building": {
        "tools": [
          {
            "tool": "npm"
          }
        ]
      },
      "unit-testing": {
        "tools": [
          {
            "tool": "npm",
            "command": "test"
          }
        ]
      }
    }
  ],
  "acceptance-test": [
    {
      "source": "package.json",
      "acceptance-testing": {
        "tools": [
          {
            "tool": "npm",
            "command": "run acceptance-test"
          }
        ]
      }
    }
  ],
  "deployment": [
    {
      "source": "deployment_iks.yml",
      "deploying": {
        "tools": [
          {
            "tool": "kubectl"
          }
        ],
        "environment-setup": ".env.deploy.sh"
      }
    },
    {
      "source": "deployment_os.yml",
      "deploying": {
        "tools": [
          {
            "tool": "kubectl"
          }
        ],
        "environment-setup": ".env.deploy.sh"
      }
    }
  ],
  "dynamic-scan": [
    {
      "source": "definitions/definitions1.json",
      "scanning": {
        "tools": [
          {
            "tool": "trigger-async-zap",
            "kind": "api"
          }
        ],
        "environment-setup": "scripts/zap/zap-custom-scripts/.env.dynamic-scan.sh"
      }
    },
    {
      "source": "scripts/zap/uiscripts/run.sh",
      "scanning": {
        "tools": [
          {
            "tool": "trigger-async-zap",
            "kind": "ui"
          }
        ],
        "environment-setup": "scripts/zap/zap-custom-scripts/.env.dynamic-scan.sh"
      }
    }
  ],
  "release": []
}

Configuration avancée

Injection de fichiers

La fonction de configuration inférée du pipeline DevSecOps utilise le contenu des fichiers " polyglot-spots.json et " .pipeline-config.yaml pour personnaliser l'exécution du processus du pipeline DevSecOps.

Au cours de l'étape " finish d'un pipeline de CI, " polyglot-spots.json et " .pipeline-config.yaml (correspondant à la configuration statique de l'exécution du pipeline de CI) sont ajoutés à une branche nommée " inferred-devsecops (par défaut) dans le référentiel du code source de l'application.

La configuration du pipeline avec la version de format 2 (utilisable avec la branche compliance-pipelines v11 par exemple) peut également être générée si la propriété create-inferred-pipeline-configuration-v2 est définie sur true (par défaut false ). Un fichier de configuration de pipeline supplémentaire tel que .pipeline-config-v2.yaml est alors ajouté à la branche nommée inferred-devsecops (par défaut) dans le référentiel du code source de l'application.

Configuration de la branche d'injection

Vous pouvez configurer le nom de la branche dans laquelle sont injectés les fichiers déduits de DevSecOps en utilisant la propriété de pipeline " inferred-devsecops-branch La valeur par défaut est inferred-devsecops.

Utilisez la propriété du pipeline push-inferred-pipeline-configuration-files (la propriété push-polyglot-files est dépréciée au profit de la propriété push-inferred-pipeline-configuration-files ) pour activer ou désactiver la création et la mise à jour de la branche inferred-devsecops:

Activer ou désactiver la branche inferred-devsecops
Valeur Description
true (par défaut) Les fichiers de configuration sont ajoutés et poussés vers la branche 'inferred-devsecops du dépôt de code source de l'application.
false Les fichiers de configuration ne sont pas ajoutés à la branche inferred-devsecops.

Configuration de l'extraction des taches

Configurez l'extraction des spots en utilisant les propriétés suivantes de l'environnement du pipeline :

Ignorer les taches

Vous pouvez ignorer des points spécifiques lors de l'extraction en utilisant des expressions régulières. Les options de configuration suivantes sont disponibles :

  • ignore-code-spot-pattern: ignore les points de code qui correspondent à l'expression régulière spécifiée.
  • ignore-deployment-spot-pattern: Ignore les spots de déploiement qui correspondent à l'expression régulière spécifiée.
  • ignore-dynamic-scan-spot-pattern: ignore les spots de balayage dynamique qui correspondent à l'expression régulière spécifiée.
  • ignore-acceptance-test-spot-pattern: Ignore les spots des tests d'acceptation qui correspondent à l'expression régulière spécifiée.
  • ignore-release-spot-pattern: Ignore les spots de libération qui correspondent à l'expression régulière spécifiée.

Configuration du Code Engine

Si vous utilisez IBM Cloud Code Engine pour le déploiement, indiquez le projet Code Engine et configurez le processus de construction avec les propriétés suivantes de l'environnement du pipeline :

  • code-engine-project: Spécifie le projet Code Engine
  • code-engine-build-use-native-docker: (Défaut : 'false) Indique s'il faut utiliser la CLI de Docker au lieu de la commande 'ibmcloud code-engine buildrun
  • root-as-build-context: (Par défaut : false ) indique que le contexte de construction pour un outil de construction lié à l' Dockerfile, tel que docker ou code-engine, doit utiliser la racine du référentiel comme contexte de construction et non le dossier contenant le Dockerfile.

Configuration de la création d'images de conteneurs

  • container-image-builder: (Par défaut docker) Pour les builds liés à Dockerfile, spécifiez l'outil à utiliser (docker ou podman) pour créer l'image du conteneur.
  • root-as-build-context: (Par défaut : false) indique que le contexte de compilation pour l'outil de Dockerfile compilation associé (tel que docker, podman ou code-engine) doit utiliser la racine du référentiel comme contexte de compilation et non le dossier contenant le fichier Dockerfile.

Configuration de Golang

Pour configurer le processus d'extraction de points pour Golang, définissez les propriétés suivantes de l'environnement du pipeline :

  • go-ignore-main: (Défaut : 'false) Indique si l'extraction de points de code ne doit pas se concentrer sur la détection du paquet principal et de la fonction principale pour l'argument source principal.
  • go-output: Spécifie le fichier de sortie exécutable de la commande go build.

Configuration de Gradle

Pour configurer les tâches Gradle pour l'installation, les tests unitaires, les artefacts de construction et les tests d'acceptation, utilisez les propriétés suivantes de l'environnement du pipeline :

  • gradle-setup-tasks: (Défaut : 'assemble) Liste de tâches Gradle séparées par des virgules pour l'étape de configuration.
  • gradle-unit-testing-tasks: (Défaut : 'test) Liste de tâches Gradle séparées par des virgules pour l'étape de test unitaire.
  • gradle-build-artifact-tasks: (Défaut : 'build) Liste de tâches Gradle séparées par des virgules pour l'étape build-artifact.
  • gradle-acceptance-testing-tasks: Liste de tâches Gradle séparées par des virgules pour l'étape du test d'acceptation.

Configuration de NPM

Vous pouvez configurer la détection des scripts de tests unitaires et de tests d'acceptation de NPM.

  • hint-npm-unit-testing-script: (Défaut : 'test) Indications pour la détection des scripts de tests unitaires de NPM.
  • hint-npm-acceptance-testing-script: (Défaut : 'acceptance-test) Indications pour la détection des scripts de tests d'acceptation de NPM.

Configuration de Python

Pour configurer la version de Python Poetry, utilisez les propriétés suivantes de l'environnement du pipeline :

  • hint-python-poetry-version: (Défaut : '1.8.2) Indications pour la version de Python Poetry.
  • discover-python-unittest-from-ancestor: (Défaut : false) indique que le répertoire ancêtre est utilisé comme point de départ pour la découverte de python unittest (par exemple, afin de découvrir les tests unitaires à partir du répertoire contenant le requirements.txt à la racine du référentiel et non le requirements.txt (s'il y en a un) qui est le plus proche des fichiers python unittest).

Configuration Terraform

Pour configurer le processus de déploiement Terraform, utilisez les propriétés suivantes de l'environnement du pipeline :

  • terraform-deployment: (Défaut : 'false) Désactive Schematics comme véhicule de déploiement en faveur de Terraform et Cloud Object Storage pour le stockage de l'état.

Téléchargement d'un artefact

Pour configurer le processus de téléchargement des artefacts, utilisez les propriétés suivantes de l'environnement du pipeline :

  • artifact-upload-to-devsecops-cos: (Défaut : 'false) Permet le téléchargement d'artefacts dans un seau de Cloud Object Storage en utilisant le CLI DevSecOps pour les artefacts non sauvegardés dans des images.

Environnement Fichiers

Chaque dépôt de code source nécessite une configuration ou une personnalisation spécifique pour une étape donnée. La fonctionnalité Inferred- DevSecOps-Pipeline-Configuration permet de spécifier une propriété de configuration d'environnement qui peut être définie comme un script d' bash. Ce script est généré avant l'exécution de l'action correspondante pour un processus.

Lors de l'extraction des spots, cette fonctionnalité de configuration devsecops déduite utilise un indice basé sur le nom de fichier pour déterminer les fichiers de configuration de l'environnement. Par exemple, un fichier nommé .env.npm-test.sh sera choisi comme script de configuration de l'environnement à invoquer avant d'exécuter le test unitaire npm.

Le format normalisé d'un fichier de configuration d'environnement ressemble à .env.<process>.sh ou .env.<tool>-<process>.sh.

La valeur de <process> peut être l'une des suivantes : build, test, acceptance-test, deploy, dynamic-scan ou release.

Pour le processus d' build, la valeur d' <tool> peut être l'une des suivantes : code-engine, docker, docker-maven-plugin, go, gradle, helm, maven, npm, pip, pipenv, poetry, terraform ou yarn.

Pour les processus d' test s et d' acceptance-test s, la valeur d' <tool> peut être l'une des suivantes : go, gradle, helm, maven, npm, pytest, python ou terratest.

Pour le processus d' deploy, la valeur d' <tool> peut être l'une des suivantes : code-engine,helm, kubectl-liberty-app, kubectl, schematics ou terraform.

Pour un processus d' dynamic-scan, la valeur d' <tool> peut être trigger-async-zap.

Pour le processus release, la valeur de <tool> peut être l'une des suivantes : maven, poetry ou semantic-release.

En voici quelques exemples :

  • .env.build.sh est associé en tant que configuration d'environnement pour le processus de construction dans les points de code. Il peut être remplacé par un fichier de configuration d'environnement pour un outil spécifique (comme docker, maven...) tel que .env.docker-build.sh, .env.maven-build.sh,...
  • .env.test.sh est associé en tant que configuration d'environnement pour le processus de test unitaire dans les points de code. Il peut être remplacé par un fichier de configuration d'environnement pour un outil spécifique (comme go, npm...) tel que .env.go-test.sh, .env.npm-test.sh,...
  • .env.deploy.sh est associé en tant que configuration d'environnement pour le processus dans les points de déploiement. Il peut être remplacé par un fichier de configuration d'environnement pour un outil spécifique (comme code-engine, helm, kubectl...) tel que .env.code-engine-deploy.sh, .env.helm-deploy.sh,...
  • .env.acceptance-test.sh est associé en tant que configuration d'environnement pour le processus dans les points de test d'acceptation. Il peut être remplacé par un fichier de configuration d'environnement pour un outil spécifique (comme go, maven, npm...) tel que .env.maven-acceptance-test.sh, .env.python-acceptance-test.sh,...
  • .env.dynamic-scan.sh est associé en tant que configuration d'environnement pour le processus dans les spots de scan dynamique.
  • .env.release.sh est associé en tant que configuration d'environnement pour le processus dans les spots de lancement. Il peut être remplacé par un fichier de configuration d'environnement pour un outil spécifique (comme maven, semantic-release...) tel que .env.maven-acceptance-test.sh, .env.semantic-release-acceptance-test.sh,...

Pour un exemple d'utilisation de ce script, voir le référentiel Hello Compliance App sur IBM Cloud.

Injection de contexte environnemental

La fonction de configuration inférée du pipeline DevSecOps incorpore les variables d'environnement des propriétés du pipeline et des déclencheurs dans divers contextes de projet. Les contextes du projet sont les suivants :

  • Étapes d'exécution du pipeline
  • Déploiements Helm
  • Déploiement du Code Engine

Cette fonctionnalité vous permet d'injecter ou de définir un contexte, tel que des variables d'environnement, à partir de propriétés de pipeline et de déclenchement basées sur des noms de propriétés normalisés.

Certains outils gèrent les propriétés avec des noms normalisés qui sont injectés dans des contextes spécifiques, comme par exemple :

  • arguments de construction de docker et/ou secrets de construction de docker
  • fichiers 'values.yaml complémentaires pour les déploiements Helm
  • configmap ou 'secret pour les déploiements de Code Engine

En utilisant des noms de propriétés normalisés, vous pouvez injecter des variables d'environnement et d'autres éléments contextuels dans votre pipeline et vos déploiements.

Injection de variables d'environnement dans les étapes d'exécution du pipeline

La fonction de configuration du pipeline DevSecOps inféré fournit un utilitaire " export-properties permettant d'exporter les propriétés du pipeline et des déclencheurs en tant que variables d'environnement pendant l'exécution de l'étape. Cet utilitaire est invoqué à chaque étape personnalisée :

export-properties "GLOBAL" && export-properties "${STAGE^^}"
Variables d'environnement globales

La commande " export-properties "GLOBAL" exporte les propriétés du pipeline et du déclencheur avec des noms normalisés avec " ENV_GLOBAL_<XXX> comme variables d'environnement telles que " XXX dans chaque contexte d'exécution de l'étape du pipeline.

Exemple de variable d'environnement globale
Exemple de variables d'environnement globales
Nom de propriété Expert immobilier Variable d'environnement résultante
ENV_GLOBAL_my_var my_value my_var=my_value
Variables d'environnement spécifiques à l'étape

La commande " export-properties "${STAGE^^}" exporte les propriétés du pipeline ou du déclencheur relatives à l'étape en cours d'exécution avec le nom normalisé " ENV_<stage in upper case>_<XXX> en tant que variables d'environnement dans l'étape exécutée donnée.

Exemple de variables d'environnement spécifiques à une étape
Exemple de variables d'environnement globales
Nom de propriété Expert immobilier Variable d'environnement résultante
ENV_SETUP_CGO_ENABLED true CGO_ENABLED=true

Dans le pipeline CI, la variable d'environnement " CGO_ENABLED est définie à la bonne valeur pour l'étape " code-setup - run-stage ".

Se référer aux descriptions des étapes pour une liste des étapes et leurs descriptions.

Un cas d'utilisation typique de cette fonctionnalité est l'injection de variables d'environnement avant l'exécution des tests unitaires afin de fournir une configuration. Dans ce cas, le nom normalisé des propriétés serait " ENV_TEST_<a_var>, " <a_var> étant le nom de la variable d'environnement exportée qui doit être disponible pour l'exécution de l'étape "test".

Exemple
Exemple de variables d'environnement spécifiques à une étape
Nom de propriété Expert immobilier Variable d'environnement résultante
ENV_TEST_MY_VAR my_value MY_VAR=my_value

Utilisez cette fonctionnalité pour simplifier la configuration de votre pipeline et améliorer la cohérence de vos déploiements.

Exécution et configuration de l'outil

Certains outils de la fonctionnalité Configuration inférée du pipeline DevSecOps utilisent les propriétés du pipeline et du déclencheur pour inférer une configuration complémentaire.

Docker
  • Arguments de construction: La commande docker build est complétée par des paramètres --build-arg basés sur les propriétés du pipeline et du trigger avec un nom normalisé comme 'DOCKER_BUILD_ARG_.
    • Exemple : L'ajout d'une propriété nommée " DOCKER_BUILD_ARG_my_arg injecte le paramètre " --build-arg="my_arg=" dans la commande docker build.
  • Secrets de construction : La commande docker build est complétée par des paramètres --secret basés sur les propriétés du pipeline et du déclencheur avec un nom normalisé comme 'DOCKER_BUILD_SECRET_.
    • Par exemple, l'ajout d'une propriété nommée DOCKER_BUILD_SECRET_my_secret injecte le paramètre --secret id=my_secret,env= dans la commande docker build.

Pour en savoir plus, consultez les arguments de docker build et le secret de docker build

Helm
  • Traitement du déploiement: Des valeurs supplémentaires peuvent être injectées dans le processus de déploiement Helm sur la base des propriétés normalisées du pipeline et du déclencheur.
    • Si une propriété porte un nom tel que " HELM_VALUE_,, le fichier des valeurs complémentaires géré par l'outil de traitement Helm ajoute une entrée " a_value_property avec la valeur de la propriété du pipeline ou du déclencheur.
    • Le fichier des valeurs complémentaires est utilisé comme argument du dernier paramètre '-f | --values de la commande helm.

Pour en savoir plus, consultez le contenu des valeurs complémentaires.

Terraform
Schematics
Code Engine
  • Processus de déploiement: Une configuration supplémentaire pour l'application peut être créée en définissant une carte de configuration complémentaire ou un secret associé à l'application.
    • Pour les propriétés de pipeline et de déclencheur avec un nom normalisé tel que " CE_ENV_<XXXX>, une entrée dans un configmap ou un secret complémentaire (associé à l'application ou au travail de Code Engine ) sera créée avec la clé " <XXXX> et sa valeur sera définie en fonction de la valeur de la propriété de pipeline ou de déclencheur correspondante.

Pour en savoir plus, reportez-vous à code-engine configmap(s)pour configurer des applications ou des tâches et code-engine secret pour configurer des applications ou des tâches

Bibliothèque de scripts communs DevSecOps

La configuration du pipeline DevSecOps inféré utilise, à certaines étapes, des scripts/fonctions issus des scripts de la bibliothèque commune, qui offre un ensemble de scripts réutilisables pouvant vous aider si vous souhaitez commencer à les personnaliser.

Pour plus d'informations sur la bibliothèque de scripts communs, y compris les scripts, les outils, l'utilisation et les paramètres, voir Bibliothèque de scripts communs.

Foire aux questions

Protection des branches

Activer la protection des branches par défaut

Les pipelines DevSecOps PR et CI activent par défaut la protection des branches sur le dépôt de code source. Cette vérification a lieu au cours de la phase de configuration du code.

Désactiver la protection de la branche

Pour désactiver la protection des branches, définissez la propriété " setup-branch-protection comme étant " false.

Personnaliser les contrôles d'état de la protection des branches

Pour personnaliser le préfixe des contrôles de l'état de protection de la branche, définissez la propriété " branch-protection-status-check-prefix. Le préfixe par défaut est " tekton.

Configuration et exécution des hooks de pré-commission

Par défaut, les pipelines PR et CI dont la configuration est déduite de DevSecOps exécutent des hooks de pré-commission lors de l'étape de configuration si un fichier de configuration de pré-commission existe dans le référentiel de code source ( .pre-commit-config.yaml par défaut). Le nom du fichier de configuration pre-commit peut être spécifié par la propriété pipeline/trigger pre-commit-config-file fixée au nom du fichier de configuration.

Certains hooks de pré-commission peuvent être ignorés (par exemple parce qu'un hook donné comme detect-secrets est exécuté à une étape spécifique des pipelines PR ou CI). Pour spécifier les crochets à ignorer, définissez la propriété pipeline/déclencheur pre-commit-skip-hooks avec une liste d'identifiants de crochets à ignorer, séparés par des virgules.

Serveur Sonarqube avec certificat auto-signé

si l'adresse sonarqube-config est réglée sur custom pour utiliser un serveur sonarqube existant et que le serveur dispose d'un certificat auto-signé, pour que le scanner sonar puisse se connecter avec succès au serveur sonarqube, le certificat auto-signé doit être ajouté aux certificats CA de confiance.

En fournissant le certificat au format PEM comme valeur de la propriété pipeline/trigger sonarqube-root-certificate, l'implémentation du balayage statique dans la configuration du pipeline Inferred DevSecOps l'ajoutera en conséquence pour l'utilisation de SonarScanner pour maven, SonarScanner pour gradle sonar ou SonarScanner invoqué avec Docker.

Poésie et dépôts privés

Configurer Poetry pour les dépôts privés

Lorsque l'on utilise Poetry (pyproject.toml est identifié comme un point de code) et qu'une source ou un référentiel alternatif est défini pour récupérer les dépendances, par exemple :

[[tool.poetry.source]]
name = "local"
url = "https://na-public.artifactory.swg-devops.com/artifactory/api/pypi/ip-devops-team-pypi-virtual/simple"
secondary = true

ou lorsque la Poésie est impliquée (par exemple, pyproject.toml contenant une section build-system avec build-backend égal à poetry.core.masonry.api est un point de diffusion identifié), il peut être nécessaire de fournir des informations d'identification pour s'authentifier auprès des registres privés.

S'authentifier avec des référentiels privés dans IBM Cloud

Il est nécessaire de fournir des informations d'identification pour ce référentiel source " local La documentation de Poetry sur la configuration des informations d'identification indique que les variables d'environnement pour fournir l'utilisateur et le mot de passe http doivent être " POETRY_HTTP_BASIC_LOCAL_USERNAME et " POETRY_HTTP_BASIC_LOCAL_PASSWORD.

Utilisez la fonction d'injection de variables d'environnement et ajoutez les propriétés suivantes à l'environnement du pipeline :

  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME (texte) avec la valeur appropriée
  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD (sécurisé) avec la valeur sécurisée appropriée

S'authentifier pour publier dans des référentiels privés

Lorsque Poetry est impliqué (c'est-à-dire que pyproject.toml contenant une section build-system avec build-backend égal à poetry.core.masonry.api est un point de publication identifié), la configuration pour le jeton ou le nom d'utilisateur peut être définie en utilisant les propriétés de l'environnement du pipeline comme (pour un dépôt nommé local):

  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME (texte) avec la valeur appropriée
  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD (sécurisé) avec la valeur sécurisée appropriée

ou

  • ENV_GLOBAL_POETRY_PYPI_TOKEN_LOCAL (sécurisé) avec la valeur sécurisée appropriée correspondant au jeton

Maven, pom.xml, settings.xml et Environment Resolution

Configurer Maven pour les fichiers de paramètres personnalisés dans IBM Cloud

Si votre projet Maven définit un fichier de configuration spécifique avec un nom de fichier personnalisé, tel que " ci-settings.xml, définissez une propriété d'environnement de pipeline maven-user-settings-file-path avec la valeur " ci_settings.xml au niveau des propriétés PR, pipeline CI ou trigger.

En outre, s'il y a un " env.<VARIABLE> à résoudre, par exemple :

    <server>
      <username>${env.MAVEN_USERNAME}</username>
      <password>${env.MAVEN_PASSWORD}</password>
      <id>central</id>
    </server>

Utilisez la fonctionnalité d'injection de variables d'environnement pour fournir ces variables en ajoutant 2 propriétés de pipeline (dans le pipeline PR et CI):

  • ENV_GLOBAL_MAVEN_USERNAME (texte) avec la valeur à utiliser pour le nom d'utilisateur maven
  • ENV_GLOBAL_MAVEN_PASSWORD (sécurisé) avec la valeur à utiliser pour le mot de passe maven

Forcer les liens statiques pour les constructions Go

Activer les liens statiques pour les constructions Go

Par défaut, " go build produit un binaire lié dynamiquement. Pour l'utiliser dans un conteneur Docker, activez la liaison statique en définissant 'CGO_ENABLED=0 pendant la construction.

Configurer la variable d'environnement pour la construction de Go

Pour activer la liaison statique, utilisez la fonction d'injection de variables d'environnement pour ajouter la propriété d'environnement suivante dans le pipeline CI :

  • ENV_SETUP_CGO_ENABLED avec la valeur " 0

Obtenir de l'aide

IBM Cloud IBM l'assistant IA de , qui est alimenté par l' watsonx de , est conçu pour vous aider à découvrir comment travailler dans l' IBM Cloud, et à créer des solutions avec le catalogue d'offres disponible. Voir Obtenir de l'aide de l'assistant IA.

Si vous n'arrivez toujours pas à résoudre le problème, ouvrez un cas de support. Pour plus d'informations, voir Création de cas de support. Et, si vous souhaitez faire part de vos commentaires, consultez la rubrique Comment faire part de vos commentaires.