Erstellen einer Pipeline mit Inferred DevSecOps
Sobald Sie Ihre eigene Anwendung oder Ihren eigenen Microservice zur Continuous-Integration-Toolkette (CI) von „ DevSecOps “ hinzugefügt haben, können Sie die Funktion „Inferred DevSecOps Pipeline Configuration“ nutzen, um schnell loszulegen. Diese Funktion:
- Ermittelt den Inhalt der DevSecOps "
.pipeline-config.yamlfür Sie - Identifiziert die Skripte, die zum Erstellen, Testen und Bereitstellen Ihres Codes erforderlich sind
- Stellt den Code für diese Skripte bereit, damit Sie sich auf Ihre Anwendung konzentrieren können
Mit dieser Funktion können Sie Ihre Microservices oder Anwendungen ganz einfach in DevSecOps Pipelines integrieren und deren DevSecOps Einführung optimieren.
Es sind keine zusätzlichen Schritte erforderlich, um die abgeleitete DevSecOps Pipeline-Konfiguration zu konfigurieren, da diese bereits in die DevSecOps integriert ist.
DevSecOps Die Toolchain für Continuous Deployment (CD) verfügt ebenfalls über eine Standard-Pipeline-Konfiguration. Damit können Anwender, die auf der CI-Seite die „ DevSecOps-Konfiguration“ von Inferred nutzen, denselben Ansatz sicher auf ihre
CD-Pipelines ausweiten. Die Bereitstellungsmaßnahmen werden auf der Grundlage der Metadaten „ app_artifacts “ aus den Bestandsdatensätzen festgelegt.
DevSecOps Auch die Toolchain für kontinuierliche Compliance (CC) kann von der Konfiguration der abgeleiteten Konformitätsbewertung ( DevSecOps ) profitieren. Die Pipeline-Konfiguration wird anhand des Inhalts der in den Inventareinträgen vorhandenen Repositorys abgeleitet.
Voraussetzungen
-
Richten Sie Ihre DevSecOps Toolchains ein und integrieren Sie das Quellcode-Repository Ihrer Anwendung.
Verwenden Sie nicht das Standard-Repository für Beispielanwendungen. Stattdessen sollten Sie das Repository Ihrer eigenen Anwendung einbinden.
-
Informieren Sie sich über die Grundlagen der DevSecOps und erfahren Sie mehr über die verschiedenen verfügbaren Vorlagen, Support-Optionen und andere wichtige Informationen für Ihren Einstieg in DevSecOps.
Einführung
Konfigurieren Sie zunächst Ihre Toolchains so, dass sie Ihr eigenes Quellcode-Repository verwenden. Dann, ' laufen Ihr erster ' DevSecOps CI-Pipeline. Diese Funktion ist standardmäßig aktiviert, so dass keine weiteren Einstellungen erforderlich sind. Es leitet dynamisch die DevSecOps und Skripte ab, die zum Erstellen, Testen und Bereitstellen Ihrer Anwendung oder Ihres Dienstes erforderlich sind.
Um diese Funktion zu deaktivieren, setzen Sie einen ' pipeline-config, der mit einer bestehenden Datei in Ihrem Repository übereinstimmt.
Spots mit abgeleiteter DevSecOps
Die Funktion "Inferred DevSecOps Pipeline Configuration" verwendet Quelltext-Introspektion und Sprachdefinition, um " spots in Ihrem Quelltext-Repository zu identifizieren. Ein " spot ist eine
Stelle in Ihrem Code, an der eine bestimmte Aktion ausgeführt werden muss.
Jeder Spot hat die folgenden Eigenschaften:
| Eigenschaft | Beschreibung |
|---|---|
| Quelle | Gibt einen Ort im Quellcode-Repository als Kontext des Spots an. |
| Prozesse | Ein oder mehrere Prozesse, die die Art des auszuführenden Vorgangs angeben. |
| Tools | Ein Array, das mit einem Prozess verknüpft ist und die Werkzeuge auflistet, die zur Durchführung der Aktion gestartet werden müssen. Jedes Werkzeug kann einen eigenen Satz von Eigenschaften haben. |
| Umgebungskonfiguration | Verweist auf eine Skriptdatei (oder Skriptbefehle), die gestartet wird, um die Umgebung für den auszuführenden Prozessvorgang (Werkzeugaufrufe) einzurichten. |
Identifizierte Punkte
Die Funktion Inferred DevSecOps Pipeline Configuration identifiziert derzeit die folgenden Arten von " spots:
code, deployment, acceptance-test, dynamic-scan und release.
Code-Spots
Code-Spots beziehen sich auf eine unterstützte Quellcode-Sprache, einschließlich:
- Node.js (mit npm, Yarn oder Gradle)
- Java (mit Maven oder Gradle)
- Golang
- Python
- Dockerfile
- Terraform-Konfigurationssprache
Die ' code Spots behandeln die folgenden Prozesse:
building: Definiert die Werkzeuge, die den Build des angegebenen Quellcodes durchführen.unit-testing: Hier finden Sie die Tools, die Unit-Tests für das Build-Ergebnis durchführen.
Einsatzorte
Die ' deployment Spots lokalisieren ein Einsatzfahrzeug, einschließlich der Einsatzmittel und -werkzeuge. die deployment Spots haben einen Einsatzprozess, der die Einsatzmittel auflistet. Die derzeit unterstützten
Einsatzfahrzeuge sind:
-
Kubernetes wie '
Pod, 'ReplicaSet, 'ReplicationController, 'Deployment, 'Daemonset, 'StatefulSet, 'Job, 'Cronjob, 'NetworkPolicy, 'Ingress, 'Service, 'Route- kubectl als Werkzeug -
Websphere Liberty Application Custom Resource- kubectl als Werkzeug
-
Benutzerdefinierte RessourceOpen Liberty- kubectl als Werkzeug
-
Helm- das Ruder als Werkzeug
-
Terraform Konfiguration- IBM Cloud Schematics oder Terraform CLI als Werkzeug
-
Wazi DeploymentMethod Custom Resource- Wazi Deploy als Werkzeug
-
Dockerfile, wenn IBM Cloud Code Engine für die Bereitstellung konfiguriert wurde- IBM Cloud Code Engine CLI als Werkzeug
Akzeptanzprüfungsstellen
Die " acceptance-test Spots lokalisieren eine auszuführende Akzeptanztestsuite. die acceptance-test haben einen " acceptance-testing, der die Werkzeuge für die Ausführung der Akzeptanztestsuite
angibt.
Dynamic-Scan-Spots
Die ' dynamic-scan-Punkte kennzeichnen Orte für einen dynamischen Scan. Dynamic-Scan-Spots haben einen ' scanning, um die Scan-Tools aufzulisten, die während des dynamischen Scans aufgerufen werden.
Der OWASP ZAP-Scan ist das einzige unterstützte Tool, das einen Sub-Webhook-Trigger auslösen kann.
Spots freigeben
Die ' release-Punkte markieren den Freigabeprozess. Freigabestellen haben einen ' releasing, der die Werkzeuge auflistet, die während der Freigabephase ausgeführt werden sollen. Derzeit werden folgende Werkzeuge
für den Freigabeprozess unterstützt:
- semantische-Freigabe
- maven mit der Phase '
maven deploy.
Beispiel für den Inhalt von polyglot-spots.json
Die Inferred DevSecOps Pipeline Configuration-Funktion extrahiert Spots und generiert den folgenden JSON-Inhalt, um bestimmte Aktionen und Tools während der CI-Pipeline-Phasen auszulösen.
{
"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": []
}
Erweiterte Konfiguration
Injektion von Dateien
Die Funktion "Inferred DevSecOps Pipeline Configuration" verwendet den Inhalt der Dateien " polyglot-spots.json und " .pipeline-config.yaml, um die Ausführung des DevSecOps anzupassen.
Während der " finish-Phase einer CI-Pipeline werden sowohl " polyglot-spots.json als auch " .pipeline-config.yaml (entsprechend der statischen Pipeline-Konfiguration der CI-Pipeline-Ausführung)
zu einer Verzweigung mit dem Namen " inferred-devsecops (Standard) im Quellcode-Repository der Anwendung hinzugefügt.
Die Pipeline-Konfiguration mit der Formatversion 2 (z. B. verwendbar mit dem Compliance-Pipelines-Zweig v11 ) kann auch generiert werden, wenn die Eigenschaft create-inferred-pipeline-configuration-v2 auf true (Standardwert: false ) gesetzt ist. Eine zusätzliche Pipeline-Konfigurationsdatei wie .pipeline-config-v2.yaml wird dann dem Zweig mit dem Namen inferred-devsecops (Standard) im
Quellcode-Repository der Anwendung hinzugefügt.
Konfigurieren des Einspritzzweigs
Mit der Pipeline-Eigenschaft " inferred-devsecops-branch können Sie den Namen der Verzweigung für die Injektion der von DevSecOps abgeleiteten Dateien konfigurieren. Der Standardwert ist inferred-devsecops.
Verwenden Sie die Pipeline-Eigenschaft push-inferred-pipeline-configuration-files (die push-polyglot-files-Eigenschaft ist zugunsten der push-inferred-pipeline-configuration-files-Eigenschaft veraltet),
um die Erstellung und Aktualisierung des inferred-devsecops-Zweigs zu aktivieren oder zu deaktivieren:
| Wert | Beschreibung |
|---|---|
true(Standard) |
Die Konfigurationsdateien werden hinzugefügt und in den Zweig " inferred-devsecops des Quellcode-Repositorys der Anwendung verschoben. |
false |
Konfigurationsdateien werden dem inferred-devsecops-Zweig nicht hinzugefügt. |
Konfigurieren der Fleckenextraktion
Konfigurieren Sie die Extraktion von Spots mit Hilfe der folgenden Pipeline-Umgebungseigenschaften:
Flecken ignorieren
Sie können bestimmte Stellen bei der Extraktion ignorieren, indem Sie reguläre Ausdrücke verwenden. Die folgenden Konfigurationsoptionen sind verfügbar:
ignore-code-spot-pattern: Ignoriert Codestellen, die dem angegebenen regulären Ausdruck entsprechen.ignore-deployment-spot-pattern: Ignoriert Einsatzstellen, die dem angegebenen regulären Ausdruck entsprechen.ignore-dynamic-scan-spot-pattern: Ignoriert dynamisch gescannte Spots, die dem angegebenen regulären Ausdruck entsprechen.ignore-acceptance-test-spot-pattern: Ignoriert Akzeptanztest-Spots, die dem angegebenen regulären Ausdruck entsprechen.ignore-release-spot-pattern: Ignoriert Freigabepunkte, die dem angegebenen regulären Ausdruck entsprechen.
Code Engine Konfiguration
Wenn Sie IBM Cloud Code Engine für die Bereitstellung verwenden, geben Sie das Projekt Code Engine an und konfigurieren Sie den Build-Prozess mit den folgenden Eigenschaften der Pipeline-Umgebung:
code-engine-project: Gibt das Code Engine an.code-engine-build-use-native-docker: (Standard: 'false) Gibt an, ob Docker CLI anstelle des Befehls 'ibmcloud code-engine buildrunverwendet werden soll.code-engine-disable-buildpacks-strategy(Standardfalse) Gibt an, dass der Erstellungsprozess nicht die Strategiebuildpacksverwenden soll (nur gültig, wenncode-engine-projectfestgelegt wurde)root-as-build-context: (Standard:false) gibt an, dass der Build-Kontext für das mitDockerfileverknüpfte Build-Tool (wiedockerodercode-engine) das Stammverzeichnis des Repositorys als Build-Kontext verwenden sollte und nicht den Ordner, der die Docker-Datei enthält.
Konfiguration zum Erstellen von Container-Images
container-image-builder: (Standardmäßigdocker) Für Dockerfile-bezogene Builds geben Sie das zu verwendende Tool (dockeroderpodman) zum Erstellen des Container-Images an.root-as-build-context: (Standard:false) gibt an, dass der Build-Kontext fürDockerfilezugehörige Build-Tools (wiedocker,podmanodercode-engine) den Stamm des Repositorys als Build-Kontext verwenden soll und nicht den Ordner, der die Dockerfile enthält.
Golang Konfiguration
Um den Spotextraktionsprozess für Golang zu konfigurieren, legen Sie die folgenden Eigenschaften der Pipeline-Umgebung fest:
go-ignore-main: (Voreinstellung: 'false) Gibt an, ob die Code-Spot-Extraktion sich nicht auf die Erkennung des Hauptpakets und der Hauptfunktion für das Hauptquellargument konzentrieren soll.go-output: Gibt die ausführbare Ausgabedatei des go build-Befehls an.
Gradle
Zum Konfigurieren der Gradle Aufgaben für Setup, Unit-Tests, Build-Artefakte und Akzeptanztests verwenden Sie die folgenden Eigenschaften der Pipeline-Umgebung:
gradle-setup-tasks: (Standard: 'assemble) Kommagetrennte Liste von Gradle für die Einrichtungsphase.gradle-unit-testing-tasks: (Standard: 'test) Kommagetrennte Liste von Gradle für die Unit-Test-Phase.gradle-build-artifact-tasks: (Standard: 'build) Komma-getrennte Liste von Gradle für die Build-Artefakt-Stufe.gradle-acceptance-testing-tasks: Komma-getrennte Liste von Gradle für die Akzeptanztestphase.
NPM-Konfiguration
Sie können die NPM-Skripterkennung für Unit-Tests und Akzeptanztests konfigurieren.
hint-npm-unit-testing-script: (Standard: 'test) Hinweise zur Erkennung von NPM-Unit-Test-Skripten.hint-npm-acceptance-testing-script: (Standard: 'acceptance-test) Hinweise zur Erkennung von NPM-Akzeptanztestskripten.
Python
Um die Python Poetry-Version zu konfigurieren, verwenden Sie die folgenden Eigenschaften der Pipeline-Umgebung:
hint-python-poetry-version: (Standard: '1.8.2) Hinweise zur Python Poetry Version.discover-python-unittest-from-ancestor: (Standard:false) gibt an, dass das Vorgängerverzeichnis als Ausgangspunkt für die Erkennung von Pythonunittestverwendet wird (z. B. um Unit-Tests aus dem Verzeichnis zu erkennen, dasrequirements.txtim Stammverzeichnis des Repositorys enthält, und nicht aus demrequirements.txt(falls vorhanden), das den Python-Unittest-Dateien am nächsten liegt).
Terraform-Konfiguration
Um den Terraform-Bereitstellungsprozess zu konfigurieren, verwenden Sie die folgenden Eigenschaften der Pipeline-Umgebung:
terraform-deployment: (Standard: 'false) Deaktiviert Schematics als Verteilungsvehikel zugunsten von Terraform und Cloud Object Storage für die Zustandsspeicherung.
Helm Konfiguration
Verwenden Sie die folgenden Pipeline-Umgebungseigenschaften, um den Helm-Release-Prozess zu konfigurieren:
helm-oci-registry-support: (Standardmäßig aktiviertfalse) Aktivieren Sie die Übertragung des Helm-Charts in die OCI-Registrierung im Release-Schritt.configuration-file-pattern-<config_file_type>: Definieren Sie ein Muster, um Konfigurationsdateien eines bestimmten Typs zu identifizieren. Beispielsweise wählt der Befehl „configuration-file-pattern-dev-config=chart/dev-values.yaml“ die Datei(en) „chart/dev-values.yaml“ als Artefakt vom Typ „dev-config“ aus.
Artefakt-Upload
Um den Artefakt-Upload-Prozess zu konfigurieren, verwenden Sie die folgenden Eigenschaften der Pipeline-Umgebung:
artifact-upload-to-devsecops-cos: (Standard: 'false) Ermöglicht das Hochladen von Artefakten in einen Cloud Object Storage unter Verwendung des DevSecOps CLI-Artefakt-Uploads für nicht als Bild gespeicherte Artefakte.
Umgebung einrichten Dateien
Jedes Quellcode-Repository erfordert eine spezifische Einrichtung oder Anpassung für eine bestimmte Phase. Die Funktion "Inferred DevSecOps Pipeline Configuration" bietet eine Möglichkeit, eine Eigenschaft für die Einrichtung der
Umgebung anzugeben, die als bash-Skript definiert werden kann. Dieses Skript wird aufgerufen, bevor die entsprechende Aktion für einen Prozess ausgeführt wird.
Während der Extraktion von Spots verwendet dieses abgeleitete Devsecops-Konfigurationsmerkmal einen Hinweis, der auf dem Dateinamen basiert, um die Umgebungskonfigurationsdateien zu bestimmen. Zum Beispiel wird eine Datei mit dem Namen .env.npm-test.sh als Umgebungs-Setup-Skript ausgewählt, das vor der Ausführung des npm-Unit-Tests aufgerufen wird.
Das standardisierte Format für eine Umgebungskonfigurationsdatei sieht wie folgt aus: .env.<process>.sh oder .env.<tool>-<process>.sh.
Der Wert für <process> kann einer der folgenden sein: build, test, acceptance-test, deploy, dynamic-scan oder release.
Für den Prozess build kann der Wert von <tool> einer der folgenden sein: code-engine, docker, docker-maven-plugin, go, gradle, helm,
maven, npm, pip, pipenv, poetry, terraform oder yarn.
Für test- und acceptance-test-Prozesse kann der Wert von <tool> einer der folgenden sein: go, gradle, helm, maven, npm, pytest,
python oder terratest.
Für den Prozess deploy kann der Wert von <tool> einer der folgenden sein: code-engine,helm, kubectl-liberty-app, kubectl, schematics oder terraform.
Für den Prozess dynamic-scan kann der Wert von <tool> trigger-async-zap sein.
Für den Prozess release kann der Wert von <tool> einer der Werte maven, poetry oder semantic-release sein.
Hier sind einige Beispiele:
.env.build.shdie Datei ist als "environment-setup" für die Prozess-Erstellung in Code-Spots verknüpft. Sie kann durch eine Umgebungs-Setup-Datei für ein bereichsspezifisches Tool (wie Docker, Maven usw.) überschrieben werden, z. B..env.docker-build.sh,.env.maven-build.sh,....env.test.shdie Datei ist als "environment-setup" für die Prozess-Unit-Tests in Code-Spots verknüpft. Sie kann durch eine Umgebungs-Setup-Datei für ein bereichsbezogenes Tool (wie go, npm...) überschrieben werden, z. B..env.go-test.sh,.env.npm-test.sh,....env.deploy.shdie Datei ist als "Umgebungseinstellung" für den Prozess in Bereitstellungsspeicherorten zugeordnet. Sie kann durch eine Umgebungs-Setup-Datei für ein Tool mit Geltungsbereich (wie Code-Engine, Helm, Kubectl usw.) überschrieben werden, z. B..env.code-engine-deploy.sh,.env.helm-deploy.sh,....env.acceptance-test.shdie Datei ist als Umgebungskonfiguration für den Prozess in Akzeptanztest-Spots verknüpft. Sie kann durch eine Umgebungs-Setup-Datei für ein Tool mit Geltungsbereich (wie go, maven, npm...) überschrieben werden, z. B..env.maven-acceptance-test.sh,.env.python-acceptance-test.sh,....env.dynamic-scan.shdie Datei ist als "environment-setup" für den Prozess in "dynamic-scan spots" verknüpft..env.release.shdie Datei ist als "environment-setup" für den Prozess in den Freigabestellen zugeordnet. Sie kann durch eine Umgebungs-Setup-Datei für ein Tool mit Geltungsbereich (wie maven, semantic-release...) überschrieben werden, z. B..env.maven-acceptance-test.sh,.env.semantic-release-acceptance-test.sh,...
Ein Beispiel für die Verwendung dieses Skripts finden Sie im Hello Compliance App Repository auf IBM Cloud.
Umgebung Kontext Injektion
Die Funktion Inferred DevSecOps Pipeline Configuration integriert Umgebungsvariablen aus Pipeline- und Triggereigenschaften in verschiedene Projektkontexte. Die Projektkontexte sind wie folgt:
- Phasen der Pipeline-Ausführung
- Helm-Bereitstellungen
- Code Engine
Mit dieser Funktion können Sie Kontext, wie z. B. Umgebungsvariablen, aus Pipeline- und Triggereigenschaften auf der Grundlage normalisierter Eigenschaftsnamen injizieren oder festlegen.
Einige Werkzeuge verarbeiten Eigenschaften mit normalisierten Namen, die in bestimmte Kontexte eingefügt werden, wie z. B.:
- docker-Build-Argumente und/oder Docker-Build-Geheimnisse
- ergänzende '
values.yaml-Dateien für Helm configmapoder 'secretfür Code Engine
Durch die Verwendung normalisierter Eigenschaftsnamen können Sie Umgebungsvariablen und anderen Kontext in Ihre Pipeline und Bereitstellungen einfügen.
Injektion von Umgebungsvariablen in Pipeline-Ausführungsphasen
Die Funktion "Inferred DevSecOps Pipeline Configuration" bietet ein " export-properties-Dienstprogramm zum Exportieren von Pipeline- und Triggereigenschaften als Umgebungsvariablen während der Ausführung der Phase.
Dieses Dienstprogramm wird in jeder angepassten Phase aufgerufen:
export-properties "GLOBAL" && export-properties "${STAGE^^}"
Globale Umgebungsvariablen
Der Befehl " export-properties "GLOBAL" exportiert Pipeline- und Triggereigenschaften mit normalisierten Namen mit " ENV_GLOBAL_<XXX> als Umgebungsvariablen wie " XXX in jedem Ausführungskontext der Pipelinestufe.
Beispiel für eine globale Umgebungsvariable
| Eigenschaftsname | Immobiliengutachter | Resultierende Umgebungsvariable |
|---|---|---|
ENV_GLOBAL_my_var |
my_value |
my_var=my_value |
Stufenspezifische Umgebungsvariablen
Der Befehl " export-properties "${STAGE^^}" exportiert Pipeline- oder Triggereigenschaften, die für die aktuell ausgeführte Stufe relevant sind, mit dem normierten Namen " ENV_<stage in upper case>_<XXX> als Umgebungsvariablen in die angegebene ausgeführte Stufe.
Beispiel für stufenspezifische Umgebungsvariablen
| Eigenschaftsname | Immobiliengutachter | Resultierende Umgebungsvariable |
|---|---|---|
ENV_SETUP_CGO_ENABLED |
true |
CGO_ENABLED=true |
In der CI-Pipeline ist für den Schritt " code-setup - run-stage die Umgebungsvariable " CGO_ENABLED auf den richtigen Wert gesetzt.
Eine Liste der Stufen und ihrer Beschreibungen finden Sie unter " etappenbeschreibungen.
Ein typischer Anwendungsfall für diese Funktion ist die Einbindung von Umgebungsvariablen vor der Ausführung von Unit-Tests, um die Konfiguration zu ermöglichen. In diesem Fall würde der normalisierte Name der Eigenschaften " ENV_TEST_<a_var> lauten, wobei " <a_var> der Name der exportierten Umgebungsvariablen ist, die für die Ausführung der Testphase verfügbar sein soll.
Beispiel
| Eigenschaftsname | Immobiliengutachter | Resultierende Umgebungsvariable |
|---|---|---|
ENV_TEST_MY_VAR |
my_value |
MY_VAR=my_value |
Verwenden Sie diese Funktion, um Ihre Pipeline-Konfiguration zu vereinfachen und die Konsistenz in Ihren Bereitstellungen zu verbessern.
Tool-Ausführung und Konfiguration
Einige Tools in der Funktion "Abgeleitete DevSecOps " verwenden Pipeline- und Trigger-Eigenschaften, um eine ergänzende Konfiguration abzuleiten.
Docker
- Build-Argumente: Der Docker-Build-Befehl wird mit --build-arg auf der Grundlage von Pipeline- und Trigger-Eigenschaften mit einem normalisierten Namen wie "
DOCKER_BUILD_ARG_abgeschlossen.- Beispiel: Durch Hinzufügen einer Eigenschaft mit dem Namen "
DOCKER_BUILD_ARG_my_argwird der Parameter "--build-arg="my_arg="in den Docker-Build-Befehl eingefügt.
- Beispiel: Durch Hinzufügen einer Eigenschaft mit dem Namen "
- Build-Geheimnisse: Der Docker-Build-Befehl wird mit --secret auf der Grundlage von Pipeline- und Trigger-Eigenschaften mit einem normalisierten Namen wie "
DOCKER_BUILD_SECRET_abgeschlossen.- Wenn Sie beispielsweise eine Eigenschaft mit dem Namen DOCKER_BUILD_SECRET_my_secret hinzufügen, wird der Parameter --secret id=my_secret,env= in den Docker-Build-Befehl eingefügt.
Weitere Informationen finden Sie unter docker build arguments und docker build secret
Helm
- Bereitstellungsverarbeitung: Zusätzliche Werte können in den Helm auf der Grundlage von normalisierten Pipeline- und Triggereigenschaften eingespeist werden.
- Wenn eine Eigenschaft einen Namen wie "
HELM_VALUE_,hat, fügt die vom Helm verwaltete ergänzende Wertedatei einen Eintrag "a_value_propertymit dem Wert der Pipeline- oder Triggereigenschaft hinzu. - Die ergänzende Wertedatei wird als Argument des letzten '
-f | --values-Parameters für den Steuerkommando verwendet.
- Wenn eine Eigenschaft einen Namen wie "
Weitere Informationen finden Sie unter Komplementäre Werte.
Terraform
- Bereitstellungsprozess Das Terraform-Tool stützt sich auf Terraform-Helperfunktionen, die von compliance-commons terraform bereitgestellt werden.
- Weitere Informationen über Konfigurationseigenschaften für die Kontextinjektion finden Sie unter Konfigurieren von Terraform-Eingabevariablen.
Schematics
- Prozess der Bereitstellung: Das Schematics stützt sich auf Schematics, die von compliance-commons schematics bereitgestellt werden.
- Weitere Informationen zu den Konfigurationseigenschaften für die Kontextinjektion finden Sie unter Konfigurieren von deklarierten Variablen im Schematics.
Code Engine
- Bereitstellungsprozess: Zusätzliche Konfigurationen für die Anwendung können durch die Definition einer ergänzenden Configmap oder eines Geheimnisses für die Anwendung erstellt werden.
- Für Pipeline- und Triggereigenschaften mit einem normalisierten Namen wie "
CE_ENV_<XXXX>wird ein Eintrag in einer ergänzenden Configmap oder einem Geheimnis (das mit der Code Engine oder dem Auftrag verbunden ist) mit dem Schlüssel "<XXXX>erstellt und sein Wert auf der Grundlage des Werts der entsprechenden Pipeline- oder Triggereigenschaft festgelegt.
- Für Pipeline- und Triggereigenschaften mit einem normalisierten Namen wie "
Weitere Informationen finden Sie unter code-engine configmap(s)zur Konfiguration von Anwendungen oder Jobs und code-engine secret zur Konfiguration von Anwendungen oder Jobs
DevSecOps Bibliothek mit gemeinsamen Skripten
Inferred DevSecOps Pipeline Configuration verwendet in bestimmten Phasen Skripte/Funktionen aus den Skripten der allgemeinen Bibliothek, die eine Reihe wiederverwendbarer Skripte bietet, die Ihnen helfen können, wenn Sie mit der Anpassung beginnen möchten.
Weitere Informationen über die allgemeine Skriptbibliothek, einschließlich Skripts, Tools, Verwendung und Parameter, finden Sie unter Allgemeine Skriptbibliothek.
Häufig gestellte Fragen
Schutz der Branche
Verzweigungsschutz standardmäßig einschalten
DevSecOps PR- und CI-Pipelines aktivieren standardmäßig den Zweigschutz für das Quellcode-Repository. Diese Überprüfung erfolgt in der Phase der Code-Einstellung.
Abzweigschutz deaktivieren
Um den Verzweigungsschutz zu deaktivieren, setzen Sie die Eigenschaft " setup-branch-protection auf " false.
Anpassen der Statusprüfungen für den Zweigschutz
Um das Präfix für die Prüfungen des Zweigschutzstatus anzupassen, setzen Sie die Eigenschaft ' branch-protection-status-check-prefix.
Das Standardpräfix ist " tekton.
Konfiguration und Ausführung von Pre-Commit-Hooks
Standardmäßig führen PR- und CI-Pipelines mit der Konfiguration " DevSecOps " Pre-Commit-Hooks in der Setup-Phase aus, wenn eine Pre-Commit-Konfigurationsdatei im Quellcode-Repository vorhanden
ist (Standardmäßig .pre-commit-config.yaml ). Der Name der Pre-Commit-Konfigurationsdatei kann durch die Pipeline-/Trigger-Eigenschaft pre-commit-config-file angegeben werden, die auf den Namen der Konfigurationsdatei
gesetzt wird.
Einige Pre-Commit-Hooks können übersprungen werden (z. B. weil ein bestimmter Hook wie detect-secrets in einer bestimmten Phase der PR- oder CI-Pipelines ausgeführt wird). Um die zu überspringenden Hooks festzulegen, setzen Sie
die Pipeline-/Trigger-Eigenschaft pre-commit-skip-hooks auf eine durch Kommas getrennte Liste der zu überspringenden Hook-IDs.
Sonarqube-Server mit selbstsigniertem Zertifikat
wenn das sonarqube-config ist eingestellt auf custom um einen vorhandenen SonarQube-Server zu verwenden und der Server über ein
selbstsigniertes Zertifikat verfügt, muss das selbstsignierte Zertifikat zu den vertrauenswürdigen CA-Zertifikaten hinzugefügt werden, damit der Sonar-Scanner erfolgreich eine Verbindung zum SonarQube-Server herstellen kann.
Durch die Bereitstellung des Zertifikats im Format PEM als Wert der Pipeline/Trigger-Eigenschaft sonarqube-root-certificate fügt die statische Scan-Implementierung in der Pipeline-Konfiguration Inferred DevSecOps es entsprechend
für die Verwendung von SonarScanner für Maven, SonarScanner für Gradle Sonar oder SonarScanner aufgerufen mit Docker hinzu.
Poesie und private Repositorien
Konfigurieren Sie Poesie für private Repositories
Bei der Verwendung von Poetry (pyproject.toml wird als Code-Spot identifiziert) wird eine alternative Quelle oder ein Repository definiert, um Abhängigkeiten abzurufen, z. B.:
[[tool.poetry.source]]
name = "local"
url = "<artifactory-url>"
secondary = true
oder wenn Poesie im Spiel ist (z. B. pyproject.toml mit einem build-system-Abschnitt, bei dem build-backend gleich poetry.core.masonry.api ist, ist eine identifizierte
Freigabestelle), dann müssen unter Umständen Anmeldedaten angegeben werden, um sich bei den privaten Registern zu authentifizieren.
Authentifizierung mit privaten Repositories in der IBM Cloud
Es ist erforderlich, Anmeldeinformationen für dieses " local-Source-Repository anzugeben. Die Dokumentation von Poetry zur Konfiguration der Anmeldeinformationen gibt an, dass die Umgebungsvariablen für http-Benutzer und -Passwort " POETRY_HTTP_BASIC_LOCAL_USERNAME und " POETRY_HTTP_BASIC_LOCAL_PASSWORD sein sollten.
Verwenden Sie die Funktion zur Injektion von Umgebungsvariablen, und fügen Sie die folgenden Pipeline-Umgebungseigenschaften hinzu:
ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME(Text) mit dem entsprechenden WertENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD(gesichert) mit dem entsprechenden gesicherten Wert
Authentifizierung zur Veröffentlichung in privaten Repositories
Wenn Poesie involviert ist (d.h. pyproject.toml, das einen build-system Abschnitt mit build-backend gleich poetry.core.masonry.api enthält, ist ein identifizierter Freigabepunkt),
kann die Konfiguration für Token oder Benutzernamen mit Hilfe von Pipeline-Umgebungseigenschaften wie (für ein Repository namens local) definiert werden:
ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME(Text) mit dem entsprechenden WertENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD(gesichert) mit dem entsprechenden gesicherten Wert
oder
ENV_GLOBAL_POETRY_PYPI_TOKEN_LOCAL(gesichert) mit dem entsprechenden gesicherten Wert, der dem Token entspricht
Maven, pom.xml, settings.xml, und Umgebungsauflösung
Konfigurieren Sie Maven für benutzerdefinierte Einstellungsdateien in IBM Cloud
Wenn Ihr Maven-Projekt eine spezifische Einstellungsdatei mit einem benutzerdefinierten Dateinamen definiert, wie z.B. ' ci-settings.xml, definieren Sie eine Pipeline-Umgebungseigenschaft maven-user-settings-file-path mit dem Wert ' ci_settings.xml in den PR-, CI-Pipeline- oder Trigger-Eigenschaften.
Außerdem, wenn es einen ' env.<VARIABLE> gibt, der aufgelöst werden muss, wie:
<server>
<username>${env.MAVEN_USERNAME}</username>
<password>${env.MAVEN_PASSWORD}</password>
<id>central</id>
</server>
Verwenden Sie die Funktion der Umgebungsvariableninjektion, um diese Variablen durch Hinzufügen von 2 Pipeline-Eigenschaften (in der PR- und CI-Pipeline) bereitzustellen:
ENV_GLOBAL_MAVEN_USERNAME(Text) mit dem Wert, der für den Maven-Benutzernamen verwendet werden sollENV_GLOBAL_MAVEN_PASSWORD(gesichert) mit dem Wert, der für das Maven-Passwort verwendet werden soll
Statisches Linking für Go Builds erzwingen
Statisches Linking für Go-Builds einschalten
Standardmäßig erzeugt ' go build eine dynamisch gelinkte Binärdatei. Um es in einem Docker zu verwenden, aktivieren Sie statisches Linking, indem Sie während des Builds ' CGO_ENABLED=0 setzen.
Konfigurieren Sie die Umgebungsvariable für Go Build
Um die statische Verknüpfung zu aktivieren, verwenden Sie die Funktion zur Injektion von Umgebungsvariablen, um die folgende Pipeline-Umgebungseigenschaft in der CI-Pipeline hinzuzufügen:
ENV_SETUP_CGO_ENABLEDmit dem Wert '0
Unterstützung anfordern
IBM Cloud der KI-Assistent von IBM, der von watsonx unterstützt wird, soll Ihnen dabei helfen, sich mit der Arbeit in IBM Cloud vertraut zu machen und Lösungen mit dem verfügbaren Angebotskatalog zu erstellen. Siehe "Hilfe vom KI-Assistenten erhalten ".
Wenn Sie das Problem weiterhin nicht lösen können, können Sie einen Supportfall öffnen. Weitere Informationen finden Sie in Supportfälle erstellen. Wenn Sie uns Feedback geben möchten, klicken Sie auf "Feedback einreichen ".