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.yamlpour 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
-
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.
-
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é | 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 :
- Node.js (avec npm, Yarn ou Gradle)
- Java (avec Maven ou Gradle)
- Golang
- Python
- Fichier Dockerfile
- Langage de configuration de Terraform
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
-
Définitions des ressources Kubernetes comme '
Pod, 'ReplicaSet, 'ReplicationController, 'Deployment, 'Daemonset, 'StatefulSet, 'Job, 'Cronjob' , 'NetworkPolicy, 'Ingress, 'Service, 'Route' - kubectl comme outil -
Websphere Liberty Application Custom Resource- kubectl comme outil
-
Open Liberty Ressource personnalisée de l'application- 'kubectl en tant qu'outil
-
Carte deHelm- la barre comme outil
-
Configuration de Terraform- IBM Cloud Schematics ou Terraform CLI comme outil
-
Ressource personnalisée Wazi 'DeploymentMethod- 'Déploiement de Wazi en tant qu'outil
-
Dockerfile lorsque IBM Cloud Code Engine a été configuré pour le déploiement- IBM Cloud Code Engine CLI comme outil
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 :
- libération sémantique
- maven avec la phase '
maven deploy.
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:
| 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 Enginecode-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 buildrunroot-as-build-context: (Par défaut :false) indique que le contexte de construction pour un outil de construction lié à l'Dockerfile, tel quedockeroucode-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éfautdocker) Pour les builds liés à Dockerfile, spécifiez l'outil à utiliser (dockeroupodman) pour créer l'image du conteneur.root-as-build-context: (Par défaut :false) indique que le contexte de compilation pour l'outil deDockerfilecompilation associé (tel quedocker,podmanoucode-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 pythonunittest(par exemple, afin de découvrir les tests unitaires à partir du répertoire contenant lerequirements.txtà la racine du référentiel et non lerequirements.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.shest 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.shest 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.shest 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.shest 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.shest associé en tant que configuration d'environnement pour le processus dans les spots de scan dynamique..env.release.shest 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.yamlcomplémentaires pour les déploiements Helm configmapou 'secretpour 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
| 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
| 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
| 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_arginjecte le paramètre "--build-arg="my_arg="dans la commande docker build.
- Exemple : L'ajout d'une propriété nommée "
- 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_propertyavec 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 | --valuesde la commande helm.
- Si une propriété porte un nom tel que "
Pour en savoir plus, consultez le contenu des valeurs complémentaires.
Terraform
- Processus de déploiement L'outil Terraform s'appuie sur les fonctions d'aide de Terraform fournies par compliance-commons terraform.
- Pour plus d'informations sur les propriétés de configuration pour l'injection de contexte, voir Configuration des variables d'entrée Terraform.
Schematics
- Processus de déploiement: L'outil Schematics s'appuie sur les fonctions d'aide Schematics fournies par compliance-commons schematics.
- Pour plus d'informations sur les propriétés de configuration pour l'injection de contexte, voir Configuration des variables déclarées de l'espace de travail des 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 les propriétés de pipeline et de déclencheur avec un nom normalisé tel que "
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éeENV_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éeENV_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 mavenENV_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_ENABLEDavec 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.