IBM Cloud Docs
Creare una pipeline con la configurazione Inferred DevSecOps

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.yaml per 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

  1. 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.

  2. 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à spot
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:

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:

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:

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:

Abilitare o disabilitare il 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 a Dockerfile (come docker o code-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 predefinita docker) Per le build relative al Dockerfile, specificare lo strumento da utilizzare (docker o podman) per creare l'immagine del container.
  • root-as-build-context: (Impostazione predefinita: false) indica che il contesto di compilazione per strumenti di Dockerfile compilazione correlati (come docker, podman o code-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 python unittest (per esempio, per scoprire i test unitari dalla directory contenente requirements.txt alla radice del repository e non da requirements.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.sh il 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.sh il 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.sh il 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.sh il 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.sh il file è associato come impostazione ambiente per il processo nei punti di scansione dinamica.
  • .env.release.sh il 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.yaml complementari per le distribuzioni Helm
  • configmap o 'secret per 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
Esempio di variabili d'ambiente globali
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
Esempio di variabili d'ambiente globali
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
Esempio di variabili d'ambiente specifiche di uno stadio
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_arg inietta il parametro '--build-arg="my_arg=" nel comando docker build.
  • 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_property con il valore della proprietà della pipeline o del trigger.
    • Il file dei valori complementari viene utilizzato come argomento dell'ultimo parametro '-f | --values del comando helm.

Per saperne di più, consultare i contenuti dei valori complementari.

Terraform
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 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 appropriato
  • ENV_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 appropriato
  • ENV_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 maven
  • ENV_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_ENABLED con 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.