Creare una pipeline con la configurazione Inferred DevSecOps
Una volta aggiunta la propria applicazione o microservizio alla catena di strumenti DevSecOps CI, è possibile utilizzare la funzione Inferred DevSecOps Pipeline Configuration per iniziare rapidamente. Questa funzione:
- Influenza il contenuto del file di configurazione della pipeline DevSecOps '
.pipeline-config.yamlper l'utente - Identifica gli script necessari per costruire, testare e distribuire il codice
- Fornisce il codice per questi script, in modo che possiate concentrarvi sulla vostra applicazione
Utilizzando questa funzione, puoi facilmente integrare i tuoi microservizi o le tue applicazioni nelle DevSecOps DevSecOps pipeline e semplificarne l'adozione.
Non sono necessari ulteriori passaggi per configurare la configurazione della DevSecOps pipeline dedotta, poiché è già integrata nel DevSecOps.
Prerequisiti
-
Configura le tue DevSecOps toolchain e integra il repository del codice sorgente della tua applicazione. Non utilizzare il repository predefinito dell'applicazione campione. Invece, è necessario integrare il repository della propria applicazione.
-
Esaminate le basi della personalizzazione della pipeline DevSecOps per saperne di più sui diversi modelli disponibili, sulle opzioni di supporto e su altre informazioni importanti per iniziare a utilizzare DevSecOps.
Introduzione
Per iniziare, configurare la propria toolchain in modo che utilizzi il proprio repository di codice sorgente. Quindi, eseguite la vostra prima pipelineDevSecOps CI. Questa funzione è attivata per impostazione predefinita, quindi non è necessaria alcuna configurazione aggiuntiva. Influenza dinamicamente la configurazione della pipeline DevSecOps e gli script necessari per costruire, testare e distribuire l'applicazione o il servizio.
Per disabilitare questa funzione, impostare un valore 'pipeline-config che corrisponda a un file esistente nel repository.
Punti con configurazione inferita della pipeline DevSecOps
La funzione Inferred DevSecOps Pipeline Configuration utilizza l'introspezione dei sorgenti e la definizione del linguaggio per identificare 'spots nel repository dei sorgenti. Un " spot è una posizione del codice
che richiede l'esecuzione di un'azione specifica.
Ogni punto ha le seguenti proprietà:
| Proprietà | Descrizione |
|---|---|
| Origine | Identifica una posizione nel repository del codice sorgente come contesto del punto. |
| Processi | Uno o più processi che indicano il tipo di operazione da eseguire. |
| Strumenti | Un array associato a un processo che elenca gli strumenti da avviare per eseguire l'azione. Ogni strumento può avere un proprio insieme di proprietà. |
| Impostazione dell'ambiente | Fa riferimento a un file di script (o a comandi di script) che verrà avviato per impostare l'ambiente per l'operazione di processo (invocazioni di strumenti) da eseguire. |
Punti identificati
La funzione Inferred DevSecOps Pipeline Configuration identifica attualmente i seguenti tipi di 'spots: spot code, spot " deployment, spot " acceptance-test, spot " dynamic-scan e spot " release.
Macchie di codice
I punti di codice sono relativi a un linguaggio di codice sorgente supportato, tra cui:
- Node.js (con npm, Yarn o Gradle)
- Java (con Maven o Gradle)
- Golang
- Python
- Dockerfile
- Linguaggio di configurazione di Terraform
I punti " code gestiscono i seguenti processi:
building: definisce gli strumenti che eseguono la compilazione del codice sorgente dato.unit-testing: individua gli strumenti che eseguono i test unitari del risultato della compilazione.
Punti di distribuzione
I punti " deployment individuano un veicolo di dispiegamento, comprese le risorse e gli strumenti di dispiegamento. i punti deployment hanno un processo di dispiegamento che elenca gli strumenti di dispiegamento.
I veicoli di distribuzione attualmente supportati sono:
-
Definizioni di risorse Kubernetes come '
Pod, 'ReplicaSet, 'ReplicationController, 'Deployment, 'Daemonset, 'StatefulSet, 'Job, 'Cronjob, 'NetworkPolicy, 'Ingress, 'Service, 'Route- kubectl come strumento -
Risorsa personalizzata dell'applicazione Websphere Liberty- kubectl come strumento
-
Open Liberty Risorsa personalizzata dell'applicazione- 'kubectl come strumento
-
CartaHelm- Il timone come strumento
-
Configurazione di Terraform- IBM Cloud Schematics o Terraform CLI come strumento
-
Risorsa personalizzata Wazi DeploymentMethod- Wazi Deploy come strumento
-
Dockerfile quando IBM Cloud Code Engine è stato configurato per la distribuzione- IBM Cloud Code Engine CLI come strumento
Punti di test di accettazione
I punti " acceptance-test individuano una suite di test di accettazione da eseguire. i punti acceptance-test hanno un processo 'acceptance-testing che identifica gli strumenti per eseguire la suite
di test di accettazione.
Spot a scansione dinamica
I punti " dynamic-scan identificano le posizioni per una scansione dinamica. I punti di scansione dinamica hanno un processo " scanning per elencare gli strumenti di scansione invocati durante la scansione
dinamica.
La scansione OWASP ZAP è l'unico strumento supportato per avviare un trigger sub-webhook.
Spot di rilascio
I punti " release individuano il processo di rilascio. I punti di rilascio hanno un processo 'releasing che elenca gli strumenti da eseguire durante la fase di rilascio. Attualmente, gli strumenti supportati
per il processo di rilascio sono:
- rilascio semantico
- maven con la fase '
maven deploy.
Esempio di contenuto di polyglot-spots.json
La funzione Inferred DevSecOps Pipeline Configuration estrae i punti e genera il seguente contenuto JSON per attivare azioni e strumenti specifici durante le fasi della pipeline 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": []
}
Configurazione avanzata
Iniezione di file
La funzione Inferred DevSecOps Pipeline Configuration utilizza il contenuto dei file 'polyglot-spots.json e '.pipeline-config.yaml per personalizzare l'esecuzione del processo della pipeline DevSecOps.
Durante la fase " finish di una pipeline CI, sia " polyglot-spots.json che " .pipeline-config.yaml (corrispondenti alla configurazione statica della pipeline di esecuzione della pipeline
CI) vengono aggiunti a un ramo chiamato " inferred-devsecops (predefinito) nel repository del codice sorgente dell'applicazione.
La configurazione della pipeline con la versione di formato 2 (utilizzabile ad esempio con il ramo compliance-pipelines v11 ) può essere generata anche se la proprietà create-inferred-pipeline-configuration-v2 è impostata su true (predefinita su false ). Un ulteriore file di configurazione della pipeline, come .pipeline-config-v2.yaml, viene aggiunto al ramo chiamato inferred-devsecops (predefinito)
nel repository del codice sorgente dell'applicazione.
Configurazione del ramo di iniezione
È possibile configurare il nome del ramo per iniettare i file dedotti DevSecOps utilizzando la proprietà della pipeline 'inferred-devsecops-branch. Il valore predefinito è inferred-devsecops.
Usare la proprietà della pipeline push-inferred-pipeline-configuration-files (la proprietà push-polyglot-files è deprecata a favore della proprietà push-inferred-pipeline-configuration-files ) per abilitare
o disabilitare la creazione e l'aggiornamento del ramo inferred-devsecops:
| Valore | Descrizione |
|---|---|
true (predefinito) |
I file di configurazione vengono aggiunti e spinti nel ramo 'inferred-devsecops del repository del codice sorgente dell'applicazione. |
false |
I file di configurazione non vengono aggiunti al ramo inferred-devsecops. |
Configurazione dell'estrazione dei punti
Configurare l'estrazione degli spot utilizzando le seguenti proprietà dell'ambiente della pipeline:
Ignorare le macchie
È possibile ignorare punti specifici durante l'estrazione utilizzando espressioni regolari. Sono disponibili le seguenti opzioni di configurazione:
ignore-code-spot-pattern: ignora i punti di codice che corrispondono all'espressione regolare specificata.ignore-deployment-spot-pattern: ignora i punti di distribuzione che corrispondono all'espressione regolare specificata.ignore-dynamic-scan-spot-pattern: ignora i punti di scansione dinamica che corrispondono all'espressione regolare specificata.ignore-acceptance-test-spot-pattern: ignora i punti del test di accettazione che corrispondono all'espressione regolare specificata.ignore-release-spot-pattern: ignora i punti di rilascio che corrispondono all'espressione regolare specificata.
Configurazione Code Engine
Se si usa IBM Cloud Code Engine per la distribuzione, specificare il progetto Code Engine e configurare il processo di compilazione con le seguenti proprietà dell'ambiente della pipeline:
code-engine-project: Specifica il progetto di Code Engine.code-engine-build-use-native-docker: (Predefinito: 'false) Indica se usare Docker CLI invece del comando 'ibmcloud code-engine buildrun.root-as-build-context: (impostazione predefinita:false) indica che il contesto di compilazione per uno strumento di compilazione relativo aDockerfile(comedockerocode-engine) deve utilizzare la radice dell'archivio come contesto di compilazione e non la cartella contenente il Dockerfile.
Configurazione della creazione dell'immagine del container
container-image-builder: (Impostazione predefinitadocker) Per le build relative al Dockerfile, specificare lo strumento da utilizzare (dockeropodman) per creare l'immagine del container.root-as-build-context: (Impostazione predefinita:false) indica che il contesto di compilazione per strumenti diDockerfilecompilazione correlati (comedocker,podmanocode-engine) deve utilizzare la radice del repository come contesto di compilazione e non la cartella contenente il file Dockerfile.
Configurazione di Golang
Per configurare il processo di estrazione degli spot per Golang, impostare le seguenti proprietà dell'ambiente della pipeline:
go-ignore-main: (Predefinito: 'false) Indica se l'estrazione delle macchie di codice non deve concentrarsi sul rilevamento del pacchetto principale e della funzione principale per l'argomento principale dell'origine.go-output: Specifica il file di output eseguibile del comando go build.
Configurazione di Gradle
Per configurare i task di Gradle per la configurazione, i test unitari, gli artefatti di compilazione e i test di accettazione, utilizzare le seguenti proprietà dell'ambiente della pipeline:
gradle-setup-tasks: (Predefinito: 'assemble) Elenco separato da virgole di task Gradle per la fase di impostazione.gradle-unit-testing-tasks: (Predefinito: 'test) Elenco separato da virgole di task Gradle per la fase di unit-test.gradle-build-artifact-tasks: (Predefinito: 'build) Elenco separato da virgole di task Gradle per lo stadio build-artifact.gradle-acceptance-testing-tasks: Elenco separato da virgole di task Gradle per la fase di test di accettazione.
Configurazione NPM
È possibile configurare il rilevamento degli script di test unitario e di accettazione di NPM.
hint-npm-unit-testing-script: (Predefinito: 'test) Suggerimenti per il rilevamento degli script del test unitario di NPM.hint-npm-acceptance-testing-script: (Predefinito: 'acceptance-test) Suggerimenti per il rilevamento degli script del test di accettazione NPM.
Configurazione di Python
Per configurare la versione di Python Poetry, utilizzare le seguenti proprietà dell'ambiente della pipeline:
hint-python-poetry-version: (Predefinito: '1.8.2) Suggerimenti per la versione di Python Poetry.discover-python-unittest-from-ancestor: (predefinito:false) indica che la directory antenata viene usata come punto di partenza per la scoperta di pythonunittest(per esempio, per scoprire i test unitari dalla directory contenenterequirements.txtalla radice del repository e non darequirements.txt(se esiste) che è più vicina ai file unittest di python).
Configurazione di Terraform
Per configurare il processo di distribuzione di Terraform, utilizzare le seguenti proprietà dell'ambiente della pipeline:
terraform-deployment: (Predefinito: 'false) Disabilita Schematics come veicolo di distribuzione a favore di Terraform e Cloud Object Storage per l'archiviazione dello stato.
Caricamento degli artefatti
Per configurare il processo di caricamento degli artefatti, utilizzare le seguenti proprietà dell'ambiente della pipeline:
artifact-upload-to-devsecops-cos: (Predefinito: 'false) Abilita il caricamento degli artefatti in un bucket di Cloud Object Storage utilizzando il caricamento degli artefatti della CLI di DevSecOps per gli artefatti salvati senza immagine.
Impostazione dell'ambiente File
Ogni repository di codice sorgente richiede una configurazione o una personalizzazione specifica per una determinata fase. La funzione Inferred DevSecOps Pipeline Configuration consente di specificare una proprietà di configurazione dell'ambiente
che può essere definita come uno script di configurazione ( bash ). Questo script viene creato prima di eseguire l'azione corrispondente per un processo.
Durante l'estrazione di spot, questa funzione di configurazione inferita di devsecops utilizza un suggerimento basato sul nome del file per determinare i file di configurazione dell'ambiente. Ad esempio, un file denominato .env.npm-test.sh verrà selezionato come script di configurazione dell'ambiente da richiamare prima di eseguire il test unitario npm.
Il formato standard per un file di configurazione dell'ambiente è simile a .env.<process>.sh o .env.<tool>-<process>.sh.
Il valore per <process> può essere uno tra build, test, acceptance-test, deploy, dynamic-scan o release.
Per il processo di " build ", il valore di " <tool> " può essere uno tra " code-engine", " docker", " docker-maven-plugin",
" go", " gradle", " helm", " maven", " npm", " pip", " pipenv", " poetry",
" terraform " o " yarn".
Per i processi di test e acceptance-test, il valore di <tool> può essere uno tra go, gradle, helm, maven, npm, pytest,
python o terratest.
Per il processo di " deploy ", il valore di " <tool> " può essere uno tra " code-engine", "helm", " kubectl-liberty-app",
" kubectl", " schematics " o " terraform".
Per un processo di " dynamic-scan ", il valore di " <tool> " può essere " trigger-async-zap".
Per il processo release, il valore di <tool> può essere uno tra maven, poetry o semantic-release.
Ecco alcuni esempi:
.env.build.shil file è associato come impostazione dell'ambiente per la compilazione del processo nei punti di codice. Può essere sostituito da un file di configurazione dell'ambiente per uno strumento con ambito (come docker, maven...) come.env.docker-build.sh,.env.maven-build.sh,....env.test.shil file è associato come impostazione dell'ambiente per il test dell'unità di processo nei punti di codice. Può essere sostituito da un file di configurazione dell'ambiente per uno strumento con ambito (come go, npm...) come.env.go-test.sh,.env.npm-test.sh,....env.deploy.shil file è associato come impostazione dell'ambiente per il processo nei punti di distribuzione. Può essere sostituito da un file di configurazione dell'ambiente per uno strumento con ambito (come code-engine, helm, kubectl...) come.env.code-engine-deploy.sh,.env.helm-deploy.sh,....env.acceptance-test.shil file è associato come impostazione ambiente per il processo nei punti di test di accettazione. Può essere sostituito da un file di configurazione dell'ambiente per uno strumento con ambito (come go, maven, npm...) come.env.maven-acceptance-test.sh,.env.python-acceptance-test.sh,....env.dynamic-scan.shil file è associato come impostazione ambiente per il processo nei punti di scansione dinamica..env.release.shil file è associato come impostazione ambiente per il processo nei punti di rilascio. Può essere sostituito da un file di configurazione dell'ambiente per uno strumento con ambito (come maven, semantic-release...) come.env.maven-acceptance-test.sh,.env.semantic-release-acceptance-test.sh,...
Per un esempio di utilizzo di questo script, vedere il repository Hello Compliance App su IBM Cloud.
Iniezione del contesto ambientale
La funzione Inferred DevSecOps Pipeline Configuration incorpora le variabili d'ambiente delle proprietà di pipeline e trigger in vari contesti di progetto. I contesti del progetto sono i seguenti:
- Fasi di esecuzione della pipeline
- Distribuzioni Helm
- Distribuzioni di Code Engine
Questa funzione consente di iniettare o impostare il contesto, come le variabili d'ambiente, dalle proprietà della pipeline e del trigger, in base ai nomi normalizzati delle proprietà.
Alcuni strumenti gestiscono proprietà con nomi normalizzati che vengono iniettati in contesti specifici, come ad esempio:
- argomenti di docker build e/o segreti di docker build
- file '
values.yamlcomplementari per le distribuzioni Helm configmapo 'secretper le implementazioni di Code Engine
Utilizzando nomi di proprietà normalizzati, è possibile iniettare variabili d'ambiente e altri contesti nella pipeline e nelle distribuzioni.
Iniezione di variabili d'ambiente nelle fasi di esecuzione della pipeline
La funzione Inferred DevSecOps Pipeline Configuration fornisce un'utilità 'export-properties per esportare le proprietà della pipeline e dei trigger come variabili d'ambiente durante l'esecuzione dello stage. Questa utility
viene invocata in ogni fase personalizzata:
export-properties "GLOBAL" && export-properties "${STAGE^^}"
Variabili d'ambiente globali
Il comando 'export-properties "GLOBAL" esporta le proprietà della pipeline e dei trigger con nomi normalizzati con 'ENV_GLOBAL_<XXX> come variabili d'ambiente, come 'XXX in ogni contesto
di esecuzione della pipeline.
Esempio di variabile d'ambiente globale
| Nome proprietà | Valutatore immobiliare | Variabile d'ambiente risultante |
|---|---|---|
ENV_GLOBAL_my_var |
my_value |
my_var=my_value |
Variabili d'ambiente specifiche di uno stadio
Il comando 'export-properties "${STAGE^^}" esporterà le proprietà della pipeline o del trigger rilevanti per lo stage correntemente eseguito con il nome normalizzato 'ENV_<stage in upper case>_<XXX> come variabili d'ambiente nello stage eseguito.
Esempio di variabili d'ambiente specifiche di uno stadio
| Nome proprietà | Valutatore immobiliare | Variabile d'ambiente risultante |
|---|---|---|
ENV_SETUP_CGO_ENABLED |
true |
CGO_ENABLED=true |
Nella pipeline CI, il passo " code-setup - run-stage ha la variabile d'ambiente " CGO_ENABLED impostata sul valore corretto.
Per un elenco delle fasi e delle relative descrizioni, consultare il " descrizioni delle fasi.
Un caso d'uso tipico di questa funzione è l'iniezione di variabili d'ambiente prima dell'esecuzione dei test unitari, per fornire la configurazione. In questo caso, il nome normalizzato delle proprietà sarebbe 'ENV_TEST_<a_var>,
mentre '<a_var> sarebbe il nome della variabile d'ambiente esportata per essere disponibile per l'esecuzione dello stage test`.
Esempio
| Nome proprietà | Valutatore immobiliare | Variabile d'ambiente risultante |
|---|---|---|
ENV_TEST_MY_VAR |
my_value |
MY_VAR=my_value |
Utilizzare questa funzione per semplificare la configurazione delle pipeline e migliorare la coerenza tra le distribuzioni.
Esecuzione e configurazione dello strumento
Alcuni strumenti della funzione Inferred DevSecOps Pipeline Configuration utilizzano le proprietà della pipeline e dei trigger per dedurre la configurazione complementare.
Docker
- Argomenti di build: Il comando docker build viene completato con i parametri --build-arg basati sulle proprietà della pipeline e del trigger con un nome normalizzato come '
DOCKER_BUILD_ARG_.- Esempio: L'aggiunta di una proprietà denominata '
DOCKER_BUILD_ARG_my_arginietta il parametro '--build-arg="my_arg="nel comando docker build.
- Esempio: L'aggiunta di una proprietà denominata '
- Segreti di compilazione: Il comando docker build viene completato con i parametri --secret basati sulle proprietà della pipeline e del trigger con un nome normalizzato come '
DOCKER_BUILD_SECRET_.- Ad esempio, l'aggiunta di una proprietà denominata DOCKER_BUILD_SECRET_my_secret inietta il parametro --secret id=my_secret,env= nel comando docker build.
Per saperne di più, consultare gli argomenti di docker build e il segreto di docker build
Helm
- Elaborazione del deploy: È possibile iniettare valori aggiuntivi nel processo di deploy Helm in base alle proprietà normalizzate di pipeline e trigger.
- Se una proprietà ha un nome come '
HELM_VALUE_,, il file dei valori complementari gestito dallo strumento di elaborazione Helm aggiunge una voce 'a_value_propertycon il valore della proprietà della pipeline o del trigger. - Il file dei valori complementari viene utilizzato come argomento dell'ultimo parametro '
-f | --valuesdel comando helm.
- Se una proprietà ha un nome come '
Per saperne di più, consultare i contenuti dei valori complementari.
Terraform
- Processo di distribuzione Lo strumento Terraform si basa sulle funzioni helper di Terraform fornite da compliance-commons terraform.
- Per ulteriori informazioni sulle proprietà di configurazione per l'iniezione di contesto, vedere Configurazione delle variabili di input di Terraform.
Schematics
- Processo di distribuzione: Lo strumento Schematics si basa sulle funzioni helper di Schematics fornite da compliance-commons schematics.
- Per ulteriori informazioni sulle proprietà di configurazione per l'iniezione di contesto, consultare Configurazione delle variabili dichiarate nell'area di lavoro Schematics.
Code Engine
- Processo di distribuzione: È possibile creare una configurazione aggiuntiva per l'applicazione definendo una configmap complementare o un segreto associato all'applicazione.
- Per le proprietà di pipeline e trigger con un nome normalizzato come '
CE_ENV_<XXXX>, verrà creata una voce in una configmap complementare o in un segreto (associato all'applicazione o al lavoro di Code Engine ) con la chiave '<XXXX>e il suo valore impostato in base al valore della proprietà di pipeline o trigger corrispondente.
- Per le proprietà di pipeline e trigger con un nome normalizzato come '
Per saperne di più, consultare le configmap di code-engine per configurare applicazioni o lavori e code-engine secret per configurare applicazioni o lavori
Libreria di script comuni DevSecOps
Inferred DevSecOps Pipeline Configuration utilizza in alcune fasi script/funzioni provenienti dagli script della libreria comune, che offre un insieme di script riutilizzabili che possono aiutare l'utente a iniziare la personalizzazione.
Per ulteriori informazioni sulla libreria di script comuni, compresi gli script, gli strumenti, l'uso e i parametri, vedere Libreria di script comuni.
FAQ
Protezione dei rami
Abilitare la protezione delle diramazioni per impostazione predefinita
Le pipeline DevSecOps PR e CI abilitano la protezione delle filiali sul repository del codice sorgente per impostazione predefinita. Questa verifica avviene durante la fase di impostazione del codice.
Disattivare la protezione del ramo
Per disattivare la protezione delle diramazioni, impostare la proprietà 'setup-branch-protection su 'false.
Personalizzare i controlli di stato della protezione di filiale
Per personalizzare il prefisso per i controlli dello stato di protezione delle diramazioni, impostare la proprietà 'branch-protection-status-check-prefix.
Il prefisso predefinito è " tekton.
Configurazione ed esecuzione degli hook di pre-commit
Per impostazione predefinita, le pipeline PR e CI con configurazione inferita di DevSecOps eseguono i ganci di pre-commit nella fase di impostazione se esiste un file di configurazione di pre-commit nel
repository del codice sorgente (predefinito a .pre-commit-config.yaml ). Il nome del file di configurazione pre-commit può essere specificato dalla proprietà pipeline/trigger pre-commit-config-file impostata sul
nome del file di configurazione.
Alcuni hook di pre-commit possono essere saltati (ad esempio perché un determinato hook come detect-secrets viene eseguito in una fase specifica delle pipeline PR o CI). Per specificare i ganci da saltare, impostare la proprietà
della pipeline/trigger pre-commit-skip-hooks su un elenco separato da virgole di id di ganci da saltare.
Server Sonarqube con certificato autofirmato
se sonarqube-config è impostato su custom per utilizzare un server sonarqube esistente e il server ha un certificato autofirmato,
affinché lo scanner sonar si connetta correttamente al server sonarqube, il certificato autofirmato deve essere aggiunto ai certificati CA affidabili.
Fornendo il certificato in formato PEM come valore della proprietà sonarqube-root-certificate della pipeline/trigger, l'implementazione di static-scan nella configurazione della pipeline Inferred DevSecOps lo aggiungerà di conseguenza
per l'uso di SonarScanner per maven, SonarScanner per gradle sonar o SonarScanner invocato con Docker.
Poesia e archivi privati
Configurare la poesia per i repository privati
Quando si usa Poetry (pyproject.toml è identificato come un punto di codice) e si definisce una fonte o un repository alternativo per recuperare le dipendenze, come ad esempio:
[[tool.poetry.source]]
name = "local"
url = "https://na-public.artifactory.swg-devops.com/artifactory/api/pypi/ip-devops-team-pypi-virtual/simple"
secondary = true
o quando è coinvolta la Poesia (ad esempio, pyproject.toml che contiene una sezione build-system con build-backend uguale a poetry.core.masonry.api è un punto di rilascio
identificato), potrebbe essere necessario fornire le credenziali per autenticarsi ai registri privati.
Autenticazione con repository privati in IBM Cloud
È necessario fornire le credenziali per questo repository sorgente 'local. La documentazione di Poesia sulla configurazione delle credenziali indica che le variabili d'ambiente per fornire utente e password http devono essere 'POETRY_HTTP_BASIC_LOCAL_USERNAME e 'POETRY_HTTP_BASIC_LOCAL_PASSWORD.
Utilizzare la funzione di iniezione di variabili d'ambiente e aggiungere le seguenti proprietà d'ambiente della pipeline:
ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME(testo) con il valore appropriatoENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD(secured) con il valore secured appropriato
Autenticazione per pubblicare su repository privati
Quando è coinvolta la poesia (per esempio pyproject.toml che contiene una sezione build-system con build-backend uguale a poetry.core.masonry.api è un punto di rilascio identificato),
la configurazione per il token o il nome utente può essere definita usando le proprietà dell'ambiente della pipeline come (per un repository chiamato local):
ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME(testo) con il valore appropriatoENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD(secured) con il valore secured appropriato
oppure
ENV_GLOBAL_POETRY_PYPI_TOKEN_LOCAL(secured) con l'appropriato valore secured corrispondente al token
Maven, pom.xml, settings.xml e risoluzione dell'ambiente
Configurare Maven per i file delle impostazioni personalizzate in IBM Cloud
Se il progetto Maven definisce un file di impostazioni specifico con un nome di file personalizzato, come 'ci-settings.xml, definire una proprietà dell'ambiente della pipeline maven-user-settings-file-path con il valore impostato a 'ci_settings.xml nelle proprietà a livello di PR, pipeline CI o trigger.
Inoltre, se c'è qualche 'env.<VARIABLE> da risolvere come:
<server>
<username>${env.MAVEN_USERNAME}</username>
<password>${env.MAVEN_PASSWORD}</password>
<id>central</id>
</server>
Usare la funzione di iniezione di variabili d'ambiente per fornire queste variabili aggiungendo 2 proprietà alla pipeline (nella pipeline PR e CI):
ENV_GLOBAL_MAVEN_USERNAME(testo) con il valore da utilizzare per il nome utente di mavenENV_GLOBAL_MAVEN_PASSWORD(secured) con il valore da utilizzare per la password di maven
Forzare i collegamenti statici per le build di Go
Abilitare il collegamento statico per le build di Go
Per impostazione predefinita, 'go build produce un binario collegato dinamicamente. Per usarlo in un contenitore Docker, abilitare il collegamento statico impostando 'CGO_ENABLED=0 durante la compilazione.
Configurare la variabile d'ambiente per la compilazione di Go
Per abilitare il collegamento statico, usare la funzione di iniezione di variabili d'ambiente per aggiungere la seguente proprietà d'ambiente nella pipeline CI:
ENV_SETUP_CGO_ENABLEDcon il valore impostato su '0
Ottenere il supporto
IBM Cloud IBM l'assistente IA di , basato sull' watsonx di , è progettato per aiutarti a imparare a lavorare in IBM Cloud e a creare soluzioni con il catalogo di offerte disponibile. Vedere Ottenere aiuto dall'assistente IA.
Se il problema persiste, è possibile aprire un caso di assistenza. Per ulteriori informazioni, vedere Creazione di casi di supporto. E, se desideri inviare un feedback, consulta la sezione Invio di feedback.