DevSecOps-CLI

DevSecOps CLI übernimmt Compliance-Lösungen unter IBM Cloud® DevSecOps Referenz-Implementierung; zum Beispiel die Shift-Links-Ansatz Referenz-Pipelines. Weitere Informationen zur Umsetzung der Architektur für 'Shift Left'-Compliance finden Sie unter DevSecOps mit Continuous Delivery.

CLI-Schnittstelle

Die Befehlszeilenschnittstelle verwendet eine mehrteilige Struktur in der Befehlszeile, die Sie in der folgenden Reihenfolge angeben müssen:

cocoa <command> <subcommand> [options]
  1. Der Basisaufruf an die Befehlszeilenschnittstelle.

  2. Der Hauptbefehl, der in der Regel einem Dienst oder einem Modul entspricht, das von der „Shift-Left“-Architektur genutzt wird; beispielsweise „change request“, „inventory“ oder „tekton“.

  3. Der Unterbefehl, der angibt, welche Aktion ausgeführt werden soll.

  4. CLI-Optionen, die für die Aktion erforderlich sind. Unter der Bedingung, dass sie die Schritte 1 bis 3 ausführen, können Sie die CLI-Optionen in beliebiger Reihenfolge angeben.

Einige Befehle verwenden Umgebungsvariablen, um API-Schlüssel abzurufen oder einen Optionswert zu konfigurieren, der in der Befehlszeile nicht angegeben wurde. Sie müssen diese Variablen exportieren, bevor Sie den Befehl ausführen.

Befehlszeilenoptionen können verschiedene Arten von Eingabewerten annehmen, beispielsweise Zahlen, Zeichenfolgen, boolesche Werte, Arrays und JSON-Objekte. Der Optionstyp hängt von dem von Ihnen angegebenen Befehl ab. Verwenden Sie „ cocoa <command> <subcommand> --help “, um die verschiedenen Optionstypen anzuzeigen.

Fehlgeschlagene API-Aufrufe wiederholen

Die Kakao-CLI wiederholt jeden API-Aufruf, der mit dem Antwortstatus 5xx fehlschlägt, dreimal. Sie können dieses Verhalten überschreiben, indem Sie die folgenden Umgebungsvariablen angeben:

  • MAX_RETRY_ATTEMPTS-Die Anzahl der Wiederholungsversuche, die die Cocoa-CLI unternimmt, bevor sie aufgibt. Beispiel: MAX_RETRY_ATTEMPTS=5
  • RETRY_STATUS_CODE-Die Antwortstatuscodes, für die die Wiederholung ausgeführt wird. Geben Sie beispielsweise RETRY_STATUS_CODE=409,422,500 an, um den Versuch mit diesen drei Statuscodes zu wiederholen.
export MAX_RETRY_ATTEMPTS=5                 # Retry API calls 5 times.
export RETRY_STATUS_CODE=409,422,500            # Retry API calls for response codes 409, 422 and 500.

Die Wiederholungen sind exponentiell in der Zeit, so dass die Einrichtung höherer Wiederholungsversuche dazu führt, dass die Wiederholungen weiter auseinander liegen.

Abgelaufene Zeit für Befehlsausführung

Die Kakao-CLI kann die abgelaufene Zeit eines beliebigen Befehls in Sekunden anzeigen, indem DISPLAY_ELAPSED_TIME wie folgt auf eine nicht leere Zeichenfolge gesetzt wird:

export DISPLAY_ELAPSED_TIME=1`                # Display a snippet showing the total execution time of the cli command, example `Elapsed time: 5.32 seconds`

Befehle der Befehlszeilenschnittstelle

Obwohl „ ServiceNow ” dokumentiert ist, wird es von der Standardreferenzimplementierung „ IBM Cloud ” () DevSecOps nicht unterstützt.

Kakao-Pull-Anforderungsbefehle

cocoa check pull-request-approval

Überprüft den Genehmigungsstatus eines Pull-Requests anhand eines Commit-Hashs. Wurde der Pull Request nicht genehmigt, wird im angegebenen Repository ein neues Issue erstellt. Der Befehl kann mit einem Kennsatz markierte Pull-Anforderungen für Notfälle identifizieren, in diesem Fall hat er den Exit-Code 0.

Erforderliche Umgebungsvariablen:

GHE_TOKEN=              # Github Enterprise API Token (Optional if you are using --git-token-path field)
GHE_ORG=                # The owner of the repository
GHE_REPO=               # The repository name
INCIDENT_ISSUE_REPO=    # The incident issue repo name
EMERGENCY_LABEL=        # Emergency Label name
GIT_COMMIT=             # Commit hash of the Pull Request

Optionen:

--label                 # Label to add to possible pr incident issue
--git-provider          # SCM provider (GitHub)
--git-token-path        # (Optional) GitHub Token's path
--git-api-url           # (Optional) GitHub API url

Wenn Sie GitHub, verwenden, können Sie das Feld --git-token-path verwenden, um Ihr GitHub Token zu setzen und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle von GHE_TOKEN und GH_URL Umgebungsvariablen zu setzen. Wenn beide angegeben sind, haben --git-token-path und --git-api-url Vorrang.

Führen Sie den folgenden Befehl aus:

cocoa check pull-request-approval

cocoa check pull-request-status

Prüft den Status einer bestimmten Pull-Anforderung und die Einstellungen für die Repositorys.

  • Verzweigungsschutz: Regeln zur Inaktivierung der Erzwingung von Push-Operationen, zur Verhinderung eines Löschens von Verzweigungen und zur optionalen Anforderung von Statusprüfungen vor dem Zusammenführen. Als Erweiterung unterstützt der Befehl neben der traditionellen Branch Protection-basierten Validierung auch die Ruleset-basierte Validierung für GitHub Repositories. Der Befehl sucht standardmäßig nach einem zugehörigen Regelsatz für den Zweig im GitHub Repository und greift auf die traditionelle, auf dem Zweigschutz basierende Validierung zurück, wenn kein Regelsatz gefunden wird. Wenn für einen Zweig sowohl Regelsatz als auch traditionelle Zweigschutzregel vorhanden sind, berücksichtigt der Befehl nur Regelsatz. Weitere Informationen zu GitHub Regelsätze finden Sie unter Konfigurieren des GitHub Repositorys
  • Überprüfung des Commit-Status: Externe Dienste, die Commits mit dem Status „ error “, „ failure “, „ pending “ oder „ success “ kennzeichnen, was sich dann in den Pull-Anfragen widerspiegelt, die diese Commits betreffen.
  • Ausführungsläufe prüfen: Apps, die Services zur kontinuierlichen Integration, zum Linten von Code oder zum Scannen von Code ausführen und detailliertes Feedback zu Commits liefern.

Erforderliche Umgebungsvariablen:

REQUIRED_CHECKS=        # Minimum required checks to be compliant set by client
GIT_BRANCH=             # Branch name for branch protection check
GIT_COMMIT=             # Commit hash of the Pull Request
GHE_TOKEN=              # Github Enterprise API Token (Optional if you are using --git-token-path field)
GHE_ORG=                # The owner of the repository
GHE_REPO=               # The repository name

Wenn Sie GitHub, verwenden, können Sie das Feld --git-token-path verwenden, um Ihr GitHub Token zu setzen und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle von GHE_TOKEN und GH_URL Umgebungsvariablen zu setzen. Wenn sowohl GHE_TOKEN GH_URL-als auch --git-token-path --git-api-url-Paare angegeben werden, haben --git-token-path und --git-api-url Vorrang.

Um den Pfad der Ausgabedatei für die Einstellungen des Zweigschutzes anzugeben, verwenden Sie die Option " --branch-protection-settings-output-path. Wenn der Zweig geschützt ist, wird die JSON-Darstellung der Einstellungen für den Schutz des Repository-Zweigs in diesem angegebenen Pfad gespeichert.

Um den Pfad der Ausgabedatei für die Ergebnisse der Verzweigungsschutzvalidierung anzugeben, verwenden Sie die Option ' --branch-protection-markdown-output-path. Wenn der Zweig geschützt ist, werden die Validierungsergebnisse im Markdown unter dem angegebenen Pfad gespeichert.

REQUIRED_CHECKS Beispiel:

  [
    {
      "type": "status",
      "name": "unit-test",
      "params": {
        "name": "travis/ci"
      }
    },
    {
      "type": "check-run",
      "name": "secret-detection",
      "params": {
        "name": "detect-secrets"
      }
    },
    {
      "type": "branch-protection",
      "name": "code review",
      "params": {
        "checks": ["travis/ci", "detect-secrets"]
      }
    },
    {
      "type": "check-run",
      "name": "open-source-license-scan",
      "params": {
        "name": "ossc/ci"
      }
    }
  ]

Führen Sie den folgenden Befehl aus:

 cocoa check pull-request-status
 cocoa check pull-request-status \
    --branch-protection-settings-output-path <path/to/file> \
    --branch-protection-markdown-output-path <path/to/file>

Befehle für Kakao-Änderungsanforderungen

Die cocoa change-request-Befehle unterstützen die folgenden Änderungsmanagementprovider:

  • ServiceNow V1
  • ServiceNow V3

Sie können den Provider mithilfe der Option --provider mit den folgenden Werten angeben: servicenow (Standardwert) oder servicenow-v3.

Jeder Provider erfordert eine andere Konfiguration der Umgebungsvariablen:

  • servicenow:
    • SERVICENOW_TOKEN- ServiceNow V1 API-Token
    • SERVICENOW_URL- ServiceNow V1 API URL
  • servicenow-v3:
    • PNP_IBMCLOUD_API_KEY-API-Schlüssel für den Zugriff auf ServiceNow v3-Endpunkte, sofern nicht angegeben, wird auf IAM_ACCESS_TOKEN zurückgesetzt.
    • IAM_ACCESS_TOKEN- IBMCloud IAM OAuth Token
    • SERVICENOW_URL- ServiceNow V3 API URL
  • github-enterprise:
    • GHE_TOKEN- GitHub Enterprise-Token
    • GITHUB_CHANGE_MANAGEMENT_REPO- GitHub-Änderungsmanagementrepository
    • GITHUB_CHANGE_MANAGEMENT_ORG- GitHub Change Management-Organisation

cocoa change-request get

Ruft einen Änderungsantrag über die „ ServiceNow “-API ab und speichert ihn in einer Datei oder gibt ihn auf der Konsole aus.

Erforderliche Umgebungsvariablen für ServiceNow v1 oder v2:

SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL=   # ServiceNow API URL

Erforderliche Umgebungsvariablen für ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen für ServiceNow v3:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitHub Enterprise:

GHE_TOKEN=    # Github Enterprise API Token (only required when parsing from pr)
GITHUB_CHANGE_MANAGEMENT_ORG=   # The owner of the repository (optional, when --org is not provided)
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name (optional, when --repo is not provided)

Erforderliche Umgebungsvariablen für GitLab:

GITLAB_TOKEN= # Gitlab token. (Optional if you are using --git-token-path)
GITLAB_URL=   # Change management API URL (Optional if you are using --git-api-url)

Optionen:

--change-request-id='CHGXXXXXX'  # (Required) The Change Request ID to query from ServiceNow.
--output='filename.json'         # (Optional) If provided, the Change Request data will be written to this file.
--provider='servicenow'          # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')

Führen Sie den folgenden Befehl aus:

# Read Change Request with number 'CHG123456' and output the JSON Data to the console.
$ cocoa change-request get --change-request-id='CHG123456'
# Read Change Request with number 'CHG123456' and output the JSON Data to the file named 'cr.json'.
$ cocoa change-request get --change-request-id='CHG123456' --output='cr.json'
# Read Change Request with number 'CHG123456' using the ServiceNow v3 API
$ cocoa change-request get --change-request-id='CHG123456' --provider='servicenow-v3'

cocoa change-request create

Erstellt eine Änderungsanfrage und übergibt sie an die ServiceNow-API.

Zwei Verwendungsmethoden:

  • Machen Sie für alle Felder der Änderungsanfrage über CLI-Optionen Angaben.

Optionen:

--assigned-to      # A ServiceNow validated user (defaults to value found in the pull request)
--system           # the name of the system in ServiceNow
--impact           # impact explanation (defaults to value found in th pull request)
--outage-duration  # duration of the outage (format: 'd HH:mm:ss' or 'none')
--priority         # change priority, valid options: critical, high, moderate, low, planning (defaults to value found in the pull request)
--environment      # the environment for the deployment
--purpose          # purpose explanation (default to value found in the pull request)
--description      # description of the change
--backout-plan     # description of the backout plan (defaults to the value found in the PR)
--planned-start    # planned start time of the change (required format: YYYY-MM-DD HH:mm:ss, e.g 2020-05-13 13:00:12, in UTC)
--planned-end      # planned end time of the change (required format: YYYY-MM-DD HH:mm:ss, e.g 2020-05-13 13:00:12, in UTC)
--deployment-ready # readiness for deployment (choices: 'yes', 'no', default: 'yes')
--type             # change request type, option: standard, emergency
--provider         # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', 'github-enterprise', 'gitlab' default: 'servicenow')
--pipeline-name    # (Optional) name of the pipeline used for identifying the pipeline
--pipeline-version # (Optional) version of pipeline used (value must match regular expression [0-9.]+)
  • Geben Sie den Namen für eine Datei an, aus der heraus die Daten der Änderungsanfrage geparst werden sollen. Es wird die Angabe des JSON-Formats erwartet.

Optionen:

--file --f         # json file name to parse the cr data from
--provider         # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')

Beispieldatei:

{
  "type": "emergency",
  "assignedto": "alexandra.szanto@ibm.com",
  "backoutplan": "rollback",
  "priority": "critical",
  "purpose": "bugfix",
  "description": "test description",
  "environment": "crn:v1:bluemix:public::ch-ctu-2::::",
  "impact": "bug",
  "system": "devopsinsights",
  "outageduration": "0 00:00:00",
  "plannedstart": "2020-10-05 14:48:00",
  "plannedend": "2020-10-05 14:49:00",
  "deploymentready": "yes",
}

Erforderliche Umgebungsvariablen für ServiceNow v1 oder v2:

SERVICENOW_TOKEN=   # ServiceNow API Token
SERVICENOW_URL=     # ServiceNow API URL

Erforderliche Umgebungsvariablen für ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen für ServiceNow v3:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitHub Enterprise:

GHE_TOKEN=    # Github Enterprise API Token (only required when parsing from pr)
GITHUB_CHANGE_MANAGEMENT_ORG=   # The owner of the repository (optional, when --org is not provided)
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name (optional, when --repo is not provided)

Führen Sie den folgenden Befehl aus:

 cocoa change-request create --file=test.json

Oder

$ cocoa change-request create \
  --assigned-to=<your-ibm-email> \
  --system=<servicenow-configuration-item> \
  --impact=<impact description> \
  --outage-duration='0 00:00:00' \
  --priority=<the-priority> \
  --environment=<involved-environment> \
  --purpose=<purpose-explanation> \
  --description=<description-of-the-change> \
  --backout-plan=<description-of-a-backout-plan> \
  --planned-start='2020-05-13 13:00:12' \
  --planned-end='2020-05-13 13:10:12' \
  --deployment-ready=<yes/no> \
  --type=<change-type> \

aktualisierung der Kakao-Änderungsanträge

Aktualisieren Sie einen bestehenden Änderungsantrag mit ServiceNow v3 API und drucken Sie ihn auf der Konsole aus.

Erforderliche Umgebungsvariablen für ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL
CHANGE_REQUEST_ID=    # ID of the Change Request

Zusätzliche Umgebungsvariablen für ServiceNow v3:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Optionen:

--close-notes                    # (Optional) Any pertinent notes to add to change request closure.
--close-category                 # (Optional) Change request close notes (choices:  'successful', 'successful_issues', 'unsuccessful', 'cancelled')
--description                    # (Optional) Description of the change

Führen Sie den folgenden Befehl aus:

# Update Change Request with sample close-notes, close category and description.
$ cocoa change-request update --close-notes="sample close-note" --close-category="successful" --description="sample change description"

Wenn die Option description verwendet wird, ersetzt der Befehl die vorhandene Beschreibung durch die neue Beschreibung. Wenn der Benutzer Inhalte an die ursprüngliche Beschreibung anhängen möchte, muss er die vorhandene Beschreibung extrahieren und manuell anhängen, bevor er diesen Befehl verwendet.

cocoa change-request change-state-to-implement

Ändert den Status eines Änderungsantrags über die „ ServiceNow “-API in „ implement “.

Optionen:

--provider         # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')

Erforderliche Umgebungsvariablen unabhängig vom Provider:

CHANGE_REQUEST_ID=  # ID of the Change Request

Erforderliche Umgebungsvariablen bei Verwendung des Providers ServiceNow v1 oder v2:

SERVICENOW_TOKEN=    # ServiceNow API Token
SERVICENOW_URL=      # ServiceNow API URL

Erforderliche Umgebungsvariablen, wenn Sie den Provider ServiceNow v3 verwenden:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen, wenn Sie ServiceNow v3-Provider verwenden:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitHub Enterprise-Provider:

GHE_TOKEN=    # Github Enterprise API Token (only required when parsing from pr)
GITHUB_CHANGE_MANAGEMENT_ORG=   # The owner of the repository (optional, when --org is not provided)
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name (optional, when --repo is not provided)

Führen Sie den folgenden Befehl aus:

 cocoa change-request change-state-to-implement

cocoa change-request close

Schließt einen Änderungsantrag über die „ ServiceNow “-API. Sie können „Schließnotizen“ über die Option „ --close-notes “ hinzufügen und die „Schließkategorie“ über die Option „ --close-category “ festlegen.

Optionen:

--close-category  # Choices: "successful" (default), "successful_issues", "unsuccessful", "cancelled"
--close-notes     # String, defaults to "Deployment done."
--provider        # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')

Erforderliche Umgebungsvariablen unabhängig vom Provider:

CHANGE_REQUEST_ID=  # ID of the Change Request

Erforderliche Umgebungsvariablen bei Verwendung des Providers ServiceNow v1 oder v2:

SERVICENOW_TOKEN=    # ServiceNow API Token
SERVICENOW_URL=      # ServiceNow API URL

Erforderliche Umgebungsvariablen, wenn Sie den Provider ServiceNow v3 verwenden:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen, wenn Sie ServiceNow v3-Provider verwenden:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitHub Enterprise-Provider:

GHE_TOKEN=    # Github Enterprise API Token (only required when parsing from pr)
GITHUB_CHANGE_MANAGEMENT_ORG=   # The owner of the repository (optional, when --org is not provided)
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name (optional, when --repo is not provided)

Führen Sie den folgenden Befehl aus:

 cocoa change-request close

cocoa change-request check-approval

Fragt den Genehmigungsstatus eines Änderungsantrags ab. Handelt es sich bei dem Änderungsantrag um einen Notfall, schlägt der Befehl nicht fehl, sondern fordert eine nachträgliche Genehmigung an.

Optionen:

--provider         # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')

Erforderliche Umgebungsvariablen unabhängig vom Provider:

CHANGE_REQUEST_ID=  # ID of the Change Request

Erforderliche Umgebungsvariablen bei Verwendung des Providers ServiceNow v1 oder v2:

SERVICENOW_TOKEN=    # ServiceNow API Token
SERVICENOW_URL=      # ServiceNow API URL

Erforderliche Umgebungsvariablen, wenn Sie den Provider ServiceNow v3 verwenden:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen, wenn Sie ServiceNow v3-Provider verwenden:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitHub Enterprise-Provider:

GHE_TOKEN=    # Github Enterprise API Token (only required when parsing from pr)
GITHUB_CHANGE_MANAGEMENT_ORG=   # The owner of the repository (optional, when --org is not provided)
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name (optional, when --repo is not provided)

Führen Sie den folgenden Befehl aus:

 cocoa change-request check-approval

cocoa change-request prepare

Erstellt die Daten des Änderungsantrags und gibt sie auf der Konsole oder in einer Datei aus.

Erforderliche Umgebungsvariablen:

GHE_TOKEN=              # Github Enterprise API Token (only required when parsing from pr)
GHE_ORG=                # The owner of the repository (optional, when --org is not provided)
GHE_REPO=               # The repository name (optional, when --repo is not provided)
EMERGENCY_LABEL=        # Emergency Label (optional, when --emergency-label is not provided)

Die folgenden Felder können aus dem Hauptteil der Pull-Anforderung geparst werden:

--assigned-to
--impact
--priority
--purpose
--backout-plan
--type
--customer-impact
--deployment-impact

Falls diese über die CLI-Option angegeben werden, überschreibt die CLI-Option den im Pull-Request enthaltenen Wert. Wenn alle diese Angaben vorhanden sind, wird „pr“ nicht ausgewertet, und „ --org “, „ --repo “ sowie „ GHE_TOKEN “ sind nicht erforderlich.

Optionen:

--org              # github organization where the parsed pr is (only needed if fields are parsed from pr, defaults to GHE_ORG)
--repo             # github repository name whre the parsed pr is (only needed if fields are parsed from pr, defaults to GHE_REPO)
--pr               # the pull request number to parse (mutually exclusive with sha and branch)
--sha              # infer the pr number from hash (mutually exclusive with pr and branch)
--branch           # infer PR based on the last merged pr into this branch (defaults to master)
--assigned-to      # A ServiceNow validated user (defaults to value found in the pull request)
--system           # the name of the system in ServiceNow
--impact           # implact explanation (defaults to value found in th pull request)
--outage-duration  # duration of the outage
--planned-start    # planned start time of the change (required format: YYYY-MM-DD HH:mm:ss, e.g 2020-05-13 13:00:12, in UTC)
--planned-end      # planned end time of the change (required format: YYYY-MM-DD HH:mm:ss, e.g 2020-05-13 13:00:12, in UTC)
--priority         # change priority, valid options: critical, high, moderate, low, planning (defaults to value found in the pull request)
--environment      # the environment for the deployment
--purpose          # purpose explanation (default to value found in the pull request)
--backout-plan     # description of the backout plan (defaults to the value found in the PR)
--deployment-ready # description of the change
--type             # change request type, option: standard, emergency
--emergency-label  # emergency label to look for in the pull request
--file             # file name to print the cr data to (optional, prints to stdout by default)
--service-environment # service environment of the change, valid options: production, pre_prod
--service-environment-detail # brief description of the service environment where change is deployed.
--pipeline-name    # (Required) name of the pipeline used (for example 'onepipeline | continuous-delivery')
--pipeline-version # version of pipeline used (for example '9.22.3')
--validation-record # Pre-prod change request numbers or NA if there is no pre-prod change request for the deployment

Führen Sie den folgenden Befehl aus:

$ cocoa cr prepare \
  --org=<github-organization> \
  --repo=<github-repo-name> \
  --pr=<pr number>

cocoa change-request request-approval

Fordert die Genehmigung für Datensätze im neuen Status ohne Anforderung der Genehmigung an. Beim Ausführen durchläuft der Datensatz den manuellen Genehmigungsweg.

Optionen:

--crid="<ID>"
# or
--change-request-id="<ID>"
--provider         # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')

Erforderliche Umgebungsvariablen bei Verwendung des Providers ServiceNow v1 oder v2:

SERVICENOW_TOKEN=    # ServiceNow API Token
SERVICENOW_URL=      # ServiceNow API URL

Erforderliche Umgebungsvariablen, wenn Sie den Provider ServiceNow v3 verwenden:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen, wenn Sie ServiceNow v3-Provider verwenden:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitHub Enterprise-Provider:

GHE_TOKEN=    # Github Enterprise API Token (only required when parsing from pr)
GITHUB_CHANGE_MANAGEMENT_ORG=   # The owner of the repository (optional, when --org is not provided)
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name (optional, when --repo is not provided)

Führen Sie den folgenden Befehl aus:

 cocoa change-request request-approval --crid="<insert-change-request-id-here>"

Anhang für Kakao-Änderungsanforderung hinzufügen

Fügt einer bestimmten Änderungsanforderung einen Änderungsanhang hinzu.

Optionen:

--description      # A more detailed description for the Change Task. [string]
--name             # Name of the Change Task. [string] [required]
--data             # Data for the Change Task or a path prefixed with @ to read the data from. [string] [default: "@/dev/stdin"]
--provider         # (Optional) Change Management service provider (choices: 'servicenow', 'github-enterprise', 'servicenow-v3', default: 'servicenow')

Erforderliche Umgebungsvariablen bei Verwendung des Providers ServiceNow v1 oder v2:

SERVICENOW_TOKEN=    # ServiceNow API Token
SERVICENOW_URL=      # ServiceNow API URL

Erforderliche Umgebungsvariablen, wenn Sie den Provider ServiceNow v3 verwenden:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen, wenn Sie ServiceNow v3-Provider verwenden:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitHub Enterprise-Provider:

GHE_TOKEN=    # Github Enterprise API Token (only required when parsing from pr)
GITHUB_CHANGE_MANAGEMENT_ORG=   # The owner of the repository (optional, when --org is not provided)
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name (optional, when --repo is not provided)

Führen Sie den folgenden Befehl aus:

$ cocoa change-request attachment add "CHGXXXXXXX" \
        --name='<attachment-name>' \
        --data='<data-for-the-attachment>'
$ cat data.txt | cocoa change-request attachment add "CHGXXXXXXX" --name='<attachment-name>'
$ cocoa change-request attachment add "CHGXXXXXXX" \
        --name='<attachment-name>' \
        --data='@<path/to/file>'

Kakao-Änderung-Anforderung Anhang abrufen

Ruft einen bestimmten Änderungsanhang eines Änderungsantrags ab.

Optionen:

--provider         # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')

Erforderliche Umgebungsvariablen bei Verwendung des Providers ServiceNow v1 oder v2:

SERVICENOW_TOKEN=    # ServiceNow API Token
SERVICENOW_URL=      # ServiceNow API URL

Erforderliche Umgebungsvariablen, wenn Sie den Provider ServiceNow v3 verwenden:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen, wenn Sie ServiceNow v3-Provider verwenden:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitHub Enterprise-Provider:

GHE_TOKEN=    # Github Enterprise API Token (only required when parsing from pr)
GITHUB_CHANGE_MANAGEMENT_ORG=   # The owner of the repository (optional, when --org is not provided)
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name (optional, when --repo is not provided)

Führen Sie den folgenden Befehl aus:

 cocoa change-request attachment get "CHGXXXXXXX" "CTASKXXXXXXX"

Liste der Anhänge für Kakao-Änderungsanforderungen

Listen: Anhänge für einen Änderungsantrag ändern.

Optionen:

--provider         # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')

Erforderliche Umgebungsvariablen bei Verwendung des Providers ServiceNow v1 oder v2:

SERVICENOW_TOKEN=    # ServiceNow API Token
SERVICENOW_URL=      # ServiceNow API URL

Erforderliche Umgebungsvariablen, wenn Sie den Provider ServiceNow v3 verwenden:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen, wenn Sie ServiceNow v3-Provider verwenden:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitHub Enterprise-Provider:

GHE_TOKEN=    # Github Enterprise API Token (only required when parsing from pr)
GITHUB_CHANGE_MANAGEMENT_ORG=   # The owner of the repository (optional, when --org is not provided)
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name (optional, when --repo is not provided)

Führen Sie den folgenden Befehl aus:

 cocoa change-request attachment list "<insert-change-request-id-here>"

Kakao-Änderung-Anhangsaktualisierung anfordern

Aktualisiert einen Änderungsanhang in einem bestimmten Änderungsantrag.

Optionen:

--change-request-id  # The change request the change task belongs to [string] [required]
--change-task-id     # The change task id to be updated [string] [required]
--description        # A more detailed description for the Change Task. [string]
--data               # Data for the Change Task or a path prefixed with @ to read the data from. [string]
--provider           # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')

Erforderliche Umgebungsvariablen bei Verwendung des Providers ServiceNow v1 oder v2:

SERVICENOW_TOKEN=    # ServiceNow API Token
SERVICENOW_URL=      # ServiceNow API URL

Erforderliche Umgebungsvariablen, wenn Sie den Provider ServiceNow v3 verwenden:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen, wenn Sie ServiceNow v3-Provider verwenden:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitHub Enterprise-Provider:

GHE_TOKEN=    # Github Enterprise API Token (only required when parsing from pr)
GITHUB_CHANGE_MANAGEMENT_ORG=   # The owner of the repository (optional, when --org is not provided)
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name (optional, when --repo is not provided)

Führen Sie den folgenden Befehl aus:

$ cocoa change-request attachment update
        --change-request-id='CHGXXXXXXX' \
        --change-attachment-id='CTASKXXXXXXX' \
        --data='<data-for-the-attachment>' \
        --description='<description>'
$ cat data.txt | cocoa change-request attachment update --change-request-id='CHGXXXXXXX' --change-attachment-id='CTASKXXXXXXX' --data='@/dev/stdin'
$ cocoa change-request attachment update --change-request-id='CHGXXXXXXX' --change-attachment-id='CTASKXXXXXXX' --data='@<path/to/file>'

cocoa change-request Kommentar hinzufügen

Fügt einen Kommentar zu einem bestimmten Änderungsantrag hinzu.

Optionen:

--comment          # Comment to add [string] [required]
--provider         # (Optional) Change Management service provider (choices: 'servicenow-v3', 'gitlab', 'github-enterprise', default: 'servicenow-v3')
--git-api-url      # (Optional) Git API URL [string]
--git-token-path   # (Optional) Git token path to read the secret from [string]

Erforderliche Umgebungsvariablen, wenn Sie den Provider ServiceNow v3 verwenden:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen, wenn Sie ServiceNow v3-Provider verwenden:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitLab provider:

GITLAB_TOKEN=    # Gitlab Token
GITLAB_URL=      # Gitlab API URL
GITLAB_ORG=      # Gitlab ORG
GITLAB_REPO=     # Gitlab REPO Name

Erforderliche Umgebungsvariablen für GitHub Enterprise-Provider:

GHE_TOKEN=                        # Github Enterprise API Token
GITHUB_CHANGE_MANAGEMENT_ORG=     # The owner of the repository
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name

Führen Sie den folgenden Befehl aus:

$ cocoa change-request comment add "CHGXXXXXXX" \
        --comment='This is a comment for the change request'
$ cocoa change-request comment add "CHGXXXXXXX" \
        --comment='Adding comment using GitLab provider' \
        --provider='gitlab'

kakao Änderungsantrag Kommentarliste

Listet alle Kommentare zu einer bestimmten Änderungsanfrage auf.

Optionen:

--provider         # (Optional) Change Management service provider (choices: 'servicenow-v3', 'gitlab', 'github-enterprise', default: 'servicenow-v3')
--git-api-url      # (Optional) Git API URL [string]
--git-token-path   # (Optional) Git token path to read the secret from [string]
--last             # (Optional) Retrieve only the last n comments [number]
--before           # (Optional) Filter comments created before this date (ISO 8601 format, e.g., YYYY-MM-DDTHH:MM:SSZ) [string]
--after            # (Optional) Filter comments created after this date (ISO 8601 format, e.g., YYYY-MM-DDTHH:MM:SSZ) [string]

Hinweis:

  • Der Parameter --last muss eine nicht-negative Zahl sein.
  • Die Parameter --before und --after akzeptieren Datumsangaben im Format ISO 8601 und können nicht in der Zukunft liegen.
  • Wenn Sie sowohl --before als auch --after verwenden, muss das Datum --before größer sein als das Datum --after.
  • Die Filter werden in der folgenden Reihenfolge angewendet: zuerst die Datumsfilter (--before, --after), dann --last, um die Ergebnisse einzuschränken.

Erforderliche Umgebungsvariablen, wenn Sie den Provider ServiceNow v3 verwenden:

SERVICENOW_URL=       # ServiceNow API URL

Zusätzliche Umgebungsvariablen, wenn Sie ServiceNow v3-Provider verwenden:

PNP_IBMCLOUD_API_KEY= # API Key to access ServiceNow v3 endpoints, if not provided, falls back to IAM_ACCESS_TOKEN
IAM_ACCESS_TOKEN=     # Access token obtained from the IAM service

Erforderliche Umgebungsvariablen für GitLab provider:

GITLAB_TOKEN=    # Gitlab Token
GITLAB_URL=      # Gitlab API URL
GITLAB_ORG=      # Gitlab ORG
GITLAB_REPO=     # Gitlab REPO Name

Erforderliche Umgebungsvariablen für GitHub Enterprise-Provider:

GHE_TOKEN=                        # Github Enterprise API Token
GITHUB_CHANGE_MANAGEMENT_ORG=     # The owner of the repository
GITHUB_CHANGE_MANAGEMENT_REPO=    # The repository name

Führen Sie den folgenden Befehl aus:

# List all comments for a change request
$ cocoa change-request comment list "CHGXXXXXXX"
# List comments using GitHub Enterprise provider
$ cocoa change-request comment list "CHGXXXXXXX" --provider='github-enterprise'
# Get only the last 5 comments
$ cocoa change-request comment list "CHGXXXXXXX" --last=5
# Get comments created before a specific date
$ cocoa change-request comment list "CHGXXXXXXX" --before="2026-03-20T10:00:00Z"
# Get comments created after a specific date
$ cocoa change-request comment list "CHGXXXXXXX" --after="2026-03-15T08:00:00Z"
# Get comments within a date range
$ cocoa change-request comment list "CHGXXXXXXX" --after="2026-03-15T08:00:00Z" --before="2026-03-20T10:00:00Z"
# Get the last 10 comments within a date range
$ cocoa change-request comment list "CHGXXXXXXX" --after="2026-03-15T08:00:00Z" --before="2026-03-20T10:00:00Z" --last=10

Kakao-Beweisbefehle

cocoa evidence format-summary

Formatiert die Nachweiszusammenfassung in lesbarem Format. Sie kann dem Inhalt der Änderungsanfrage zugeführt werden.

Führen Sie den folgenden Befehl aus:

$ cocoa evidence format-summary \
  --input=<filepath> \          # (default: -, referring to stdin) If present, the formatted evidence will be read from the given file.
  --output=<filepath>           # (default: -, referring to stdout) If present, the formatted evidence will be saved to the given file.
# Reading from stdin and printing to stdout:
$ cat raw-summary.json | cocoa evidence format-summary -i - -o - | tee formatted-summary.txt
$ cat raw-summary.json | cocoa evidence format-summary | tee formatted-summary.txt
# Reading to and from file:
$ cocoa evidence format-summary --input=raw-summary.json --output=formatted-summary.txt

Kakao-Nachweise-Preisabschlag-Zusammenfassung

Formatiert die Angabenzusammenfassung in einem Preisabschlagsformat, das als Kommentar für eine GitHub-Pull-Anforderung bereitgestellt werden kann.

Die Eingabe ist eine unaufbereitete Zusammenfassung und kann eines von zwei Formaten haben:

  • Zusammenfassung im JSON-Format.
  • Aggregierte Zusammenfassung, bei der es sich um ein JSON-Array mit Zusammenfassungen einzelner Apps handelt

Wenn eine aggregierte Zusammenfassung als Eingabe übergeben wird, gruppiert die Ausgabe den Angabenstatus basierend auf den Apps in den Zusammenfassungen.

Optionales Flag:

  • --detailed: Eine detaillierte Preisabschlagszusammenfassung wird generiert, wenn das Flag auf "true" gesetzt ist (true ist für eine abgeschnittene Zusammenfassung standardmäßig auf false gesetzt).

Führen Sie den folgenden Befehl aus:

$ cocoa evidence markdown-summary \
  --input=<filepath> \          # (default: -, referring to stdin) If present, the formatted evidence will be read from the given file.
  --output=<filepath>           # (default: -, referring to stdout) If present, the formatted evidence will be saved to the given file.
# Reading from stdin and printing to stdout:
$ cat raw-summary.json | cocoa evidence markdown-summary -i - -o - | tee markdown-summary.md
$ cat aggr-summary.json | cocoa evidence markdown-summary | tee markdown-summary.md
# Reading to and from file:
$ cocoa evidence markdown-summary --input=raw-summary.json --output=markdown-summary.md

Befehle für Kakaoartefakte

cocoa artifact upload

Lädt ein Artefakt auf die angegebenen Back-Ends hoch. Als Back-Ends können unterschiedliche Typen von Nachweisschließfach dienen, z. B. Object Storage, GitHub oder DevOps Insights. Für unterschiedliche Schließfächer müssen unterschiedliche Parameter bereitgestellt werden.

Optionen:

--backend           # (Required) Specifies the types of lockers we upload the artifact ('cos', 'git')
--pipeline-run-id   # The ID of the PipelineRun running the CLI command
--namespace         # Specifies the pipeline the evidence is collected from
--upload-path       # If present, this overrides the artifact name with the specified value
--is-summary        # If present, this uploads the artifact to the location where evidence summary is usually stored

Optionen für 'git':

--git-token-path    #(Optional) Github Token's path
--git-api-url           #(Optional) Github API url

Erforderliche Umgebungsvariablen:

PIPELINE_RUN_ID=    # Can be used instead of '--pipeline-run-id' option
NAMESPACE=          # Can be used instead of '--namespace' option

Erforderliche Umgebungsvariablen bei Verwendung des 'git ' -Providers:

EVIDENCE_REPO_ORG=  # The Git repo org (Required if you are using 'git' backend)
EVIDENCE_REPO_NAME= # The Git repo name (Required if you are using 'git' backend)

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=          # Github Enterprise API Token (Optional if you are using --git-token-path)

Erforderliche Umgebungsvariablen bei Verwendung von Cloud Object Storage:

COS_API_KEY=        # Cloud Object Storage API Key (Required if you are using 'cos' backend)
COS_BUCKET_NAME=    # Bucket Name where the artifact will be uploaded in the COS Instance (Required if you are using 'cos' backend)
COS_ENDPOINT=       # The COS API Endpoint matching the region where the bucket is located (Required if you are using 'cos' backend)

Wenn Sie github verwenden, verwenden Sie das Feld --git-token-path, um Ihren GitHub Token festzulegen, und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle der Umgebungsvariablen GHE_TOKEN und GH_URL festzulegen. Wenn sowohl GHE_TOKEN GH_URL-als auch --git-token-path --git-api-url-Paare angegeben werden, haben --git-token-path und --git-api-url Vorrang.

Führen Sie den folgenden Befehl aus:

$ cocoa artifact upload
$ cocoa artifact upload \
  --backend=[choices: "git", "cos"] \ # e.g. --backend=cos,git
  --pipeline-run-id=<pipeline-run-id> # can be substituted by PIPELINE_RUN_ID
  --namespace=[choices: "ci", "cd"] \ # Pipeline type the evidence was collected from, can be substituted by NAMESPACE
  --is-summary        # If present, this uploads the artifact to the location where evidence summary is usually stored
  <file-path>

CLI-Optionen können auch über Umgebungsvariablen festgelegt werden, mit Ausnahme von „ backend “ und „ upload-path “.

Ein Artefakt bergen

Sie können Artefakte aus verschiedenen Beweisschließfächern abrufen, z. B. Object Storage, GitHub, oder DevOps Insights, indem Sie den Befehl "cocoa artifact get" verwenden. Mit diesem Befehl können Sie Artefakte aus verschiedenen Schließfachtypen abrufen, für die jeweils spezifische Parameter erforderlich sind.

Der Befehl cocoa artifact get ruft ein Artefakt von den angegebenen Backends ab. Für unterschiedliche Schließfächer müssen unterschiedliche Parameter bereitgestellt werden. Optionen:

--backend           # Specifies the types of locker to retrieve the artifact from ('cos', 'git')
--artifact-prefix   # Path where the artifact is present. To be used in COS only, not available in Git. (Use this or --artifact-path, can't be used together)
--artifact-path     # Absolute path on where the artifact is present.
--is-summary        # If present, this returns the merged summary from all the file paths.

Optionen für 'git':

--git-token-path        # Github Token's path
--git-api-url           # (Optional) Github API url

Erforderliche Umgebungsvariablen:

Erforderliche Umgebungsvariablen bei Verwendung des 'git ' -Providers:

EVIDENCE_REPO_ORG=  # The Git repo org (Required if you are using 'git' backend)
EVIDENCE_REPO_NAME= # The Git repo name (Required if you are using 'git' backend)

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=          # Github Enterprise API Token (Optional if you are using --git-token-path)

Erforderliche Umgebungsvariablen bei Verwendung von Cloud Object Storage:

COS_API_KEY=               # Cloud Object Storage API Key (Required if you are using 'cos' backend)
COS_BUCKET_NAME=           # Bucket Name where the artifact will be uploaded in the COS Instance (Required if you are using 'cos' backend)
COS_ENDPOINT=              # The COS API Endpoint matching the region where the bucket is located (Required if you are using 'cos' backend)
BACKUP_COS_API_KEY=        # Cloud Object Storage API Key (Required while migrating from one COS bucket to another to read the old artifacts)
BACKUP_COS_BUCKET_NAME=    # Bucket Name where the artifact will be uploaded in the COS Instance (Required while migrating from one COS bucket to another to read the old artifacts)
BACKUP_COS_ENDPOINT=       # The COS API Endpoint matching the region where the bucket is located (Required while migrating from one COS bucket to another to read the old artifacts)

Wenn Sie github verwenden, verwenden Sie das Feld --git-token-path, um Ihren GitHub Token festzulegen, und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle der Umgebungsvariablen GHE_TOKEN und GH_URL festzulegen. Wenn sowohl GHE_TOKEN GH_URL-als auch --git-token-path --git-api-url-Paare angegeben werden, haben --git-token-path und --git-api-url Vorrang.

Führen Sie den folgenden Befehl aus:

$ cocoa artifact get
$ cocoa artifact get \
  --backend=[choices: "git", "cos"] \ # e.g. --backend=cos
  --artifact-path <file-path> \ # full path in case of git, cos can utilise --artifact-prefix <file-path>

CLI-Optionen können auch über Umgebungsvariablen festgelegt werden, mit Ausnahme von backend und artifact-path / artifact-prefix.

cocoa set-status

Legt den Status einer Festschreibung fest. Die aktuelle Implementierung wird für GitHub getestet. Weitere Informationen finden Sie in der Dokumentation zu GitHub-Status.

Erforderliche Umgebungsvariablen:

GHE_ORG=      # Github organization/username
GHE_REPO=     # Github repository
GHE_COMMIT=   # Github commit hash

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=    # Github token (Optional if you are using --git-token-path)

Wenn Sie github verwenden, verwenden Sie das Feld --git-token-path, um Ihren GitHub Token festzulegen, und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle der Umgebungsvariablen GHE_TOKEN und GH_URL festzulegen. Wenn sowohl GHE_TOKEN GH_URL-als auch --git-token-path --git-api-url-Paare angegeben werden, haben --git-token-path und --git-api-url Vorrang.

Optionen für 'git':

--git-token-path    #(Optional) GitHub token's path
--git-api-url       #(Optional) GitHub API url

Führen Sie den folgenden Befehl aus:

$ cocoa set-status \
 --state="pending" \
 --targetURL="https://cloud.ibm.com/devops/pipelines/tekton/some-toolchain/runs/some-pipelinerun/lint/lint?env_id=ibm:yp:us-south" \
 --context="tekton/lint" \
 --description="Tekton linter is running."

Befehle für Kakaobestand

cocoa inventory add

Fügt dem Bestandsrepository einen Wert hinzu. Erstellt eine Datei mit der Option „ name “; falls diese noch nicht existiert, wird sie überschrieben.

Erforderliche Umgebungsvariablen:

GHE_ORG=     # Github Organization (required if --org option is not specified).
GHE_REPO=    # Github Repository (required if --repo option is not specified).

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=    # Github Enterprise API Token(Optional if you are using --git-token-path)

Optionen für 'git':

--git-token-path    #(Optional) Github Token's path
--git-api-url           #(Optional) Github API url
Optionen für Git
Option Beschreibung Werttyp Erforderlich oder optional Mögliche(r) Wert(e) / Standardwert / Anmerkungen
Artefakt Name des für die Anwendung erstellten Artefakts. Zeichenfolge Erforderlich Wenn es sich bei dem Artefakt um ein Bild handelt, verwenden Sie bitte das folgende Format:
<static_name>:<version>@sha256:<sha256_digest>
ODER
<static_name>@sha256:<sha256_digest>.

Wenn es sich bei dem Eintragstyp nicht um ein Bild handelt, verwenden Sie einen statischen Namen, der bei allen Aktualisierungen des Eintrags unverändert bleibt.
Version Die Version der Anwendung. Zeichenfolge Erforderlich
Repository-URL Die URL, die auf das Quellcode-Repository der Anwendung verweist (von github oder GRIT/gitlab repos) Zeichenfolge Erforderlich Dies sollte ein gültiges Quellcode-Repository sein (wie github / gitlab) und kein Docker-Repository (wie artifactory)
PIPELINEAUSFÜHRUNGS-ID Die ID der Pipelineausführung. Zeichenfolge Erforderlich Dies dient der Überprüfung von Beweisen. Sollte die Pipeline-Lauf-ID oder -Uuid sein. (Beispielwert: ' f21321af-9084-4af3-80b8-4fb34143b7d9 )
Commit-sha Der Commit des Anwendungs-Repositorys, aus dem das Artefakt erstellt wird. Zeichenfolge Erforderlich Sollte ein langes Commit sha-Format sein (40 Zeichen in Kleinbuchstaben)
Name Der Name der Anwendung, zu der das Artefakt gehört. Zeichenfolge Erforderlich Es ist ein einzigartiges Fachgebiet. Wir können Unterverzeichnisse verwenden, wie z. B. name=subdir/foo, wodurch Ihr Bestandsverzeichnis besser organisiert werden kann.
Buildnummer Die Build-Nummer. Zahl Erforderlich Die Build-Nummer wird verwendet, um Build-Artefakte und Bereitstellungsartefakte zu korrelieren
Org Die GitHub-Organisation, die Eigner des Bestandsrepositorys ist. Zeichenfolge Optional, wenn die Umgebungsvariable GHE_ORG gesetzt ist
Repo Der Name des Inventar-Repositorys. Zeichenfolge Optional, wenn die Umgebungsvariable GHE_REPO gesetzt ist
app-artefakte Beliebiger App-Inhalt im JSON-Format Zeichenfolge Optionale Jeder zusätzliche Inhalt kann hier für die Automatisierung/Workflow-Verwendung hinzugefügt werden
Typ Art des Artefakts. Kann "image" für Bilder sein, oder ein statischer Wert für allgemeine Typen wie Einsatzdateien, Steuerkarten usw. Zeichenfolge Erforderlich Mögliche Werte: ["image"] für Artefakte des Typs "image", "
, ansonsten können Werte wie ["helm-chart", "deployment-file"] oder beliebige andere Werte verwendet werden
sha256 Der sha256 des Artefakts. Zeichenfolge Erforderlich Sollte das folgende Format haben sha256:<64 character hash>
Herkunft URL, die auf das Artefakt verweist (z. B. ein erstelltes Bild). Zeichenfolge Erforderlich Bei einem Inventareintrag vom Typ "Bild" muss die Provenienz mit dem Artefaktfeld übereinstimmen
Signatur Signatur des Artefakts Zeichenfolge Erforderlich
Umgebung Der Name der Umgebung, in der der Eintrag hinzugefügt wird Zeichenfolge Optionale Voreinstellung : "Master"
Ausgangsdatei Der Name der Datei, die die Einzelheiten der Bestandseinträge enthält. Verwenden Sie dieses Flag, um mehrere Inventareinträge in einem einzigen Commit in das Inventar-Repository hochzuladen. Zeichenfolge Optionale Beispiel : ' path/to/file.json
Git-Anbieter Der Service-Provider für die Git-Versionssteuerung Zeichenfolge Optionale Standard : "github"
Mögliche Werte : ["github", "gitlab"]
Git-Token-Pfad Git-Tokenpfad zum Lesen des geheimen Schlüssels aus Zeichenfolge Optional, wenn die Umgebungsvariable GHE_TOKEN gesetzt ist Beispiel : ' path/to/git-token
Git-API-URL URL Zeichenfolge Optionale Standard : ' https://<region>.git.cloud.ibm.com/api/v4
Standort Standort für das Artefakt in anderen Registern zusammen mit dem sha256 Zeichenfolge Optionale Beispiel: <environment>#<static_name>:<version>@sha256:<sha256_digest>.
Dieses Flag kann mehrfach angegeben werden.

Führen Sie den folgenden Befehl aus:

$ cocoa inventory add \
  --artifact=us.icr.io/namespace/hello-compliance-app:20201217081811-master-b85e3d472e9cc35b429c39e8c3f9eb282738c20a@sha256:da36831d5154307ac9ca4b8d900df2da0c6c14754977c32479dc62994b5722d0 \
  --type=image \
  --sha256=sha256:786800e8e48938664fe2397ca14ab8dabd48f34656ef5cfda4143b4519cb714f \
  --name=hello-compliance-app \
  --repository-url=https://github.com/test-org/compliance-app-20201211 \
  --commit-sha=8e86dc4647ce28632103dce46b756c70d339349a \
  --version=v4 \
  --build-number=33 \
  --pipeline-run-id=f21321af-9084-4af3-80b8-4fb34143b7d9 \
  --git-token-path=./git-token \
  --org=test-org \
  --app-artifacts='{"app": "test", "some_value": "value"}' \
  --repo=compliance-inventory-repo
  --signature=owFNUX1IE3EY3vwAEy0VyoSJdkVWtu0+d3eTjNIIi0jETCSU3353cz+83V23myi2BlFgYiUFqSmZLciUzCJkRYJp9IEWFWXB0hAyrBQxEjIIuhFSf70vL8/7vM/zPi3JsaYEc+TnbqG8qrnTPDZ8w2WqiqwtacCghnQEgYQ5GzAkiLKO9PpoLyiwRtSsmugWNVGGIubE/D4bgpoNKXag60gCdo8oSYoVKl5VQsDAWIGqOkmcxAmSYHGO4AjC6gU+3eBxcYxICTRLijyEFOOiSR5SvMhBys2LLpIjWYqDJA6wwHYMeUG1+J8GL5CRW/TpVgFVG8VQ4vMAknE4BUA5OIoQGIKhKZwFkIeAdnECj+OCmxQADh2QoFmG5lkWUiTN8gJ0kDxPuxiWJAU8ekyvV6PegK54EcyGiqwDJItatg9Vy0D3a2IUpKg6UuS/T4KaaIC1fzuMDbfhmMGEvIY64FUxJ+Ew3PMU5SADgdNmKs5kTjBlrtsQ99iyY49nns8o6jsXWgkjPiYahClxVcrK5Flngumz2j7YdmD0ecutytsvxxNPHflKlRV2RyqD69NjC6Smji9XuukFyZ+lvM18gUr7F4NXge9YyZPik411tc1n9bKO/hDz7oGaX/ur94OnNHiwOG6n5ZsrsCsvtyvmkH4zOWlrRWuL7fzgj9zlcCTAhtu2LbeGLNfv3Ju0Jc9PZPk7Pm3Ov2CW+2xj8ReX6ooGamZ610yqRM/+8Qo2XnOeyZzbVKgs+f2+9unpJOve4Tmla+PdqftDWkHPm9Vq3nsyZ2DUkmP/nTb7qNw5l2SfWtiSemJx9nLaYOpx6amlOT18aeIwJQhHg1XOjJF9r18NXQvPuL9rH5tSQqbGhyN/AA== \
  --location=stage#stage-us.icr.io/namespace/hello-compliance-app:20201217081811-master-b85e3d472e9cc35b429c39e8c3f9eb282738c20a@sha256:da36831d5154307ac9ca4b8d900df2da0c6c14754977c32479dc62994b5722d0
$ cocoa inventory add \
  --environment=staging \
  --artifact=foo-helm-chart/foo/chart.yaml \
  --repository-url=https://github.com/test-org/compliance-app-20201211 \
  --provenance=https://github.com/test-org/compliance-app-20201211/foo-helm-chart/foo/chart.yaml \
  --commit-sha=786800e8e48938664fe2397ca14ab8dabd48f34656ef5cfda4143b4519cb714f \
  --build-number=33 \
  --pipeline-run-id=f21321af-9084-4af3-80b8-4fb34143b7d9 \
  --version=v4 \
  --name=foo-app-helm-chart \
  --sha256=sha256:9106cdf8c0f5c110f1cdf65825edd195927cdb439db8767791ac2011c2d41894 \
  --signature=9106cdf8c0f5c110f1cdf65825edd195927cdb439db8767791ac2011c2d41894 \
  --type=helm-chart
$ cocoa inventory add --from-file multi-artifacts.json \
  --environment=environment  \
  --org=test \
  --repo=repository

Verwendung der Option --from-file

Wenn Sie die Option --from-file verwenden, unterstützt der Befehl das Hinzufügen mehrerer Einträge in einer einzigen Übertragung. Diese Option erwartet eine JSON-Datei, die ein Array von Objekten enthält, wobei jedes Objekt in dem Array die gleichen Felder haben sollte, wie in der obigen Optionstabelle beschrieben. Die Feldanforderungen (obligatorisch vs. optional) bleiben dieselben wie bei der Verwendung einzelner Befehlszeilenoptionen. Der einzige Unterschied besteht darin, dass diese Felder nicht als Befehlszeilenargumente angegeben werden, sondern aus der JSON-Datei gelesen werden.

Die Optionen --environment, --org und --repo müssen in der Befehlszeile angegeben werden und gelten für alle Einträge in der Datei.

Beispiel für die Struktur einer JSON-Datei:

[
  {
    "artifact": "us.icr.io/namespace/hello-compliance-app:20201217081811-master-b85e3d472e9cc35b429c39e8c3f9eb282738c20a@sha256:da36831d5154307ac9ca4b8d900df2da0c6c14754977c32479dc62994b5722d0",
    "type": "image",
    "sha256": "sha256:786800e8e48938664fe2397ca14ab8dabd48f34656ef5cfda4143b4519cb714f",
    "name": "hello-compliance-app",
    "repository-url": "https://github.com/test-org/compliance-app-20201211",
    "commit-sha": "8e86dc4647ce28632103dce46b756c70d339349a",
    "version": "v4",
    "build-number": 33,
    "pipeline-run-id": "f21321af-9084-4af3-80b8-4fb34143b7d9",
    "provenance": "us.icr.io/namespace/hello-compliance-app:20201217081811-master-b85e3d472e9cc35b429c39e8c3f9eb282738c20a@sha256:da36831d5154307ac9ca4b8d900df2da0c6c14754977c32479dc62994b5722d0",
    "signature": "owFNUX1IE3EY3vwAEy0VyoSJdkVWtu0+d3eTjNIIi0jETCSU3353cz+83V23myi2BlFgYiUFqSmZLciUzCJkRYJp9IEWFWXB0hAyrBQxEjIIuhFSf70vL8/7vM/zPi3JsaYEc+TnbqG8qrnTPDZ8w2WqiqwtacCghnQEgYQ5GzAkiLKO9PpoLyiwRtSsmugWNVGGIubE/D4bgpoNKXag60gCdo8oSYoVKl5VQsDAWIGqOkmcxAmSYHGO4AjC6gU+3eBxcYxICTRLijyEFOOiSR5SvMhBys2LLpIjWYqDJA6wwHYMeUG1+J8GL5CRW/TpVgFVG8VQ4vMAknE4BUA5OIoQGIKhKZwFkIeAdnECj+OCmxQADh2QoFmG5lkWUiTN8gJ0kDxPuxiWJAU8ekyvV6PegK54EcyGiqwDJItatg9Vy0D3a2IUpKg6UuS/T4KaaIC1fzuMDbfhmMGEvIY64FUxJ+Ew3PMU5SADgdNmKs5kTjBlrtsQ99iyY49nns8o6jsXWgkjPiYahClxVcrK5Flngumz2j7YdmD0ecutytsvxxNPHflKlRV2RyqD69NjC6Smji9XuukFyZ+lvM18gUr7F4NXge9YyZPik411tc1n9bKO/hDz7oGaX/ur94OnNHiwOG6n5ZsrsCsvtyvmkH4zOWlrRWuL7fzgj9zlcCTAhtu2LbeGLNfv3Ju0Jc9PZPk7Pm3Ov2CW+2xj8ReX6ooGamZ610yqRM/+8Qo2XnOeyZzbVKgs+f2+9unpJOve4Tmla+PdqftDWkHPm9Vq3nsyZ2DUkmP/nTb7qNw5l2SfWtiSemJx9nLaYOpx6amlOT18aeIwJQhHg1XOjJF9r18NXQvPuL9rH5tSQqbGhyN/AA==",
    "app-artifacts": "{\"app\": \"test\", \"some_value\": \"value\"}",
    "locations": {
      "stage":"stage-us.icr.io/namespace/hello-compliance-app:20201217081811-master-b85e3d472e9cc35b429c39e8c3f9eb282738c20a@sha256:da36831d5154307ac9ca4b8d900df2da0c6c14754977c32479dc62994b5722d0",
      "prod":"prod-us.icr.io/namespace/hello-compliance-app:20201217081811-master-b85e3d472e9cc35b429c39e8c3f9eb282738c20a@sha256:da36831d5154307ac9ca4b8d900df2da0c6c14754977c32479dc62994b5722d0"
   },
  },
  {
    "artifact": "foo-helm-chart/foo/chart.yaml",
    "repository-url": "https://github.com/test-org/compliance-app-20201211",
    "provenance": "https://github.com/test-org/compliance-app-20201211/foo-helm-chart/foo/chart.yaml",
    "commit-sha": "786800e8e48938664fe2397ca14ab8dabd48f34656ef5cfda4143b4519cb714f",
    "build-number": 34,
    "pipeline-run-id": "f21321af-9084-4af3-80b8-4fb34143b7d9",
    "version": "v4",
    "name": "foo-app-helm-chart",
    "sha256": "sha256:9106cdf8c0f5c110f1cdf65825edd195927cdb439db8767791ac2011c2d41894",
    "signature": "9106cdf8c0f5c110f1cdf65825edd195927cdb439db8767791ac2011c2d41894",
    "type": "helm-chart",
  }
]

Bei Verwendung von --from-file ist es möglich, Speicherorte für das Artefakt in anderen Registern anzugeben. Der Befehl erwartet, dass das Feld locations ein Objekt ist, bei dem der Schlüssel <environment> und der Wert <static_name>:<version>@sha256:<sha256_digest> in diesem Format ist.

cocoa inventory get

Es wird ein Eintrag aus dem Bestandsrepository abgerufen. Das Ziel kann eine bestimmte Version oder eine Umgebung sein. Verwenden Sie entweder --version oder --environment und achten Sie darauf, nur eine der beiden Optionen zu verwenden. Wenn die Option --property fehlt, wird der gesamte Inhalt des Bestandseintrags ausgegebenged.

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=    # Github Enterprise API Token (Optional if you are using --git-token-path)

Optionen für 'git':

--git-token-path       #(Optional) Github Token's path
--git-api-url          #(Optional) Github API url

Wenn Sie github verwenden, verwenden Sie das Feld --git-token-path, um Ihren GitHub Token festzulegen, und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle der Umgebungsvariablen GHE_TOKEN und GH_URL festzulegen. Wenn sowohl GHE_TOKEN GH_URL-als auch --git-token-path --git-api-url-Paare angegeben werden, haben --git-token-path und --git-api-url Vorrang.

Standardmäßig stellt die Befehlszeilenschnittstelle bei jedem Aufruf sicher, dass Sie mit einer aktuellen Version eines Git-Locker arbeiten. Dieses Verhalten kann inaktiviert werden, indem COCOA_USE_CACHE auf einen beliebigen Wert außer 0, false, no oder n gesetzt wird. In diesem Fall verwendet die Befehlszeilenschnittstelle ihren internen Cache, um Angaben zu suchen (viel schneller), aber die Ergebnisse sind möglicherweise veraltet.

Führen Sie den folgenden Befehl aus:

# Uses the environment as target, and pretty-prints only a given property of the inventory entry to the console.
$ cocoa inventory get \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  --entry='hello-compliance-app' \
  --environment='master' \
  --property='name'
# Uses the version as target, and pretty-prints the whole content of the inventory entry to the console.
$ cocoa inventory get \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  --entry='hello-compliance-app' \
  --version='v1'

cocoa inventory get-sha

Ruft den Hash des neuesten Commits anhand eines Labels oder einer Umgebung aus dem Inventar-Repository ab. Verwenden Sie entweder --label oder --environment und achten Sie darauf, nur eine der beiden Optionen zu verwenden.

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=    # Github Enterprise API Token (Optional if you are using --git-token-path)

Optionen für 'git':

--git-token-path    #(Optional) Github Token's path
--git-api-url       #(Optional) Github API url

Wenn Sie github verwenden, verwenden Sie das Feld --git-token-path, um Ihren GitHub Token festzulegen, und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle der Umgebungsvariablen GHE_TOKEN und GH_URL festzulegen. Wenn GHE_TOKEN GH_URL-und --git-token-path --git-api-url-Paare angegeben werden, haben --git-token-path und --git-api-url Vorrang.

Führen Sie den folgenden Befehl aus:

# Get the latest commit hash of the staging branch
$ cocoa inventory get-sha \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  --environment='staging'
# Get the commit hash of the "pipeline-run-id" label
$ cocoa inventory get-sha \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  --label='pipeline-run-id'

cocoa inventory label

Durch die Verwendung eines Inventaretiketts können Etiketten innerhalb eines Inventarelements hinzugefügt oder verschoben werden, wobei das neueste Commit in einem Zweig oder ein anderes Etikett als Ziel verwendet wird.

Optionen:

--org          # The Github organisation which owns the inventory repository.
--repo         # The name of the inventory repository.
--environment  # The inventory branch ( not required for deleting a cocoa inventory label)
--to-label     # Another label in the inventory that can be referenced or removed. ( not required for deleting a cocoa inventory label )

Erforderliche Umgebungsvariablen:

GHE_ORG=     # Github Organization (required if --org option is not specified).
GHE_REPO=    # Github Repository (required if --repo option is not specified).

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=    # Github Enterprise API Token (Optional if you are using --git-token-path)

Optionen für 'git':

--git-token-path    #(Optional) Github Token's path
--git-api-url           #(Optional) Github API url

Wenn Sie github verwenden, verwenden Sie das Feld --git-token-path, um Ihren GitHub Token festzulegen, und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle der Umgebungsvariablen GHE_TOKEN und GH_URL festzulegen. Wenn sowohl GHE_TOKEN GH_URL-als auch --git-token-path --git-api-url-Paare angegeben werden, haben --git-token-path und --git-api-url Vorrang.

Führen Sie den folgenden Befehl aus:

# label the latest state on "staging" branch
$ cocoa inventory label add \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  --environment='staging' \
  "new-label-to-add"
# attach a label to another label (to the same commit)
$ cocoa inventory label add \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  --to-label="some-label" \
  "new-label-to-add"
# move or create the `label-to-move` label to another label (to the same commit)
$ cocoa inventory label move \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  --to-label="some-label" \
  "label-to-move"
# delete the `label-to-delete` label from the inventory
$ cocoa inventory label delete \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  "label-to-delete"

cocoa inventory promote

Stuft Einträge aus dem Bestand aus einer Umgebung in eine andere um. Die Quellenumgebung kann entweder eine Verzweigung oder ein Tag sein.

Erforderliche Umgebungsvariablen:

GHE_ORG=          # Github Organization (required if --org option is not specified).
GHE_REPO=         # Github Repository (required if --repo option is not specified).
PIPELINE_RUN_ID=  # Can be used instead of --pipeline-run-id (either the option or the variable is required).

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=    # Github Enterprise API Token (Optional if you are using --git-token-path)

Optionen für 'git':

--git-token-path    #(Optional) Github Token's path
--git-api-url           #(Optional) Github API url

Wenn Sie github verwenden, verwenden Sie das Feld --git-token-path, um Ihren GitHub Token festzulegen, und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle der Umgebungsvariablen GHE_TOKEN und GH_URL festzulegen. Wenn beide angegeben werden, haben --git-token-path und --git-api-url Vorrang.

Führen Sie den folgenden Befehl aus:

$ cocoa inventory promote \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  --source='master' \
  --target='prod' \
  --priority='Critical' \
  --assigned-to='employee@ibm.com' \
  --description='desc' \
  --purpose='purpose' \
  --impact='impact' \
  --customer-impact='impact' \
  --deployment-impact='small' \
  --backout-plan='rollback'

kakaobestand validieren

Validiert Einträge in einem Bestandsverzeichnis (oder einer JSON-Datei). Das Inventory Repo kann seine Umgebung (Branch) oder sein Label (Tag) validieren lassen.

Folgende Optionen sind zu validieren (mindestens eines der Flags muss verwendet werden)

  1. unter Verwendung des ' --environment-Flags - das einen Zweig als Wert annimmt und alle Einträge darin validiert.
  2. unter Verwendung des Flags " --label, das den Tag als Wert annimmt und alle Einträge darin validiert.
  3. mit dem Flag " --from-file, das den Pfad einer JSON-Datei mit Inventareinträgen (im Bindestrichformat) enthält.

Optional.

  1. Wenn ein benutzerdefinierter Dateiname für die Inventarisierung verwendet werden soll, kann der Standardwert mit dem Kennzeichen " --inventory-ignore-file-name überschrieben werden.
  2. Wenn bereits ein geklontes Inventar-Repository existiert und Sie möchten, dass der Befehl dasselbe verwendet, können Sie den Pfad für das geklonte Inventar-Repository mit dem Flag " --inventory-path angeben.

Erforderliche Optionen:

--org          # The Github organisation which owns the inventory repository.
--repo         # The name of the inventory repository.
--environment  # The inventory branch to validate
--label        # label in the inventory, that will be validated

Umgebungsvariablen (fakultativ und kann anstelle der Angabe von " --org " --repo und " --git-token-path) verwendet werden:

GHE_ORG=                    # Can be used instead of --org (either the option or the variable is required)
GHE_REPO=                   # Can be used instead of --repo (either the option or the variable is required)
GHE_TOKEN=    # Github Enterprise API Token (Optional if using --git-token-path)

Führen Sie den folgenden Befehl aus:

$ cocoa inventory validate \
   --org "Github-ID" \
   --repo "inventory-repo" \
   --git-token-path="$INVENTORY_TOKEN_PATH" \
   --label "$latest_tag" \
   --inventory-path "${DIRECTORY_NAME}"

kakaobestand get-delta

Ermittelt das Delta zwischen den Übertragungen aus dem Inventar-Repository. Optional erhalten Sie Peer-Review-Commits innerhalb des Deltas zwischen zwei Commits.

Erforderliche Umgebungsvariablen:

GHE_ORG=     # Github Organization (required if --org option is not specified).
GHE_REPO=    # Github Repository (required if --repo option is not specified).

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=    # Github Enterprise API Token(Optional if you are using --git-token-path)

Optionen für 'git':

--git-token-path    #(Optional) Github Token's path
--git-api-url           #(Optional) Github API url
Optionen für Git
Option Beschreibung Werttyp Erforderlich oder optional Mögliche(r) Wert(e) / Standardwert / Anmerkungen
von-sha Die Startübergabe zur Berechnung des Deltas von Zeichenfolge optionaler
von-Label Das Tag, das als Start-Commit für die Berechnung des Deltas verwendet werden soll Zeichenfolge optionaler
to-sha Das Ende des Commit zur Berechnung des Deltas bis zu Zeichenfolge optionaler
Zielumgebung Die HEAD-Übertragung des Umgebungszweigs zur Berechnung des Deltas bis zu Zeichenfolge optionaler
zum Etikett Das Tag, das die Endübergabe zur Berechnung des Deltas bis zu Zeichenfolge optionaler
Org Die GitHub-Organisation, die Eigner des Bestandsrepositorys ist. Zeichenfolge Optional, wenn die Umgebungsvariable GHE_ORG gesetzt ist
Repo Der Name des Inventar-Repositorys. Zeichenfolge Optional, wenn die Umgebungsvariable GHE_REPO gesetzt ist
Git-Anbieter Der Service-Provider für die Git-Versionssteuerung Zeichenfolge Optionale Standard : "github"
Mögliche Werte : ["github", "gitlab"]
Git-Token-Pfad Git-Tokenpfad zum Lesen des geheimen Schlüssels aus Zeichenfolge Optional, wenn die Umgebungsvariable GHE_TOKEN gesetzt ist Beispiel : ' path/to/git-token
Git-API-URL URL Zeichenfolge Optionale Standard : ' https://<region>.git.cloud.ibm.com/api/v4
Delta Flagge zur Berechnung des Deltas Boolescher Wert optionaler Falsch
delta-Löschung Kennzeichen zur Berechnung von Delta-Löschungen Boolescher Wert optionaler Falsch
inventarliste Flagge zur Berechnung der gesamten Bestandsliste Boolescher Wert optionaler Falsch
peer-Review Flagge für die Berechnung der Peer-Review-Commits Boolescher Wert optionaler Falsch
Inventar-Repo-Pfad Optionaler Pfad des Bestandsverzeichnisses. Wenn diese Option übergeben wird, wird das Inventar-Repository innerhalb des Befehls nicht geklont Zeichenfolge optionaler
inventarisieren-ignorieren-dateipfad Optionaler Pfad für die Inventar-Ignore-Datei Zeichenfolge optionaler
vorherige-erfindung-ignorieren-dateipfad Optionaler Pfad für die Ignorierdatei des vorherigen Einsatzinventars Zeichenfolge optionaler

Führen Sie den folgenden Befehl aus:

$ cocoa inventory get-delta \
  --git-provider=github \
  --git-token-path=./git-token \
  --org=test-org \
  --repo=compliance-inventory-repo \
  --git-api-url=<git-api-url> \
  --to-sha 534ff2bbbf0291e10f3b1f6aa409d8de059bbe27 \
  --from-sha e54b5aa12ccb687020ac04b16d489b5a04f90399 \
  --inventory-ignore-file-path=/path/to/current/.inventoryignore \
  --previous-inventory-ignore-file-path=/path/to/previous/.inventoryignore \
  --delta \
  --delta-deletion \
  --inventory-list \
  --peer-review

aktualisierung des Kakaobestands - Standorte

Aktualisieren Sie einen Eintrag/Artikelstandort im Bestandsverzeichnis.

Erforderliche Umgebungsvariablen:

GHE_ORG=     # Github Organization (required if --org option is not specified).
GHE_REPO=    # Github Repository (required if --repo option is not specified).

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=    # Github Enterprise API Token(Optional if you are using --git-token-path)

Optionen für 'git':

--git-token-path    #(Optional) Github Token's path
--git-api-url           #(Optional) Github API url
Optionen für Git
Option Beschreibung Werttyp Erforderlich oder optional Mögliche(r) Wert(e) / Standardwert / Anmerkungen
Name Der Name der Anwendung, zu der das Artefakt gehört. Zeichenfolge Erforderlich
Org Die GitHub-Organisation, die Eigner des Bestandsrepositorys ist. Zeichenfolge Optional, wenn die Umgebungsvariable GHE_ORG gesetzt ist
Repo Der Name des Inventar-Repositorys. Zeichenfolge Optional, wenn die Umgebungsvariable GHE_REPO gesetzt ist
Umgebung Der Name der Umgebung, in der der Eintrag hinzugefügt wird Zeichenfolge Optionale Voreinstellung : "Master"
Git-Anbieter Der Service-Provider für die Git-Versionssteuerung Zeichenfolge Optionale Standard : "github"
Mögliche Werte : ["github", "gitlab"]
Git-Token-Pfad Git-Tokenpfad zum Lesen des geheimen Schlüssels aus Zeichenfolge Optional, wenn die Umgebungsvariable GHE_TOKEN gesetzt ist Beispiel : ' path/to/git-token
Git-API-URL URL Zeichenfolge Optionale Standard : ' https://<region>.git.cloud.ibm.com/api/v4
Standort Standort für das Artefakt in anderen Registern zusammen mit dem sha256 Zeichenfolge Optionale Beispiel: <environment>#<static_name>:<version>@sha256:<sha256_digest>.
Dieses Flag kann mehrfach angegeben werden.

Führen Sie den folgenden Befehl aus:

$ cocoa inventory update-locations \
  --name=hello-compliance-app \
  --git-token-path=./git-token \
  --org=test-org \
  --repo=compliance-inventory-repo \
  --location=stage#stage-us.icr.io/namespace/hello-compliance-app:20201217081811-master-b85e3d472e9cc35b429c39e8c3f9eb282738c20a@sha256:da36831d5154307ac9ca4b8d900df2da0c6c14754977c32479dc62994b5722d0 \
  --location=prod#prod-us.icr.io/namespace/hello-compliance-app:20201217081811-master-b85e3d472e9cc35b429c39e8c3f9eb282738c20a@sha256:da36831d5154307ac9ca4b8d900df2da0c6c14754977c32479dc62994b5722d0

Kakao-Ereignisbefehle

Kakaovorfallprozess

Dieser Befehl verarbeitet die bereitgestellten Scan-Ergebnisse und erstellt für jede Schwachstelle einen Vorfall im angegebenen Repository. Wenn bereits Probleme für Subjektvorfallpaare vorhanden sind, werden keine neuen erstellt.

Wenn --set-grace-period festgelegt ist, werden Probleme mit einer festgelegten Karenzzeit erstellt oder vorhandene Probleme werden aktualisiert, um eine Karenzzeit zu erhalten.

Die Karenzzeit wird auf 15 Tage gesetzt, wenn sie aktiviert ist. Wenn für ein Vorfallproblem eine Ausnahme oder eine Nachfrist festgelegt ist, wird das Problem zwar aufgelistet, aber nicht als Fehler markiert.

Ausnahmen werden entweder in der CR-VA konfiguriert oder Sie können den Incident oder CVE für eine Freistellungsgenehmigung einreichen. Bei Genehmigung können Sie das Vorfallproblem bearbeiten (Einstellung Excempt: **true**) und mit der genehmigten Anforderung verlinken.

Derzeit unterstützte Scanergebnisdateien:

  • Container Registry VA-Scan (Option --type va)
  • CRA-Schwachstellenscan (Option --type cra)
  • CRA-Scan „ CIS “ (Option „ --type cra-cis “)
  • Xray (Option --type xray)
  • OWASP ZAP (Option --type owasp-zap)
  • OWASP ZAP UI (Option --type owasp-zap-ui)
  • Twistlock (Option --type twistlock)
  • Scans mit dem Container Image Multi-Scanner (CIMS) (Option „ --type cims “)
  • Peer Review Scan (Option --type peer-review)
  • GoLang Security Scan (Option --type gosec)
  • SonarQube Scan (Option --type sonarqube)
  • Scan reparieren (Option --type mend)
  • SAST-Scan reparieren (Option „ --type mend-sast “)
  • Checkov (Option --type checkov)
  • CRA-Schwachstellenscan für Terraform (Option --type cra-tf)
  • Terraform-Sicherheitsscan (option --type tfsec)
  • Fips-Scanner (Option --type fips-scanner)
  • Geheime Schlüssel erkennen (Option --type detect-secrets)
  • Sysdig (Option --type sysdig)
  • CycloneDX (Option „ --type cyclonedx “)
  • Grype (Option „ --type grype “)

Weitere Informationen zu Container Registry VA und Ergebnisformat finden Sie unter Vulnerability Advisor für IBM Cloud Container Registry. Weitere Informationen zum CRA-Schwachstellenscanner finden Sie in der Dokumentation Configuring Code Risk Analyzer.

Verwendung:

$ cocoa incident process \
  <options> \
  <path to result file>

Optionen:

--type             # (Required) Scan type [choices: "cra", "va", "xray", "peer-review", "gosec","owasp-zap", "owasp-zap-ui", "sonarqube", "twistlock", "cims", "mend","mend-sast", "checkov", "cra-tf", "tfsec", "fips-scanner", "contrast-sast","detect-secrets", "sysdig", "cyclonedx", "grype", "cra-cis"]
--subject          # (Required) Subject of scans (repo, or image name)
--drilldown-url    # (Required) URL to the point where the incident was found (can be a pipeline run, a commit hash or an image URL with digest)
--set-grace-period # Should the created incidents have Grace period set
--git-provider     # Git service provider [github] Default is "github"
--org              # The incident issue repository org
--repo             # The incident issue repository name
--label            # Label(s) to add to the incident issue (optional) e.g: --label=foo --label=bar
--assignee         #(Optional) Assignee(s) for the incident issue (github username) e.g: --assignee=jane-doe --assignee=john-smith
--git-token-path   #(Optional) Github Token's path
--git-api-url      #(Optional) Github API url
--custom-exempt-label # (Optional) Defines the custom label with which the incident issue has been marked as exempted
--custom-comment   # (Optional) Additional text to be added to issue comments
--format           # (Optional) Format of the output ("list", "json", default: "list")

Erforderliche Umgebungsvariablen:

INCIDENT_REPO_ORG=        # Can be used instead of --org (either the option or the variable is required)
INCIDENT_REPO_NAME=       # Can be used instead of --repo (either the option or the variable is required)

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=                # Github Enterprise API Token (Optional if you are using --git-token-path)

Wenn Sie github verwenden, verwenden Sie das Feld --git-token-path, um Ihren GitHub Token festzulegen, und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle der Umgebungsvariablen GHE_TOKEN und GH_URL festzulegen. Wenn beide angegeben sind, haben --git-token-path und --git-api-url Vorrang.

Rückgabewerte:

  • Wenn keine Probleme gefunden werden oder wenn für alle gefundenen Probleme entweder die Freistellung oder die Karenzzeit festgelegt ist, wird der Befehl mit dem Status null beendet.
  • Wenn für eines der gefundenen Probleme keine Freistellung oder Karenzzeit festgelegt ist, wird der Befehl mit einem Status ungleich null beendet.
  • If format == list-Der Befehl listet gefundene oder entsprechend der Ergebnisdatei und dem Betreff erstellte Problem-URLs auf.
  • If format == json-Der Befehl gibt eine JSON mit einem Array von Ergebnisobjekten (zusätzliche Probleminformationen) für jedes der gefundenen, erstellten und automatisch geschlossenen Probleme entsprechend der Ergebnisdatei und dem Betreff aus.
  • Struktur des JSON-Ergebnisobjekts, das einem Problem entspricht:
{
 "id": string,
 "due_date": string,
 "severity": ("high", "medium", "low", "critical, "informational"),
 "first_found": "string" (optional),
 "url": string,
 "found_status": ("new", "existing", "autoclosed", "readonly"),
 "has_exempt": boolean
}

Führen Sie den folgenden Befehl aus:

$ cocoa incident process \
  --type va \
  --subject us.icr.io/service-image \
  --drilldown-url us.icr.io/service-image@sha256:digest \
  path/to/scan-result.json

Kakao-Vorfallprozess-traditionell

Dieser Befehl erstellt Vorfallprobleme im bereitgestellten Repository für Szenarios, in denen keine Scandatei verfügbar ist. In der Regel sind solche Szenarios nicht auf Sicherheitslücken bezogene Fehler wie Fehler beim Komponententest, Fehler beim Filialschutz, Fehler beim Abnahmetest und Fehler beim Signieren von Images. Diese Fehler wären keine Schwachstellen, aber sie wären eine Abweichung von der Compliance-Haltung. Wenn bereits Probleme für Kombinationen aus Incident-Subject-Tool vorhanden sind, erstellt der Befehl keine neuen. Standardmäßig ist die Wertigkeitsbewertung high auf erstellte Probleme gesetzt.

Wenn --set-due-date festgelegt ist, erstellt der Befehl Probleme oder aktualisiert vorhandene Probleme mit Fälligkeitsdaten. Die Fälligkeitsdaten werden ausgehend von der Karenzzeit des Problems auf der Basis des Schweregrads berechnet.

Wenn das Flag --close-resolved-issues gesetzt ist, sucht der Befehl nach offenen Problemen mit demselben Tool, demselben Betreff und derselben Vorfall-ID wie die aktuelle Ausführung. Wenn Probleme gefunden werden, während --current-status als success übergeben wurde, schließt der Befehl diese Probleme.

Wenn --read-only festgelegt ist, erstellt der Befehl keine neuen Probleme und ändert keine vorhandenen. Ergebnisse werden verarbeitet und vorhandene Probleme werden für Ergebnisse erfasst. Die Ausgabe enthält die Liste der URL, die in Problemen verfolgt werden sollen, wenn der Nur-Lese-Modus nicht aktiviert ist.

Verwendung:

cocoa incident process-legacy \
  <options>

Optionen:

--type             # (Required) Tool type
--subject          # (Required) Subject of scans (repo, or image name)
--drilldown-url    # (Required) URL to the point where the incident was found (can be a pipeline run, a commit hash or an image URL with digest)
--set-grace-period # Should the created incidents have Grace period set
--git-provider     # Git service provider [github] Default is "github"
--org              # The incident issue repository org
--repo             # The incident issue repository name
--label            # Label(s) to add to the incident issue (optional) e.g: --label=foo --label=bar
--assignee          #(Optional) Assignee(s) for the incident issue (github username) e.g: --assignee=jane-doe --assignee=john-smith
--git-token-path    #(Optional) Github Token's path
--git-api-url           #(Optional) Github API url
--close-resolved-issues # (Optional) Checking and closing resolved issues
--pipeline-run-url      # (Optional) The url to the pipeline run running the CLI command
--is-prod          # (Optional) Flag for whether or not the command was run in production environment. Default is false.
--read-only        # (Optional) Process result file in read-only mode (return found and existing issues, do not create new ones, set processed status to failure or success). Default is false
--custom-exempt-label # (Optional) Defines the custom label with which the incident has been marked as exempted
--incident-id         # (Required) Defines the incident ID to be used for creating legacy incident
--current-status      # (Required) Current status to be treated as success or failure [choices: "success", "failure"]
--custom-comment   # (Optional) Additional text to be added to issue comments
--format           # (Optional) Format of the output ("list", "json", default: "list")
--additional-comment  # (Optional) Additional comment for the issue on every run

Umgebungsvariablen:

INCIDENT_REPO_ORG=    # Can be used instead of --org (either the option or the variable is required)
INCIDENT_REPO_NAME=   # Can be used instead of --repo (either the option or the variable is required)
# Required Environment Variables, if using GitHub:
GHE_TOKEN=    # Github Enterprise API Token (Optional if using --git-token-path)

Wenn Sie github verwenden, können Sie das Feld --git-token-path verwenden, um Ihr GitHub festzulegen, und das Feld --git-api-url verwenden, um die GitHub Enterprise URL festzulegen (die Standardeinstellung ist https://<region>.git.cloud.ibm.com/api/v4 ), anstatt die Umgebungsvariablen GHE_TOKEN und GH_URL. Wenn die beiden Paare GHE_TOKEN GH_URL und --git-token-path --git-api-url bereitgestellt werden, haben --git-token-path und --git-api-url Vorrang.

Rückgabewerte:

  • Der Befehl listet gefundene oder erstellte Problem-URLs für Vorfälle auf, wenn die --current-status als failure übergeben wurde. Der Befehl schließt auch die Problem-URLs für Vorfälle, die derselben Kombination aus Vorfall-Tool-Betreff entsprechen, wenn --current-status als failure übergeben wurde.
  • Im Modus --read-only listet der Befehl Details zu gefundenen Vorfällen auf, wenn für diesen Vorfall kein Problem gefunden wird.
  • Wenn keine Probleme gefunden werden oder alle gefundenen Probleme einen ausgeschlossenen Kennsatz haben, wird der Befehl mit dem Status null beendet.
  • Wenn eines der gefundenen Probleme keinen ausgeschlossenen Kennsatz hat, wird der Befehl mit einem Status ungleich null beendet.
  • Wenn im Modus --read-only ein neuer Vorfall ohne Probleme gefunden wird, wird der Befehl mit einem Status ungleich null beendet.
  • If format == list-Der Befehl listet gefundene oder erstellte Problem-URLs für Vorfälle auf, wenn die --current-status als failure übergeben wurde.
  • If format == json-Der Befehl gibt eine JSON mit einem Array von Ergebnisobjekten (zusätzliche Probleminformationen) für jedes der gefundenen, erstellten und automatisch geschlossenen Probleme entsprechend der Ergebnisdatei und dem Betreff aus.
  • Struktur des JSON-Ergebnisobjekts, das einem Problem entspricht:
{
 "id": string,
 "due_date": string,
 "severity": ("high", "medium", "low", "critical, "informational"),
 "first_found": "string" (optional),
 "url": string,
 "found_status": ("new", "existing", "autoclosed", "readonly"),
 "has_exempt": boolean
}

Führen Sie den folgenden Befehl aus:

$ cocoa incident process-legacy \
   --type jest \
   --subject us.icr.io/service-image \
   --drilldown-url us.icr.io/service-image@sha256:digest \
   --incident-id com.ibm.unit_tests_master \
   --current-status success \
   --close-resolved-issues

Kakaovorfall bewerten

Bewerten Sie den Status der Probleme auf der Basis von 'due_date' und 'exempt label ' und geben Sie die Problemergebnisse aus.

Verwendung:

$ cocoa incident evaluate \
  <options> \
  <filePath>

Optionen:

--git-provider         # Git service provider [github] Default is "github"
--org                  # The incident issue repository org
--repo                 # The incident issue repository name
--filePath             # Path to the JSON file that contains issues to be evaluated
--git-token-path       # (Optional) Github Token's path
--git-api-url          # (Optional) Github API url
--custom-exempt-label  # (Optional) Defines the custom label with which the incident issue has been marked as exempted
--is-prod              # (Optional) Whether or not the command was run in prod environment
--format               # (Optional) Format of the output ("list", "json", default: "list")

Erforderliche Umgebungsvariablen:

INCIDENT_REPO_ORG=        # Can be used instead of --org (either the option or the variable is required)
INCIDENT_REPO_NAME=       # Can be used instead of --repo (either the option or the variable is required)

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=                # Github Enterprise API Token (Optional if you are using --git-token-path)

Wenn Sie github verwenden, verwenden Sie das Feld --git-token-path, um Ihren GitHub Token festzulegen, und das Feld --git-api-url, um die # GitHub Enterprise API URL anstelle der Umgebungsvariablen GHE_TOKEN und GH_URL festzulegen. Wenn beide angegeben sind, haben --git-token-path und --git-api-url Vorrang.

Rückgabewerte:

  • Wenn für alle gefundenen Probleme entweder die Freistellung oder die Karenzzeit festgelegt ist, wird der Befehl mit dem Status null beendet.
  • Wenn für eines der gefundenen Probleme keine Freistellung oder Karenzzeit festgelegt ist, wird der Befehl mit einem Status ungleich null beendet.
  • JSON-Array mit Ergebnissen.
  • Struktur des JSON-Objekts für Ergebnisse, das einem Problem entspricht.
json
{
  "id": string,
  "due_date": string,
  "severity": ("high", "medium", "low", "critical, "informational"),
  "first_found": "string" (optional),
  "url": string,
  "found_status": ("new", "existing", "autoclosed", "readonly"),
  "has_exempt": boolean
}

Führen Sie den folgenden Befehl aus:

$ cocoa incident evaluate \
  --org \
  --repo \
  --git-provider \
  --git-token-path \
  --filePath

Kakao-Vorfall update-state

Aktualisieren Sie den Status des Vorfallsproblems auf open oder close basierend auf dem aktuellen Status der angegebenen URL des Vorfallsproblems.

Code-Schnipsel:

$ cocoa incident update-state \
  <options>

Optionen:

Geben Sie die folgenden optionalen Variablen und Werte an, um weitere Details zu Ihrem Cooca-Incident-Problem anzugeben.

--org             # The incident issue repo org
--repo            # The incident issue repo name
--git-provider    # Git service provider [github, gitlab] Default is "github"
--git-token-path  # (Optional) Github Token's path
--git-api-url     # (Optional) Github API url
--issue-url       # Issue URL whose state is to be updated
--to-state        # target state for the issue to be updated [choices: "open", "close"]
--comment         # (Optional) Comment to be added to the issue being updated
--update-exempt   # (Optional) Flag to update state of exempted issues, default: false

Erforderliche Umgebungsvariablen:

Sie müssen die folgenden Umgebungsvariablen und ihre Werte angeben, wenn Sie die optionalen Variablen --org und --repo zuvor nicht verwendet haben.

INCIDENT_REPO_ORG=        # Must be used if --org optional variable is not used.
INCIDENT_REPO_NAME=       # Must be used if ---repo optional variable is not used.

Wenn Ihr git-provider github ist, verwenden Sie die folgende erforderliche Umgebungsvariable:

GHE_TOKEN=                # Github Enterprise API Token (Optional if you are using --git-token-path)
GH_URL=                   # Github API url (Optional if you are using --git-api-url)

Sie können auch optionale Variablen --git-token-path und verwenden --git-api-url, um den Token-Pfad und die API- URL-Werte von Github anzugeben. Optionale Variablen haben einen höheren Vorrang, wenn beide vorhanden sind, --git-token-path und --git-api-url haben Vorrang.

Rückgabewerte:

  • Der Befehl wird mit dem Rückgabewert 0 beendet, wenn die Aktualisierung des Zustands der Ausgabe erfolgreich war.
  • Der Befehl wird mit dem Rückgabewert 1 beendet, wenn die Aktualisierung des Zustands der Ausgabe nicht erfolgreich war.

Führen Sie den folgenden Befehl aus:

$ cocoa incident update-state \
  --org \
  --repo \
  --git-provider \
  --git-token-path \
  --git-api-url \
  --issue-url \
  --comment \
  --to-state

Kakao-Schließfach

Um Beweismittel und Anhänge zu Archivierungszwecken in Cloud Object Storage hochzuladen. Dies geschieht automatisch, wenn die folgenden Umgebungsvariablen vorhanden sind:

  • COS_ENDPOINT: Der Endpunkt, an dem auf das Bucket Cloud Object Storage zugegriffen werden kann.
  • COS_BUCKET_NAME: Der Name des Cloud Object Storage-Buckets.
  • COS_API_KEY: Ein IBM Cloud-API-Schlüsseloder ein Service-ID-API-Schlüssel, der Schreibzugriff auf das Bucket Cloud Object Storage hat.
  • BACKUP_COS_ENDPOINT: Der Endpunkt, an dem auf das Bucket Cloud Object Storage zugegriffen werden kann.
  • BACKUP_COS_BUCKET_NAME: Der Name des BackupCloud Object Storage-Buckets.
  • BACKUP_COS_API_KEY: Ein IBM Cloud-API-Schlüssel oder Service-ID-API-Schlüssel mit Lesezugriff auf den Cloud Object Storage Bucket.
  • IBM_AUTH_ENDPOINT: Der Endpunkt, an dem der API-Schlüssel verwendet werden kann, um ein IAM-Tokenzu generieren (standardmäßig https://iam.cloud.ibm.com/identity/token){: external}.

Kakao locker asset add < URI->

Fügt dem Angabenfach eine Anlage hinzu. Es zeigt die Asset-Informationen an, wenn das angegebene Asset existiert.

Optionen:

--type             # Type of the asset ( All types are supported )
--version          # Show version number
--format           # Output format ("id", "json", default: "id")
--related          # The ID of a related asset (default: [])
--date             # Asset creation date
--details          # Additional asset details, as key=value pairs (default: [])
--origin           # Additional details about the origin of the asset, as key=value pairs (default: [])
--dry-run          # Shows what would be added to the locker (default: false)

Verwenden Sie das Flag --dry-run, wenn Sie dem Schließfach nichts hinzufügen möchten und überprüfen möchten, was dem Schließfach hinzugefügt würde.

Der Typ des Assets kann mit dem Flag --type angegeben werden.

Der Parameter uri kann ein beliebiger gültiger URIsein, aber einige Formate werden speziell behandelt:

  • Wenn das uri-Schema docker ist (d. h., es beginnt mit docker://), nimmt der Befehl das Flag --type=image an.
  • Wenn das uri-Schema git ist oder der Pfad mit dem Suffix .git endet, nimmt der Befehl das Flag --type=commit an.

Wenn type auf image oder commit gesetzt ist, muss der URI mit den folgenden Mustern übereinstimmen:

  • Für image muss der URI den Image-Digest (z. B. docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777) enthalten

Wenn type ein anderer Wert als image oder commit ist, muss das Flag --type explizit übergeben werden.

Weitere Details können dem Asset mit dem Flag --details hinzugefügt werden, das key=value-Paare akzeptiert.

Weitere Details zum Ursprung des Assets können mit dem Flag --origin bereitgestellt werden, das key=value-Paare akzeptiert.

Einige Umgebungsvariablen werden automatisch berücksichtigt, um Details zum Assetursprung hinzuzufügen:

  • Die Einstellung TOOLCHAIN_CRN entspricht der Angabe von --origin toolchain_crn=$TOOLCHAIN_CRN.
  • Die Einstellung PIPELINE_ID entspricht der Angabe von --origin pipeline_id=$PIPELINE_ID.
  • Die Einstellung PIPELINE_RUN_ID entspricht der Angabe von --origin pipeline_run_id=$PIPELINE_RUN_ID.

Das Flag --date kann verwendet werden, um das Erstellungsdatum des Assets zu überschreiben (standardmäßig wird die aktuelle Uhrzeit verwendet). Es akzeptiert jede Zeichenfolge, die Date.parse akzeptiert.

Zugehörige Anlagen können mit dem Flag --related hinzugefügt werden. (Für mehrere zugehörige Anlagen kann das Flag mehrfach angegeben werden) Assets können mit ihrer internen ID oder mit ihrem URI angegeben werden. Alle zugehörigen Asset-IDs (der gesamte Baum bis zum ersten Asset) werden dem Feld parents in der Asset-Json-Datei hinzugefügt.

Standardmäßig gibt das Format id (das Flag --format ) die interne ID des erstellten Assets aus. Im Format json wird das gesamte Asset als JSON-Objekt ausgegeben.

Führen Sie den Befehl zum Hinzufügen eines Git-Commits aus:

$ cocoa locker asset add 'https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee' \
                         --details tag=v1.2.3

Beispielausgabe:

b5bbbbb55555b5555b555b55b5555bb5b555b5b555bb5b55bbb5555fbbbbb

Führen Sie den Befehl zum Hinzufügen eines Docker-Image aus:

$ cocoa locker asset add docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777 \
                         --origin "job_name=my job" \
                         --related https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee \
                         --format json

Beispielausgabe:

{
   "version": "1.1",
   "id": "0000000011111111222222223333333344444444555555556666666677777777",
   "uri": "docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777",
   "origin": {
    "job_name": "my job",
    "toolchain_crn": "crn:v1:bluemix:public:toolchain:au-syd:a/111111111111c2f2222222222b22a7a63:ac2a22a2-2a2a-2222-aaa2-222aa22a2a2a::",
    "pipeline_run_id": "f333b3bc-3333-3fea-3333-333d3a3b33b3",
    "pipeline_id": "444aaa4a-b4c4-4444-4f4b-aa4444a444a4"
   },
   "details": {
    "registry": "us.icr.io",
    "name": "foo/bar",
    "tag": "v1.2.3",
    "digest": "0000000011111111222222223333333344444444555555556666666677777777"
   },
   "date": "2021-07-15T14:26:06.301Z",
   "type": "image",
   "related": [
    "b5bbbbb55555b5555b555b55b5555bb5b555b5b555bb5b55bbb5555fbbbbb"
   ],
   "parents": [
    "b5bbbbb55555b5555b555b55b5555bb5b555b5b555bb5b55bbb5555fbbbbb"
   ]
}

Befehl zum Hinzufügen eines Release ausführen:

$ cocoa locker asset add release:my-app@v1.2.3 \
                         --type generic \
                         --date 2021-06-01T12:00:00 \
                         --related docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777

Beispielausgabe:

36d8852458adf44ab236c99beb69d7070d461d39480bc6b8ef7c771bee93cb49%

Kakao locker asset get < URI >

Ruft eine Anlage aus dem Angabenschließfach ab

Optionen:

--type             # Type of the asset
--version          # Show version number
--format           # Output format ("id", "json", default: "id")

Führen Sie den folgenden Befehl aus:

 cocoa locker asset get release:my-app@v1.2.3 --format json

Beispielausgabe:

{
   "version": "1.1",
   "id": "36d8852458adf44ab236c99beb69d7070d461d39480bc6b8ef7c771bee93cb49",
   "uri": "release:my-app@v1.2.3",
   "origin": {
    "toolchain_crn": "crn:v1:bluemix:public:toolchain:au-syd:a/111111111111c2f2222222222b22a7a63:ac2a22a2-2a2a-2222-aaa2-222aa22a2a2a::",
    "pipeline_run_id": "f333b3bc-3333-3fea-3333-333d3a3b33b3",
    "pipeline_id": "444aaa4a-b4c4-4444-4f4b-aa4444a444a4"
   },
   "details": {
    "sha": "aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee",
    "repository": <repository-url>,
    "tag": "v1.2.3"
   },
   "date": "2021-07-15T14:26:06.301Z",
   "type": "image",
   "related": ["0000000011111111222222223333333344444444555555556666666677777777"],
   "parents": ["0000000011111111222222223333333344444444555555556666666677777777", "b5bbbbb55555b5555b555b55b5555bb5b555b5b555bb5b55bbb5555fbbbbb"]
}
 cocoa locker asset get docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777 --format json

Beispielausgabe:

{
   "version": "1.1",
   "id": "0000000011111111222222223333333344444444555555556666666677777777",
   "uri": "docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777",
   "origin": {
    "toolchain_crn": "crn:v1:bluemix:public:toolchain:au-syd:a/111111111111c2f2222222222b22a7a63:ac2a22a2-2a2a-2222-aaa2-222aa22a2a2a::",
    "pipeline_run_id": "f333b3bc-3333-3fea-3333-333d3a3b33b3",
    "pipeline_id": "444aaa4a-b4c4-4444-4f4b-aa4444a444a4"
   },
   "details": {
    "sha": "aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee",
    "repository": <repository-url>,
    "tag": "v1.2.3"
   },
   "date": "2021-07-15T14:26:06.301Z",
   "type": "image",
   "related": [],
   "parents": ["b5bbbbb55555b5555b555b55b5555bb5b555b5b555bb5b55bbb5555fbbbbb"]
}
 cocoa locker asset get https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee --format json

Beispielausgabe:

{
   "version": "1.1",
   "id": "0000000011111111222222223333333344444444555555556666666677777777",
   "uri": "docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777",
   "origin": {
    "toolchain_crn": "crn:v1:bluemix:public:toolchain:au-syd:a/111111111111c2f2222222222b22a7a63:ac2a22a2-2a2a-2222-aaa2-222aa22a2a2a::",
    "pipeline_run_id": "f333b3bc-3333-3fea-3333-333d3a3b33b3",
    "pipeline_id": "444aaa4a-b4c4-4444-4f4b-aa4444a444a4"
   },
   "details": {
    "sha": "aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee",
    "repository": <repository-url>,
    "tag": "v1.2.3"
   },
   "date": "2021-07-15T14:26:06.301Z",
   "type": "image",
   "related": [],
   "parents": []
}

Kakao locker asset summary get < URI >

Erfasst die Zusammenfassung der Angaben für die betreffende Anlage aus dem Angabenschließfach.

Optionen:

--scope                   # (Required) Pipeline run ID of the CI piepline where the asset is built
--environment             # (Required) Name of the environment from which evidences are fetched, if the `service-environment` is `pre_prod`
                            This value must be the same as the `target-environment`. Or, if `service-environment` is `prod`, then this value must be the same as the `source-environment`
--service-environment     # Service environment of the asset get summary in deployed environment
                            (choices: 'pre_prod', 'dev', 'prod',  default: 'pre_prod')
--latest                  # Fetches the latest evidence summary of the asset for the `service-environment`.
                            The summary of the scope passed-in using `--scope` will be excluded. Currently supported for `dev` environment only.

Führen Sie den folgenden Befehl aus:

 cocoa locker asset summary get https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee \
  --scope 11a1aa11-1a11-11a1-aa11-a11a1a1111a1 \
  --environment prod \
  --service-environment prod

Führen Sie den Befehl aus, um die neueste Beweisübersicht abzurufen, mit Ausnahme der des übergebenen Bereichs, mit --scope:

 cocoa locker asset summary get https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee \
  --scope 11a1aa11-1a11-11a1-aa11-a11a1a1111a1 \
  --environment dev \
  --service-environment dev \
  --latest

Liste der Kakao-Locker-Assets < URI >

Listet die zugehörigen Assets aus dem Angabenschließfach auf

Optionen:

--type             # Type of the asset
--version          # Show version number
--format           # Output format ("id", "json", default: "id")

Führen Sie den folgenden Befehl aus:

 cocoa locker asset list release:my-app@v1.2.3 --format id --type generic

Beispielausgabe:

1122211111122222111111111111111111111111111111666661111111111111
2222222222555552222222222222222333333222222222222222222222222222
3333333337777773333333333333333333333333333333344444433333333333

Führen Sie den Befehl unter Verwendung des Formats json in Kombination mit jqaus:

 cocoa locker asset list release:my-app@v1.2.3 --format json --type generic | jq -r '.[].uri'

Beispielausgabe:

release:my-app@v1.2.3
docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777
https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee

Kakao Spind Nachweise hinzufügen

Fügt Angaben zum Angabenfach hinzu.

Die Angabensperre kann mithilfe von Flags angegeben werden. Weitere Informationen finden Sie unter Befehle für Kakaoschließfächer.

Die Nachweise können mithilfe der folgenden Flags konfiguriert werden:

  • --evidence-type: Eine Zeichenfolge, die den Typ der Angaben angibt (z. B. com.ibm.unit_test).
  • --evidence-type-version: Eine Zeichenfolge, die das Schema für Angabendetails angibt (z. B. 1.0.0, v2 usw.)

Einige optionale Flags können auch angegeben werden:

  • --date: Das Erstellungsdatum der Angaben (standardmäßig die aktuelle Zeitmarke) akzeptiert eine Zeichenfolge, die mit Date.parse analysiert werden kann.
  • --details: Angabendetails können als key=value-Paare angegeben werden, das Flag kann mehrfach angegeben werden (z. B. --details result=success --details foo=bar usw.).
  • --origin: Details zum Ursprung der Angaben können mithilfe von key=value-Paaren angegeben werden, z. B. --origin job_id=123 usw.
  • --asset: Gibt an, welche Assets (anhand ihrer URI oder internen ID) für die Angaben relevant sind (siehe cocoa locker asset-Befehle). Das Flag kann mehrfach angegeben werden. Die Anlage muss bereits im Schließfach vorhanden sein.
  • --attachment: Gibt Dateianhänge für die Angaben an Jeder Anhang muss auf eine vorhandene Datei verweisen und jeder Name muss eindeutig sein (d. h., --attachment a/foo.json --attachment b/foo.json ist nicht zulässig).
  • --attachment-url: Gibt die URLs von Anhängen an, die bereits im Angabenfach gespeichert sind. Jede URL muss auf einen eindeutigen Anhang verweisen, so dass keine Duplikate entstehen. Dieses Flag kann mehrfach angegeben werden, um mehrere URLs einzuschließen.
  • --issue: Liste der Problem-URLs, die zum Verfolgen von Aktivitäten verwendet werden können, die sich auf die Ergebnisse beziehen. Das Flag kann mehrmals übergeben werden.
  • --findings-path: Verwenden Sie diesen Pfad, um das Array von JSON-Ergebnissen zu übergeben, das die Ausgabe des Vorfallprozessbefehls ist.
  • --scope: Eine eindeutige Kennung, die zum Korrelieren von Angaben aus mehreren Quellen verwendet werden kann.
  • --comment-on-issues: Fügen Sie mit dem Flag --issue einen Kommentar mit Details zu den erstellten Angaben zu den Vorfallproblemen hinzu.
    • Da die Probleme entweder unter github auftreten können, wird der Provider aus den Problem-URLs geparst.
    • Jedes Problem muss aus demselben Repository stammen
    • Die Problem-URLs müssen dem folgenden Muster entsprechen:
      • https://<host>/<owner>/<name>/issues/<issue number>-für github
    • Erforderliche Umgebungsvariablen für den Zugriff auf das Problemrepository:
      • Wenn die URLs auf github-Probleme verweisen:
        • GH_URL: Optional, standardmäßig https://<region>.git.cloud.ibm.com/api/v4
        • GHE_TOKEN

Beschriftungsinformationen für einen Anhang im Beweismittel JSON:

Jeder Anhangsabschnitt im Beweis-JSON verfügt über eine Bezeichnungseigenschaft, um Metadaten zum Anhang zu speichern. Dem Label wird ein Standardwert zugewiesen. Dieser Wert hängt davon ab, ob es sich bei der Anhangseingabe um einen Dateipfad oder eine Anhangs-URL handelt. Übergeben Sie ein benutzerdefiniertes Label, indem Sie ::label=<value> am Ende des Anhangspfads oder der Anhangs-URL.

Beispiele:

  • --attachment path/to/attachment::label=label_name- Erstellt einen Anhang mit der Datei in path/to/attachment und setzt den Labelwert auf label_name. Wenn kein Label übergeben wird, wird standardmäßig der Dateiname als Label-Wert verwendet.

  • --attachment-url url/of/attachment::label=label_name- Verwendet den im attachment-url und setzt den Labelwert auf label_name. Wenn kein Label übergeben wird, ist der Label-Wert standardmäßig eine leere Zeichenfolge.

Einige Umgebungsvariablen werden automatisch berücksichtigt, um Details zum Assetursprung hinzuzufügen:

  • Die Einstellung TOOLCHAIN_CRN entspricht der Angabe von --origin toolchain_crn=$TOOLCHAIN_CRN.
  • Die Einstellung PIPELINE_ID entspricht der Angabe von --origin pipeline_id=$PIPELINE_ID.
  • Die Einstellung PIPELINE_RUN_ID entspricht der Angabe von --origin pipeline_run_id=$PIPELINE_RUN_ID.

Das Verhalten des Befehls kann mit den folgenden Flags geändert werden:

  • --dry-run: Fügt dem Schließfach nichts hinzu, zeigt aber an, was hinzugefügt würde.
  • --cache-mode: Ähnlich wie bei einem Probelauf. Fügt die Beweise nicht zum Schließfach hinzu, sondern fügt die Anhänge (falls vorhanden) zum Schließfach hinzu. Zeigt die Angaben an, die hinzugefügt werden würden
  • --format: Steuert das Ausgabeformat id oder json (standardmäßig id ).

Führen Sie den Befehl zum Sichern der Ergebnisse für detect-secretsaus:

$ cocoa locker evidence add --evidence-type com.ibm.detect_secrets \
                            --evidence-type-version 1.0.0 \
                            --details result=success \
                            --asset https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee

Führen Sie den Befehl zum Speichern der Komponententestergebnisse aus:

$ cocoa locker evidence add --evidence-type com.ibm.unit_test \
                            --evidence-type-version 1.0.0 \
                            --details failure \
                            --asset https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee
                            --attachment path/to/results/junit.xml \
                            --issue <issue-link> \
                            --findings-path <path/to/file>

Führen Sie den Befehl aus, um neue Angaben mithilfe eines Anhangs zu erstellen, der bereits im Schließfach für Angaben vorhanden ist:

$ cocoa locker evidence add --evidence-type com.ibm.detect_secrets \
                            --evidence-type-version 1.0.0 \
                            --attachment-url https://github.com/foo/bar/blob/master/raw/attachments/5aa5555aa55aa55a555aa5a5aa555555aaaa5aa5aa5555a55a5aa5aa5a5aaaaa/content
                            --asset https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee

Führen Sie den Befehl aus, um die Unit-Test-Ergebnisse zu speichern und dem Anhang ein benutzerdefiniertes Label hinzuzufügen:

$ cocoa locker evidence add --evidence-type com.ibm.unit_test \
                            --evidence-type-version 1.0.0 \
                            --details success \
                            --asset https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee
                            --issue <issue-link> \
                            --findings-path <path/to/file> \
                            --attachment path/to/results/junit.xml::label=unit-test

Kakao-Spind-Angaben erhalten < evidenz-id>

Ruft ein Beweisstück aus dem Schließfach ab

Optionen:

--version          # Show version number
--format           # Output format ("json", default: "json")

Führen Sie den folgenden Befehl aus:

 cocoa locker evidence get 0000000011111111222222223333333344444444555555556666666677777777

Beispielausgabe:

{
   "id": "0000000011111111222222223333333344444444555555556666666677777777",
   "evidence_type_id": "com.ibm.unit_tests",
   "evidence_type_version": "1.0.0",
   "date": "2024-03-27T16:36:48.167Z",
   "origin": {
     "toolchain_crn": "crn:v1:bluemix:public:toolchain:us-south:a/40111714589c4f7099032529b26a7a63:f0ffdc07-616e-40fa-98d5-2f52d5e8ef4d::",
     "pipeline_id": "b313626a-a612-4c98-ae5c-408af7d7ce58",
     "pipeline_run_id": "cadb83be-f00d-44af-95d0-1b49deb8abb5",
     "pipeline_run_url": "https://cloud.ibm.com/devops/pipelines/tekton/b313626a-a612-4c98-ae5c-408af7d7ce58/runs/cadb83be-f00d-44af-95d0-1b49deb8abb5/code-unit-tests/run-stage/?env_id=ibm:yp:us-south",
     "scope": "82aef875749c6386381a3baff8430df6f5ac2e8434cc91e5287ce65bd71a3985"
   },
   "details": {
     "result": "pending",
     "tool": "jest"
   },
   "issues": [],
   "findings": [],
   "attachments": [
      {
       "hash": "9a841ef856a5de813dbe440b102b9bff3ca1831630292cff7323c557704f386b",
       "url": "https://s3.private.us-south.cloud-object-storage.appdomain.cloud/test/assets/9a841ef856a5de813dbe440b102b9bff3ca1831630292cff7323c557704f386b/index.json",
       "label": "unit-test"
     }
   ],
   "assets": [
     {
       "hash": "7d930918fbb8be80f3a5100f0313c5b2518eba22cc915194cf971d4daf5170be",
       "uri": <git-uri-to-asset>,
       "url": "https://s3.us-south.cloud-object-storage.appdomain.cloud/cocoa-development/assets/7d930918fbb8be80f3a5100f0313c5b2518eba22cc915194cf971d4daf5170be/index.json"
     }
   ]
}

Zusammenfassung der Angaben für Kakao-Spind < Asset-ID>

Gibt die Zusammenfassung der Angaben für ein oder mehrere Assets zurück. Wenn in der Befehlszeile keine Assets angegeben werden, werden Assets aus stdin gelesen.

Optionale Flags:

  • --latest-only: Verwirft Angaben, wenn neuere Angaben für ein Asset verfügbar sind (true ist standardmäßig auf false gesetzt, um dieses Verhalten zu inaktivieren).
  • --scope: Es werden nur Angaben mit dem angegebenen Geltungsbereich berücksichtigt (siehe evidence add --scope), die mehrfach angegeben werden können
  • --linked-scope: Berücksichtigt Beweise, die den angegebenen verknüpften Bereich als Bereich haben. Darüber hinaus werden sie der Eigenschaft „Verknüpfte Bereiche“ in der zurückgegebenen Beweiszusammenfassung hinzugefügt. Kann mehrfach angegeben werden.
  • --check-immutable-storage: Prüft, ob alle Angaben auch in einem Cloud Object Storage-Bucket vorhanden und durch einen Aufbewahrungszeitraum von mindestens 365 Tagen geschützt sind Hängt com.ibm.immutable_storage-Angaben an die Zusammenfassung an.
    • Informationen zum Konfigurieren des Buckets Cloud Object Storage finden Sie unter cocoa locker.
  • --dry-run: Hat in Kombination mit --check-immutable-storage eine Wirkung. Bei Verwendung werden com.ibm.immutable_storage-Angaben nur an die Zusammenfassung angehängt, aber sie werden nicht in das Angabenfach hochgeladen.
  • --clone-dir: Ein optionaler Parameter, um den Klonpfad des Evidence Repository zu bestimmen, standardmäßig wird das Verzeichnis /tmp geklont
  • --initialized: Optionales Flag, das davon ausgeht, dass die Asservatenkammer bereits an dem angegebenen Ort --clone-dir oder /tmp/ geklont ist.
  • --evidences-path: Um eine Zusammenfassung aus den lokalen Beweisen zu erstellen, die in einem Cache gespeichert sind, wird dieses Feld verwendet, um den Pfad der Datei anzugeben, in der alle Beweise in dem Array vorhanden sind.

Führen Sie den folgenden Befehl aus:

$ cocoa locker evidence summary \
    docker://us.icr.io/foo/bar@sha256:1234567812345678123456781234567812345678123456781234567812345678 \
    docker://us.icr.io/baz/quux@sha256:1234567812345678123456781234567812345678123456781234567812345678 \
    --scope 11a1aa11-1a11-11a1-aa11-a11a1a1111a1 \
    --scope 22a2aa22-2a22-22a2-aa22-a22a2a2222a2 \
    --linked-scope 33a3aa33-3a33-33a3-33a3-a33a3a3333a3 \
    --linked-scope 12bqab22-1a23-1a23-1a23-b22a3a2222a3

Beispiel aus stdin gelesen:

$ cat <<EOF | cocoa locker evidence summary
docker://us.icr.io/foo/bar@sha256:1234567812345678123456781234567812345678123456781234567812345678
docker://us.icr.io/baz/quux@sha256:1234567812345678123456781234567812345678123456781234567812345678
EOF

Kakao locker attachment get < anhang-id >

Ruft einen Anhang ab, der zuvor mit cocoa locker evidence add hochgeladen wurde.

Optionen:

--version          # Show version number

Führen Sie den Befehl zum Hochladen des Anhangs aus:

$ cocoa locker evidence add --evidence-type-id com.ibm.unit_test \
                            --evidence-type-version 1.0 \
                            --details result=success \
                            --attachment path/to/junit.xml::label=unit-test

Beispielausgabe für das Hochladen von Anhängen:

{
   ...
   "attachments": [
    {
      "hash": "9a841ef856a5de813dbe440b102b9bff3ca1831630292cff7323c557704f386b",
      "url": "https://s3.private.us-south.cloud-object-storage.appdomain.cloud/test/assets/9a841ef856a5de813dbe440b102b9bff3ca1831630292cff7323c557704f386b/index.json",
      "label": "unit-test"
    }
   ],
   ...
}

Führen Sie den Befehl aus, um den Anhang abzurufen:

 cocoa locker attachment get 5aa5555aa55aa55a555aa5a5aa555555aaaa5aa5aa5555a55a5aa5aa5a5aaaaa

Kakao Spind Check

Überprüft die erforderliche Konfiguration und Einstellungen des Schließfachs.

Derzeit gilt für das Cloud Object Storage-basierte Schließfach eine Konfigurationsanforderung:

  • Da alle Angaben mindestens ein Jahr aufbewahrt werden müssen, muss das Bucket Cloud Object Storage durch eine Aufbewahrungsrichtlinie geschützt werden. Der Standardaufbewahrungszeitraum muss größer-gleich 365 Tage sein.

Weitere Informationen finden Sie unter Befehle für Kakaoschließfächer.

Erforderliche Umgebungsvariablen:

COS_API_KEY=        # Cloud Object Storage API Key
COS_BUCKET_NAME=    # Bucket Name where the evidence will be uploaded in the COS Instance
COS_ENDPOINT=       # The COS API Endpoint matching the region where the bucket is located

Führen Sie den folgenden Befehl aus:

 cocoa locker check --provider='cos'

Kakao-Spind-Nachweis

Validieren Sie die erforderlichen Angaben auf der Basis der Prüfungen in der Konfigurationsdatei cocoa locker evidence check.

Erforderliche Umgebungsvariablen:

Optionen:

--org              # (Required) Owner of the evidence locker repo, defaults to `EVIDENCE_LOCKER_REPO_OWNER`
--repo             # (Required) Name of the evidence locker repo, defaults to `EVIDENCE_LOCKER_REPO_NAME`
--git-provider     # Git service provider ("github")
--git-token-path   # Git token path to read the secret from
--git-api-url      # Github API URL
--config-path      # (required) use this path to read the config file of all the required evidence check
--summary-path     # (required) use this path to read the summary file of all the evidences
--pre-deployment   # If present, will check only pre deployment checks, defaults to false
--post-deployment  # If present, will check only post deployment checks, defaults to false
--source           # (Applies to config file version 2) If present, is tupple of branch:region information(with region as optional) which will be used to filter the rules against `source_environments` field.
--target           # (Applies to config file version 2) If present, is tupple of branch:region information(with region as optional) which will be used to filter the rules against `target_environments` field.
--pipeline-run-id  # (Applies to config file version 2) If present, is current pipeline_run_id will be used for checking evidences.
--output-config-path # optional path to create a more suitable file based on the current config file

Führen Sie den folgenden Befehl aus:

 cocoa locker evidence check --summary-path `<summary-path>` --config-path `<config-path>` --pre-deployment --post-deployment --source `<source_branch:region>` --target `<target_branch:region>` --pipeline-run-id `<current_pipeline-run-id>`

kakaoschrank Beweise sammeln

Sammeln Sie Beweise und bewahren Sie sie im Schließfach auf. Dieser Befehl ist die zugrunde liegende Implementierung für das Shell-Skript collect-evidence.

Verwendung

cocoa locker evidence collect [OPTIONS]

Erforderliche Parameter

  • --tool-type <string> Kennung des Tools (z. B. "sonarqube", "cra", "owasp-zap", "detect-secrets")

  • --evidence-type <string> Art des Nachweises (z. B. " com.ibm.static_scan ", " com.ibm.unit_tests ", " com.ibm.detect_secrets ")

  • --assets <key:type> Asset-Spezifikationen im Format "Schlüssel:Typ". Kann mehrfach für mehrere Assets angegeben werden. Beispiel: --assets app-repo:repo oder --assets my-image:artifact

  • --status <string> Status der Beweise: success | failure | pending

  • --pipeline-run-id <string> Kennung des Pipelinelaufs

  • --pipeline-namespace <string> Pipeline-Namensraum: pr | ci | cd | cc

  • --incident-org <string> Git organisation für das Repository von Vorfällen

  • --incident-repo <string> Name des Repositorys für Vorfälle

Erforderliche Parameter für die Tekton-Plattform.
  • --pipeline-id <string> Kennung der Rohrleitung

  • --task-name <string> Name der Aufgabe innerhalb der Pipeline

  • --step-name <string> Name des Schritts innerhalb der Aufgabe

Optionale Parameter

  • --attachment <path> Anhangsdateien wie Scan-Ergebnisse (können mehrfach angegeben werden)

  • --attachment-url <url> URLs von vorgeladenen Anhängen (können mehrfach angegeben werden)

  • --meta <key=value> Metadaten Schlüssel=Wert-Paare (können mehrfach angegeben werden)

  • --additional-comment <string> Zusätzlicher Kommentar zur Aufnahme in die Vorfallsausgaben

  • --show-table Zeigen Sie die Details der Beweise in einem Tabellenformat an

  • --dry-run Vorschau ohne Speichern im Schließfach

  • --cache-mode Nur Anhänge hinzufügen, Beweise selbst auslassen

  • --evidence-reuse Funktion zur Wiederverwendung von Beweisen aktivieren

  • --evidence-per-asset Erstellen Sie Nachweise für jedes Asset separat

  • --upload-logs <boolean> Protokolle als Anhänge hochladen, wenn keine anderen Anhänge vorhanden sind (Standard: true)

  • --incident-git-provider <string> Git Anbieter: github | gitlab (Standard: GitHub)

  • --incident-git-token-path <path> Pfad zu Git Token für die Authentifizierung

  • --incident-git-api-url <url> Benutzerdefinierte Git API-Basis URL

  • --incident-labels <string> Kennzeichnungen, die auf Vorfallsprobleme anzuwenden sind (können mehrfach angegeben werden)

  • --incident-assignees <string> GitHub/GitLab benutzernamen, die den Vorfällen zugewiesen werden sollen (kann mehrfach angegeben werden)

  • --comment-on-issues Verknüpfen Sie die hinzugefügten Beweise zu Zwischenfällen

  • --pr-issue-management Verknüpfung und Verwaltung von Pull-Requests mit Ausgaben ermöglichen

  • --opt-in-auto-close Automatische Schließung von Vorfällen nach deren Behebung

  • --custom-exempt-label <string> Etikett mit dem Hinweis auf die Befreiung von den Konformitätsanforderungen

  • --platform <string> Plattform, die zum Abrufen von Protokollen verwendet wird: tekton | github-actions (Standard: tekton)

  • --root-pipeline-run-id <string> Kennung des Stamm-Pipelinelaufs

  • --toolchain-crn <string> Cloud-Ressourcenname (CRN) der Toolchain

  • --deployment-prefix <string> Das Einsatzpräfix

  • --target-environment <string> Zielumgebung (Standard: prod)

  • --target-environment-purpose <string> Zielumgebung Zweck

  • --collect-evidence-in-pr <string> Beweise im PR-Kontext sammeln: none | success | all

  • --pr-html-url <string> URL zum zugehörigen Pull-Request

  • --base-branch <string> Basiszweig für die Pull-Anfrage

  • --branch <string> Verzweigungsname

  • --gh-org <string> GitHub organisation, in der die Pipeline läuft (spezifisch für die Github-Aktionsplattform).

  • --gh-repo <string> GitHub repository, in dem die Pipeline läuft (spezifisch für die Github-Aktionsplattform).

  • --gh-server-url <string> GitHub Aktionen: Server URL ( spezifisch für die Github-Aktionsplattform ).

  • --gh-repository-url <string> GitHub Aktionen: Vollständiges Repository URL (spezifisch für die Github-Aktionsplattform).

  • --gh-run-attempt <string> GitHub Aktionen: Anzahl der Versuche, den Workflow auszuführen (spezifisch für die Github-Aktionsplattform).

  • --run-id <string> Laufkennzeichen

  • --xforce-api-key <string> API-Schlüssel für IBM X-Force Exchange

  • --xforce-password <string> API-Passwort für IBM X-Force Exchange

  • --xforce-url <string> IBM X-Force Exchange API URL

Beispiel

cocoa locker evidence collect \
  --tool-type "sonarqube" \
  --evidence-type "com.ibm.static_scan" \
  --assets "app-repo:repo" \
  --status "success" \
  --attachment ./sonarqube-result.json \
  --pipeline-run-id "abc123" \
  --pipeline-namespace "ci" \
  --incident-org "my-org" \
  --incident-repo "compliance-issues" \
  --meta "environment=staging"

kakao Schließfach Beweis Wiederverwendung

Finden und Wiederverwenden vorhandener Nachweise für das gegebene Asset. Dieser Befehl ist die zugrunde liegende Implementierung für das Shell-Skript check-evidence-for-reuse.

Verwendung

cocoa locker evidence reuse [OPTIONS]

Erforderliche Parameter

  • --tool-type <string> Kennung des Werkzeugs (z. B. "sonarqube", "cra", "owasp-zap")

  • --evidence-type <string> Art des Nachweises (z. B. " com.ibm.static_scan ", " com.ibm.unit_tests ")

  • --assets <key:type> Asset-Spezifikationen im Format "Schlüssel:Typ"

  • --pipeline-run-id <string> Kennung des Pipelinelaufs

  • --pipeline-namespace <string> Pipeline-Namensraum: pr | ci

  • --incident-org <string> Git organisation für das Repository von Vorfällen

  • --incident-repo <string> Name des Repositorys für Vorfälle

Erforderliche Parameter für die Tekton-Plattform.
  • --task-name <string> Name der Aufgabe innerhalb der Pipeline

  • --step-name <string> Name des Schritts innerhalb der Aufgabe\

  • --pipeline-id <string> Kennung der Rohrleitung

Optionale Parameter

  • --meta <key=value> Metadaten für die Validierung der gefundenen Nachweise zur Wiederverwendung (kann mehrfach angegeben werden)

  • --evidence-validity-period <number> Gültigkeitsdauer in Stunden (Standard: 24, max: 720 Stunden / 30 Tage)

  • --evidence-reuse-for-failure Wiederverwendung von fehlgeschlagenen Nachweisen aktivieren (Standard: false)

  • --dry-run Vorschaumodus ohne tatsächliche Wiederverwendung von Beweismitteln

  • --show-table Zeigen Sie die Details der Beweise in einem Tabellenformat an

  • --format <string> Ausgabeformat: json (Standard: json)

  • --incident-git-provider <string> Git Anbieter: github | gitlab (Standard: GitHub)

  • --incident-git-token-path <path> Pfad zu Git Token für die Authentifizierung

  • --incident-git-api-url <url> Benutzerdefinierte Git API-Basis URL

  • --incident-assignees <string> GitHub/GitLab benutzernamen, die den Vorfällen zugewiesen werden sollen (kann mehrfach angegeben werden)

  • --custom-exempt-label <string> Etikett mit dem Hinweis auf die Befreiung von den Konformitätsanforderungen

  • --deployment-prefix <string> Das Einsatzpräfix

  • --root-pipeline-run-id <string> Kennung des Stamm-Pipelinelaufs

  • --toolchain-crn <string> Cloud-Ressourcenname (CRN) der Toolchain

  • --platform <string> Plattform, die zum Abrufen von Protokollen verwendet wird: tekton | github-actions (Standard: tekton)

  • --gh-org <string> GitHub organisation, in der die Pipeline läuft (spezifisch für die Github-Aktionsplattform)

  • --gh-repo <string> GitHub repository, in dem die Pipeline läuft (spezifisch für die Github-Aktionsplattform)

  • --run-id <string> Laufkennzeichen

  • --environment <string> Umgebung (Standard: dev)

  • --serviceEnvironment <string> Dienstumgebung (Standard: dev)

Beispiel

Grundlegende Verwendung:

cocoa locker evidence reuse \
  --tool-type "sonarqube" \
  --evidence-type "com.ibm.static_scan" \
  --assets "app-repo:repo" \
  --pipeline-run-id "abc123" \
  --pipeline-namespace "ci" \
  --incident-org "my-org" \
  --incident-repo "compliance-issues" \
  --format "json"

Mit benutzerdefinierter Gültigkeitsdauer und Metadatenvalidierung:

cocoa locker evidence reuse \
  --tool-type "cra" \
  --evidence-type "com.ibm.code_vulnerability_scan" \
  --assets "app-repo:repo" \
  --pipeline-run-id "xyz789" \
  --pipeline-namespace "ci" \
  --incident-org "my-org" \
  --incident-repo "compliance-issues" \
  --evidence-validity-period 48 \
  --meta "tool-version=1.2.3" \
  --meta "base-image=ubuntu:22.04" \
  --format "json"

Wiederverwendung fehlgeschlagener Beweise:

cocoa locker evidence reuse \
  --tool-type "owasp-zap" \
  --evidence-type "com.ibm.dynamic_scan" \
  --assets "my-app:artifact" \
  --pipeline-run-id "xxx-001" \
  --pipeline-namespace "cd" \
  --incident-org "my-org" \
  --incident-repo "compliance-issues" \
  --evidence-reuse-for-failure \
  --format "json"

Exit-Code

  • 0: Beweise gefunden und erfolgreich wiederverwendet
  • 1: Keine wiederverwendbaren Beweise gefunden oder Validierung fehlgeschlagen

Befehle für Kakao Tekton

cocoa tekton get-pipeline-logs

Erstellt Protokolldateien für jeden Schritt einer Pipelineausführung und speichert diese in einem Verzeichnis. Verwenden Sie entweder die Umgebungsvariablen (PIPELINE_ID, PIPELINE_RUN_ID) oder überschreiben Sie sie mit expliziten Flags (--pipeline-id, --pipeline-run-id). Protokolldateien können auf Task-und Schrittebene durch Angabe der Flags --task-name und --step-name abgerufen werden.

Wenn --task-name angegeben wird, versucht der Befehl, die Protokolldateien für jeden Schritt für den angegebenen Tasknamen zu extrahieren und zu erstellen.

Wenn --step-name zusammen mit --task-name angegeben wird, erstellt der Befehl die Protokolldatei für den jeweiligen Schritt für den angegebenen task-name. --step-name ohne --task-name ist eine ungültige Befehlssignatur.

Optionen:

-o --output-dir       # (Required) Specifies the directory where the logs will be saved
   --pipeline-id      # ID of the pipeline
   --pipeline-run-id  # ID of the pipeline run
-u --use-task-ref     # (Optional) Can be used to override the default name of the pipeline task to the taskRef, when creating the directory
   --task-name       # (Optional) use task-name to fetch the logs for --task-name
   --step-name       # (Optional) use step-name in conjunction with task-name to fetch the log for --step-name

Erforderliche Umgebungsvariablen:

IBMCLOUD_API_KEY= # IBM Cloud API Token
TOOLCHAIN_REGION= # Region of the toolchain
PIPELINE_ID=      # Can be used instead of '--pipeline-id option
PIPELINE_RUN_ID=  # Can be used instead of '--pipeline-run-id option

Führen Sie den folgenden Befehl aus:

$ cocoa tekton get-pipeline-logs \
   --output-dir=<output-dir> \
   --pipeline-id=<pipeline-id> \
   --pipeline-run-id=<pipeline-run-id> \
   --use-task-ref

Kakao-Kommentarbefehle

Kakao Kommentar hinzufügen

Fügt einen Kommentar zu einem Problem oder einer Pull-Anforderung in GitHubhinzu

Optionen:

--content           # (Required) The content to be added as comment to issue or pr
--id                # (Required) The issue number or pull request number
--type              # (Optional) The type (issue or pr), default is issue
--org               # The git repo org
--repo              # The git repo name
--git-provider      # (Optional) Git service provider [github]
--git-token-path    # (Optional) Github Token's path
--git-api-url       # (Optional) Github API URL

Erforderliche Umgebungsvariablen:

GHE_ORG=                    # Can be used instead of --org (either the option or the variable is required)
GHE_REPO=                   # Can be used instead of --repo (either the option or the variable is required)

Erforderliche Umgebungsvariablen, wenn Sie verwendenGitHub:

GHE_TOKEN=    # Github Enterprise API Token (Optional if you are using --git-token-path)

Wenn Sie github verwenden, verwenden Sie das Feld --git-token-path, um Ihr GitHub festzulegen, und verwenden Sie das Feld --git-api-url, um die GitHub Enterprise API URL anstelle der Umgebungsvariablen GHE_TOKEN und GH_URL festzulegen. Wenn sowohl Umgebungseigenschaften als auch Befehlszeilenparameter angegeben werden, haben --git-token-path und --git-api-url Vorrang.

Führen Sie den folgenden Befehl aus:

$ cocoa comment add --id 1 \
                    --content "This is a test comment" \
                    --type pr \
                    --git-provider github \
                    --org <github-organization> \
	  				--repo <github-repo-name>

kakao-Etiketten-Befehle

kakao-Etikett hinzufügen

Fügt eine oder mehrere Kennzeichnungen zu Pull-Anfragen in GitHub oder GitLab hinzu.

Optionen:

--label           	# (Required) The label to be added to the pull request. This command be specified multiple times.
--id       	        # (Required) The pull request number. Can be specified multiple times.
--type             	# (Optional)The type of the item (issue or PR). The default type is PR.
--org               # The Git repository organization.
--repo              # The Git repository name.
--git-provider     	# (Optional) The Git service provider. The default git provider is Github.
--git-token-path    # (Optional) The path to the Git token.
--git-api-url       # (Optional) The URL of the Git API.

Erforderliche Umgebungsvariablen:

GHE_ORG=                    # The Git repository organization. Can be used instead of the --org option. Either the option or the variable is required.
GHE_REPO=                   # The Git repository name. Can be used instead of the --repo option. Either the option or the variable is required.

Erforderliche Umgebungsvariablen für GitHub:

GHE_TOKEN=    # Github Enterprise API Token (Optional if you are using --git-token-path)

Wenn Sie GitHub, verwenden, ist die folgende Umgebungsvariable erforderlich:

Erforderliche Umgebungsvariablen für GitHub
Variable Beschreibung
GHE_TOKEN Das GitHub Enterprise API Token. Optional, wenn Sie die Option --git-token-path verwenden.

Kommandozeilen-Optionen:

Alternativ können Sie auch die folgenden Befehlszeilenoptionen zur Authentifizierung verwenden:

Befehlszeilenoptionen für GitHub
Kommandozeilen-Optionen Beschreibung
--git-token-path Legen Sie Ihr „ GitHub “-Token fest.
--git-api-url Legen Sie die GitHub Enterprise API URL fest.

Wenn sowohl Umgebungseigenschaften als auch Befehlszeilenparameter angegeben werden, haben die Optionen --git-token-pat h und --git-api-url Vorrang.

Beispiel: Hinzufügen eines Labels zu einer Pull-Anfrage

Sie können einer Pull-Anfrage ein Label hinzufügen, indem Sie den folgenden Befehl ausführen:

$ cocoa label add --id 1 \
                  --label "deployed" \
                  --type pr \
                  --git-provider github \
                  --org <github-organization> \
                  --repo <github-repo-name>