IBM Cloud Docs
CLI de DevSecOps

CLI de DevSecOps

DevSecOps CLI adopta soluciones de cumplimiento bajoIBM Cloud®DevSecOps Implementación de referencia; por ejemplo, las tuberías de referencia desplazadas hacia la izquierda. Para obtener más información sobre la arquitectura de conformidad de Shift-Left, consulte DevSecOps con Continuous Delivery.

Interfaz de la CLI

La CLI utiliza una estructura de varias partes en la línea de mandatos que debe especificar en el orden siguiente:

cocoa <command> <subcommand> [options]
  1. La llamada base a la CLI.

  2. El comando principal, que suele corresponder a un servicio o un módulo utilizado por la arquitectura shift-left; por ejemplo, solicitud de cambio, inventario o tekton.

  3. El submandato que especifica qué acción se va a realizar.

  4. Opciones de la CLI necesarias para la acción. Con la condición de que sigan los pasos 1-3, puede especificar las opciones de CLI en cualquier orden.

Algunos comandos utilizan variables de entorno para obtener claves de API o para configurar un valor de opción que no se proporcionó en la línea de comandos. Es necesario exportar estas variables antes de ejecutar el comando.

Las opciones de la línea de comandos pueden tomar varios tipos de valores de entrada, como números, cadenas, valores booleanos, matrices y objetos JSON. El tipo de opciones depende del comando que especifiques. Utilice cocoa <command> <subcommand> --help para ver los tipos de opciones.

Reintento de llamadas de API fallidas

La CLI de Cacao reintenta cualquier llamada de API que falle con un estado de respuesta de 5xx tres veces. Puede alterar temporalmente este comportamiento proporcionando las siguientes variables de entorno:

  • MAX_RETRY_ATTEMPTS-El número de reintentos que realiza la CLI de Cocoa antes de que se rinda. Por ejemplo, MAX_RETRY_ATTEMPTS=5
  • RETRY_STATUS_CODE-Los códigos de estado de respuesta para los que se produce el reintento. Por ejemplo, RETRY_STATUS_CODE=409,422,500 para reintentar estos tres códigos de estado.
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.

Los reintentos se espacian exponencialmente en el tiempo, por lo que la configuración de reintentos más altos hace que los reintentos se espacien más.

Tiempo transcurrido para la ejecución de mandatos

La CLI de cacao puede mostrar el tiempo transcurrido de cualquier mandato en segundos estableciendo DISPLAY_ELAPSED_TIME en una serie no vacía como se indica a continuación:

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

mandatos de CLI

A pesar deServiceNow está documentado, no es compatible de forma predeterminadaIBM CloudDevSecOps Implementación de referencia. Sin embargo, si desea aprender a utilizarServiceNow con elDevSecOps implementación de referencia, obtenga ayuda deIBM Cloud equipos de desarrollo uniéndose a nosotros en Flojo.

mandatos de solicitud de extracción de cacao

cocoa check pull-request-approval

Comprueba el estado de aprobación de una Pull Request en un hash de confirmación. Si el Pull Request no fue aprobado, crea una nueva incidencia en el repositorio especificado. El mandato puede identificar las solicitudes de extracción de emergencia marcadas con una etiqueta, en este caso tiene un código de salida de 0.

Variables de entorno de compilación:

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

Opciones:

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

Si estas usandoGitHub, puedes usar --git-token-path campo para configurar suGitHub ficha y --git-api-url campo para establecer el #GitHub Enterprise URL de API en lugar de GHE_TOKEN y GH_URL Variables de entorno. Si se proporcionan ambos, --git-token-path y --git-api-url tienen prioridad.

Ejecución del mandato:

cocoa check pull-request-approval

Estado de la solicitud de extracción de comprobación de Cocoa

Comprueba el estado de una solicitud de extracción y los valores de los repositorios.

  • Protección de ramas: reglas para imponer envíos, evitar que se supriman las ramas y, opcionalmente, requerir comprobaciones de estado antes de la fusión.
  • Commit Status Check: Servicios externos para marcar commits con un estado error, failure, pending, o success, que luego se refleja en pull requests que involucran esos commits.
  • Ejecuciones de comprobación: apps que realizan servicios de integración continua, análisis de código por Lint o escaneo de código y que proporcionan comentarios detallados sobre las confirmaciones.

Variables de entorno de compilación:

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

Si estas usandoGitHub, puedes usar --git-token-path campo para configurar suGitHub ficha y --git-api-url campo para establecer el #GitHub Enterprise URL de API en lugar de GHE_TOKEN y GH_URL Variables de entorno. Si se proporcionan los pares GHE_TOKEN GH_URL y --git-token-path --git-api-url, --git-token-path y --git-api-url tienen prioridad.

REQUIRED_CHECKS Ejemplo:

  [
    {
      "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"
      }
    }
  ]

Ejecución del mandato:

 cocoa check pull-request-status

mandatos de solicitud de cambio de cacao

Los mandatos cocoa change-request dan soporte a los siguientes proveedores de gestión de cambios:

  • ServiceNow V1
  • ServiceNow V3

Puede especificar el proveedor utilizando la opción --provider con los valores siguientes: servicenow (valor predeterminado) o servicenow-v3.

Cada proveedor requiere una configuración de variable de entorno diferente:

  • servicenow:
    • SERVICENOW_TOKEN-Señal de API de ServiceNow V1
    • SERVICENOW_URL-URL de API de ServiceNow V1
  • servicenow-v3:
    • PNP_IBMCLOUD_API_KEY-La clave de API para acceder a los puntos finales de ServiceNow v3, si no se proporciona, vuelve a IAM_ACCESS_TOKEN
    • IAM_ACCESS_TOKEN-Señal OAuth de IBMCloud IAM
    • SERVICENOW_URL-URL de API de ServiceNow V3
  • github-enterprise:
    • GHE_TOKEN-Señal de GitHub Enterprise
    • GITHUB_CHANGE_MANAGEMENT_REPO-Repositorio de gestión de cambios de GitHub
    • GITHUB_CHANGE_MANAGEMENT_ORG-Organización de gestión de cambios de GitHub

cocoa change-request get

Consulta una solicitud de cambio de la API ServiceNow y la guarda en un archivo o la imprime en la consola.

Variables de entorno necesarias para ServiceNow v1 o v2:

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

Variables de entorno necesarias para ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales para 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

Variables de entorno necesarias para 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)

Variables de entorno necesarias para 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)

Opciones:

--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')

Ejecución del mandato:

# 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

Crea una solicitud de cambio y la envía a la API de ServiceNow.

Dos métodos de uso:

  • Proporcione todos los campos de CR necesarios a partir de las opciones de la CLI.

Opciones:

--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.]+)
  • Proporcione un nombre de archivo desde el que se van a analizar los datos de la solicitud de cambio. Se espera el formato JSON.

Opciones:

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

Archivo de ejemplo:

{
  "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",
}

Variables de entorno necesarias para ServiceNow v1 o v2:

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

Variables de entorno necesarias para ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales para 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

Variables de entorno necesarias para 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)

Ejecución del mandato:

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

O

$ 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> \

cocoa change-request change-state-to-implement

Cambia el estado de una solicitud de cambio a implement a través de la API ServiceNow.

Opciones:

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

Variables de entorno necesarias independientemente del proveedor:

CHANGE_REQUEST_ID=  # ID of the Change Request

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

 cocoa change-request change-state-to-implement

cocoa change-request close

Cierra una solicitud de cambio a través de la API ServiceNow. Puede adjuntar "notas de cierre" utilizando la opción --close-notes y especificar la "categoría de cierre" utilizando la opción --close-category.

Opciones:

--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')

Variables de entorno necesarias independientemente del proveedor:

CHANGE_REQUEST_ID=  # ID of the Change Request

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

 cocoa change-request close

cocoa change-request check-approval

Consulta el estado de aprobación de una solicitud de modificación. Si la solicitud de cambio es una emergencia, el comando no falla, pero solicita una aprobación retroactiva.

Opciones:

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

Variables de entorno necesarias independientemente del proveedor:

CHANGE_REQUEST_ID=  # ID of the Change Request

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

 cocoa change-request check-approval

cocoa change-request prepare

Crea los datos de la solicitud de cambio y los imprime en la consola o en un archivo.

Variables de entorno de compilación:

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)

Los campos siguientes se pueden analizar a partir del cuerpo de la solicitud de extracción:

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

En caso de que se proporcionen utilizando la opción CLI, la opción CLI anula el valor que se encuentra en el pull request. Si se proporcionan todos, pr no se analiza, --org, --repo, y GHE_TOKEN no es necesario.

Opciones:

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

Ejecución del mandato:

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

cocoa change-request request-approval

Solicita la aprobación de registros en el nuevo estado con aprobación no solicitada. Cuando se ejecuta, el registro sigue la ruta de aprobación manual.

Opciones:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

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

cocoa change-request task add

Este mandato está en desuso y se eliminará en 2.0.0. Utilice cocoa change-request attachment add en su lugar.

Añade una tarea de cambio a una solicitud de cambio específica.

Opciones:

--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', 'servicenow-v3', default: 'servicenow')

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

$ cocoa change-request task add "CHGXXXXXXX" \
        --name='<task-name>' \
        --data='<data-for-the-task>'

$ cat data.txt | cocoa change-request task add "CHGXXXXXXX" --name='<task-name>'

$ cocoa change-request task add "CHGXXXXXXX" \
        --name='<task-name>' \
        --data='@<path/to/file>'

cocoa change-request task get

Este mandato está en desuso y se eliminará en 2.0.0. Utilice cocoa change-request attachment get en su lugar.

Obtiene una tarea de cambio específica de una solicitud de cambio.

Opciones:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

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

cocoa change-request task list

Este mandato está en desuso y se eliminará en 2.0.0. Utilice cocoa change-request attachment list en su lugar.

Lista las tareas de modificación de una solicitud de modificación.

Opciones:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

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

cocoa change-request task update

Este mandato está en desuso y se eliminará en 2.0.0. Utilice cocoa change-request attachment update en su lugar.

Actualiza una tarea de cambio en una solicitud de cambio específica.

Opciones:

--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')

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

$ cocoa change-request task update
        --change-request-id='CHGXXXXXXX' \
        --change-task-id='CTASKXXXXXXX' \
        --data='<data-for-the-task>' \
        --description='<description>'

$ cat data.txt | cocoa change-request task update --change-request-id='CHGXXXXXXX' --change-task-id='CTASKXXXXXXX' --data='@/dev/stdin'

$ cocoa change-request task update --change-request-id='CHGXXXXXXX' --change-task-id='CTASKXXXXXXX' --data='@<path/to/file>'

adición de archivo adjunto de solicitud de cambio de cacao

Añade un anexo de modificación a una solicitud de modificación específica.

Opciones:

--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')

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

$ 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>'

cambio de cacao-obtener archivo adjunto de solicitud

Obtiene un anexo de cambio específico de una solicitud de cambio.

Opciones:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

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

lista de archivos adjuntos de solicitud de cambio de cacao

Lista los anexos de modificación de una solicitud de modificación.

Opciones:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

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

actualización de archivo adjunto de solicitud de cambio de cacao

Actualiza un anexo de modificación en una solicitud de modificación específica.

Opciones:

--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')

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v1 o v2:

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

Variables de entorno necesarias, si utiliza el proveedor ServiceNow v3:

SERVICENOW_URL=       # ServiceNow API URL

Variables de entorno adicionales, si utiliza el proveedor 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

Variables de entorno necesarias para el proveedor 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)

Ejecución del mandato:

$ 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>'

mandatos de pruebas de cacao

cocoa evidence create

Crea pruebas a partir de las opciones especificadas y las guarda en un archivo o las imprime en la consola.

Ejecución del mandato:

$ cocoa evidence create \
  --namespace=[choices: "ci", "cd"] \               # Pipeline type the evidence was collected from
  --evidence-name=<evidence-name> \                 # It will be used to name evidence-file in git
  --evidence-type=<evidence-type> \                 # e.g: com.ibm.unit_test
  --evidence-type-version=<evidence-type-version> \
  --result=[choices: "failure", "success"] \        # The result of the scan/test
  --issue=<issue-url> \                             # e.g: --issue=foo --issue=bar || --issue=foo
  --artifact=<artifact_url> <artifact_hash>\        # Url and hash pair(s) to the test artifact(s)
  --log=<log_url> <log_hash> \                      # Url and hash pair(s) to the log(s)
  --pipeline-id=<pipeline-id> \
  --pipeline-run-id=<pipeline-run-id> \
  --pipeline-run-url=<pipeline-run-url> \
  --toolchain-crn=<toolchain-crn> \                 # Name of the toolchain cloud resource
  --output=<filename>                                # If present, the evidence will be saved to the given file.

Las opciones de la CLI también se pueden establecer desde variables de entorno, excepto issue, log y artifact. Se deben proporcionar varios problemas o artefactos con varios distintivos de problema o artefacto. Por ejemplo:

 cocoa evidence create --artifact <url> <hash>  --artifact <url> <hash> --issue <issue-url> --issue <issue-url>

artifact consiste en una URL que apunta al archivo del artefacto y un hash, deben ser proporcionados de la misma manera que en el ejemplo anterior.

cocoa evidence format-summary

Formatea el resumen de pruebas en un formato legible por el usuario. Se puede alimentar en el contenido de la solicitud de cambio.

Ejecución del mandato:

$ 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

markdown de pruebas de cacao-resumen

Formatea el resumen de pruebas en un formato de rebaja que se puede alimentar como un comentario de solicitud de extracción de GitHub.

La entrada es un resumen en bruto y puede estar en uno de estos dos formatos:

  • Resumen en formato JSON (salida del mandato cocoa evidence summarize ).
  • Resumen agregado, que es una matriz JSON de resúmenes de aplicaciones individuales.

Cuando se pasa un resumen agregado como entrada, la salida agrupa el estado de las pruebas basándose en las aplicaciones de los resúmenes.

Distintivo opcional:

  • --detailed: se genera un resumen detallado de la rebaja si el distintivo se establece en true (true de forma predeterminada, se establece en false para un resumen recortado).

Ejecución del mandato:

$ 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

cocoa evidence upload

Sube pruebas a los backends especificados. Los programas de fondo pueden ser diferentes tipos de archivos de pruebas, por ejemplo Object Storage, GitHub o DevOps Insights. Los diferentes archivos requieren que se provean diferentes parámetros.

DevOps Insights aún no recibe soporte.

Opciones necesarias:

--backend

Variables de entorno de compilación:

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

Variables de entorno requeridas, si está utilizandoGitHub:

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

Variables de entorno necesarias, si utiliza 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 evidence 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)

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan ambos, --git-token-path y --git-api-url tienen prioridad.

Ejecución del mandato:

$ cocoa evidence upload

$ cocoa evidence upload \
  --backend=[choices: "git", "insights", "cos"] \   # e.g. --backend=cos,git,insights
  --namespace=[choices: "ci", "cd"] \               # Pipeline type the evidence was collected from
  --evidence-name=<evidence-name> \                 # It will be used to name evidence-file in git
  --evidence-type=<evidence-type> \                 # e.g: com.ibm.unit_test
  --evidence-type-version=<evidence-type-version> \
  --result=[choices: "failure", "success"] \        # The result of the scan/test
  --issue=<issue-url> \                             # e.g: --issue=foo --issue=bar || --issue=foo
  --artifact=<artifact_url> <artifact_hash>\        # Url and hash pair(s) to the test artifact(s)
  --log=<log_url> <log_hash> \                      # Url and hash pair(s) to the log(s)
  --pipeline-id=<pipeline-id> \
  --pipeline-run-id=<pipeline-run-id> \
  --pipeline-run-url=<pipeline-run-url> \
  --toolchain-crn=<toolchain-crn>                   # Name of the toolchain cloud resource

Las opciones de la CLI también pueden establecerse desde variables de entorno excepto para backend, issue, log, y artifact. Se deben proporcionar varios problemas o artefactos con varios distintivos de problema o artefacto. Por ejemplo:

 cocoa evidence upload --backend=git --artifact <url> <hash>  --artifact <url> <hash> --issue <issue-url> --issue <issue-url> --git-provider='github'

artifact consta de un URL que apunta al archivo de artefacto y un hash, y proporciona estos elementos de la misma forma que en el ejemplo anterior.

cocoa evidence summarize

Consulta las pruebas del Depósito de Pruebas y genera un Resumen de Pruebas a partir de su contenido. Los backends pueden ser de diferentes tipos de armario de pruebas, como Object Storage o GitHub. Actualmente, git y cos son compatibles como backend. Los diferentes archivos requieren que se provean diferentes parámetros.

Variables de entorno necesarias para git:

EVIDENCE_REPO_ORG=  # Use this environment varibale to provide the owner organisation of the evidence repository (Required if you are using 'git' backend)
EVIDENCE_REPO_NAME= # Use this environment varibale to provide the name of the evidence repository (Required if you are using 'git' backend)
PIPELINE_RUN_ID=    # Can be used instead of '--pipeline-run-id' option
TOOLCHAIN_CRN=      # Can be used instead of '--toolchain-crn' option

Variables de entorno requeridas, si está utilizandoGitHub:

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

Opciones para git:

--backend           # (Required) Specifies the type of locker from where the evidences are queried
--repo              # Evidence Repositories name (can be substituted by EVIDENCE_REPO_NAME environment variable)
--org               # Evidence Repositories owner organisation (can be substituted by EVIDENCE_REPO_ORG environment variable)
--pipeline-run-id   # (Required)
--toolchain-crn     # (Required)
--prefix-list       # (Required) a list of paths separated by comma where evidences can be found in the repository
--output            # (Optional) file name to write the evidence summary into
--git-token-path    # (Optional) Github Token's path
--git-api-url       # (Optional) Github API url

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan los pares GHE_TOKEN GH_URL y --git-token-path --git-api-url, --git-token-path y --git-api-url tienen prioridad.

De forma predeterminada, la CLI en cada invocación garantiza que trabaja con una versión actualizada de un bloqueador de Git. Este comportamiento se puede inhabilitar estableciendo COCOA_USE_CACHE en cualquier valor excepto 0, false, no o n. En este caso, la CLI utiliza su memoria caché interna para buscar pruebas (mucho más rápido), pero los resultados pueden estar obsoletos.

Variables de entorno necesarias, si utiliza Cloud Object Storage:

COS_API_KEY=      # COS api token
COS_BUCKET_NAME=  # COS bucket name where evidences are stored
COS_ENDPOINT=     # COS endpoint where the bucket is available
PIPELINE_RUN_ID=  # Can be used instead of '--pipeline-run-id' option
TOOLCHAIN_CRN=    # Can be used instead of '--toolchain-crn' option

Opciones para cos:

--backend         # (Required) Specifies the type of locker from where the evidences are queried
--pipeline-run-id # (Required)
--toolchain-crn   # (Required)
--prefix-list     # (Required) a list of paths separated by comma where evidences can be found in the repository
--output          # (Optional) file name to write the evidence summary into

Ejecución del mandato:

# Save the evidence summary to 'summary.json' file.
$ cocoa evidence summarize \
  --backend='git' \
  --pipeline-run-id='id-123-123' \
  --toolchain-crn='crn-123-123' \
  --prefix-list='raw/ci/pipeline-run-id-1,raw/ci/pipeline-run-id-2' \
  --output='summary.json'

# Print the evidence summary to the console
$ cocoa evidence summarize \
  --backend='git' \
  --pipeline-run-id='id-123-123' \
  --toolchain-crn='crn-123-123' \
  --prefix-list='raw/ci/pipeline-run-id-1,raw/ci/pipeline-run-id-2'

mandatos de artefacto de cacao

cocoa artifact upload

Carga una evidencia en los programas de fondo especificados. Los programas de fondo pueden ser diferentes tipos de archivos de pruebas, por ejemplo Object Storage, GitHub o DevOps Insights. Los diferentes archivos requieren que se provean diferentes parámetros.

Opciones:

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

Opciones para git:

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

Variables de entorno de compilación:

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

Variables de entorno necesarias, si utiliza el proveedor 'git':

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)

Variables de entorno requeridas, si está utilizandoGitHub:

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

Variables de entorno necesarias, si utiliza 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)

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan los pares GHE_TOKEN GH_URL y --git-token-path --git-api-url, --git-token-path y --git-api-url tienen prioridad.

Ejecución del mandato:

$ 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>

Las opciones de la CLI también se pueden establecer desde variables de entorno, excepto backend y upload-path.

cocoa set-status

Establece el estado de una confirmación. La implementación actual se prueba en GitHub. Consulte la documentación sobre los estados deGitHub.

Variables de entorno de compilación:

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

Variables de entorno requeridas, si está utilizandoGitHub:

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

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan los pares GHE_TOKEN GH_URL y --git-token-path --git-api-url, --git-token-path y --git-api-url tienen prioridad.

Opciones para git:

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

Ejecución del mandato:

$ 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."

mandatos de inventario de cacao

cocoa inventory add

Añade un valor al repositorio de inventario. Crea un archivo con la opción name, si no existe de lo contrario lo sobrescribe.

Variables de entorno de compilación:

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

Variables de entorno requeridas, si está utilizandoGitHub:

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

Opciones para git:

--git-token-path    #(Optional) Github Token's path
--git-api-url           #(Optional) Github API url
Tabla 1. Opciones para Git
Opción Descripción Tipo de valor Valor necesario o predeterminado
artefacto Nombre de artefacto. Serie Obligatorio
versión La versión de la aplicación. Serie Obligatorio
url-repositorio El repositorio de la aplicación. Serie Obligatorio
PIPELINE-RUN-ID El ID de la ejecución del conducto. Serie Obligatorio
confirmar-sha La confirmación del repositorio de aplicaciones desde el que se crea el artefacto Serie Obligatorio
nombre El nombre de la aplicación a la que pertenece el artefacto Serie Obligatorio
número-compilación El número de la construcción. number Obligatorio
org La organización GitHub que es propietaria del repositorio de inventario. Serie
repo El nombre del repositorio de inventario. Serie
artefactos de aplicación Contenido de aplicación arbitrario en formato JSON Serie
tipo Tipo del artefacto Serie Obligatorio
sha256 El hash sha256 del artefacto Serie Obligatorio
Origen URL que apunta al artefacto (por ejemplo, imagen creada) Serie Obligatorio
signature La firma del artefacto Serie Obligatorio
entorno El nombre del entorno donde se añade la entrada. Serie "maestro"
proveedor de Git-* El proveedor de servicios de control de versiones de Git. Serie * "github"
vía-acceso-señal-git Vía de acceso de señal Git desde la que leer el secreto Serie
git-api-url URL de API de Git Serie

Ejecución del mandato:

$ cocoa inventory add \
  --artifact=cocoa-script-cli \
  --type=type \
  --sha256=786800e8e48938664fe2397ca14ab8dabd48f34656ef5cfda4143b4519cb714f \
  --signature=123123valid \
  --name=cocoa-cli \
  --repository-url=http://validURL.com \
  --commit-sha=8e86dc4647ce28632103dce46b756c70d339349a \
  --version=v4 \
  --build-number=33 \
  --pipeline-run-id=123123valid \
  --git-token-path=./git-token \
  --org=test \
  --app-artifacts='{"app": "test", "some_value": "value"}' \
  --repo=repository
$ cocoa inventory add \
  --environment=environment \
  --artifact=foo-helm-chart/foo/chart.yaml \
  --repository-url=http://validURL.com \
  --commit-sha=786800e8e48938664fe2397ca14ab8dabd48f34656ef5cfda4143b4519cb714f \
  --build-number=33 \
  --pipeline-run-id=123123valid \
  --version=v4 \
  --name=chart

cocoa inventory get

Obtiene una entrada del repositorio de inventario. El destino puede ser una versión específica o un entorno. Utilice --version o --environment, pero sólo uno. Si falta la opción --property, se imprime todo el contenido de la entrada de inventario.

Variables de entorno requeridas, si está utilizandoGitHub:

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

Opciones para git:

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

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan los pares GHE_TOKEN GH_URL y --git-token-path --git-api-url, --git-token-path y --git-api-url tienen prioridad.

De forma predeterminada, la CLI en cada invocación garantiza que trabaja con una versión actualizada de un bloqueador de Git. Este comportamiento se puede inhabilitar estableciendo COCOA_USE_CACHE en cualquier valor excepto 0, false, no o n. En este caso, la CLI utiliza su memoria caché interna para buscar pruebas (mucho más rápido), pero los resultados pueden estar obsoletos.

Ejecución del mandato:

# 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

Obtiene el hash de la última confirmación de una etiqueta o entorno del repositorio de inventario. Utilice --label o --environment, pero sólo uno.

Variables de entorno requeridas, si está utilizandoGitHub:

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

Opciones para git:

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

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan los pares GHE_TOKEN GH_URL y --git-token-path --git-api-url, --git-token-path y --git-api-url tienen prioridad.

Ejecución del mandato:

# 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

Añade una etiqueta a una entrada de inventario o mueve una etiqueta en el inventario. El destino puede ser la última confirmación en una rama específica o en otra etiqueta.

Opciones:

--org          # The Github organisation which owns the inventory repository.
--repo         # The name of the inventory repository.
--environment  # The inventory branch
--to-label     # Another label in the inventory, that will be looked up/removed

Variables de entorno de compilación:

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

Variables de entorno requeridas, si está utilizandoGitHub:

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

Opciones para git:

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

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan los pares GHE_TOKEN GH_URL y --git-token-path --git-api-url, --git-token-path y --git-api-url tienen prioridad.

Ejecución del mandato:

# 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 `staging_latest` 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"

cocoa inventory promote

Promueve entradas del inventario de un entorno a otro. El entorno de origen puede ser una rama o una etiqueta.

Variables de entorno de compilación:

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

Variables de entorno requeridas, si está utilizandoGitHub:

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

Opciones para git:

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

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan ambos, --git-token-path y --git-api-url tienen prioridad.

Ejecución del mandato:

$ 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'

mandatos de incidencias de cacao

cocoa incident add

Crea o actualiza un problema de incidencias para una tarea anómala en una ejecución de interconexión basada en el hash de confirmación.

Opciones:

--task              # (Required) The name of the failing task
--commit-hash       # (Required) The commit hash which triggered the pipeline run
--pipeline-run-url  # The pipeline run url where the task ran
--org               # The incident issue repo org
--repo              # The incident issue repo name
--assignee          # (Optional) Assignee(s) for the incident issue (github username) e.g: --assigne=jane-doe --assignee=john-smith
--app-repo-url      # The app repo URL
--label             # Label(s) to add to the incident issue (optional) e.g: --label=foo --label=bar
--git-token-path    # (Optional) Github Token's path
--git-api-url       #(Optional) Github API url

Variables de entorno de compilación:

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)
PIPELINE_RUN_URL=           # Can be used instead of --pipeline-run-url (either the option or the variable is required)
APP_REPO_URL=               # Can be used instead of --app-repo-url (either the option or the variable is required)

Variables de entorno requeridas, si está utilizandoGitHub:

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

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan ambos, --git-token-path y --git-api-url tienen prioridad.

Ejecución del mandato:

 cocoa incident add --task=<failing-task-name> --commit-hash=<abc123>

proceso de incidente de cacao

Este mandato procesa los resultados de exploración proporcionados y crea problemas de incidencia en el repositorio proporcionado por vulnerabilidad (no por tarea ejecutada como lo hace cocoa incident add ). Si ya existen problemas para los pares de asunto e incidencia, no crea otros nuevos.

Si se establece --set-grace-period, crea problemas con el periodo de gracia establecido, o actualiza los problemas existentes, para tener el periodo de gracia.

El periodo de gracia se establece en 15 días si está habilitado. Si se establece Exento o Periodo de gracia en un problema de incidencia, la comprobación lista el problema, pero no lo marca como un error.

Las excepciones se configuran en CR VA o puede enviar la incidencia o CVE para una aprobación de exención. Si se aprueba, puede editar el problema de incidencia (valor Excempt: **true**) y enlazar con la solicitud aprobada.

Archivos de resultados de exploración soportados actualmente:

  • Container Registry Exploración de VA (opción --type va)
  • Exploración de vulnerabilidades de CRA (opción --type cra)
  • Xray (opción --type xray)
  • OWASP ZAP (opción --type owasp-zap)
  • OWASP ZAP UI (opción --type owasp-zap-ui)
  • Twistlock (opción --type twistlock)
  • Exploración de revisión de igual (opción --type peer-review)
  • GoLang Security Scan (opción --type gosec)
  • SonarQube Scan (opción --type sonarqube)
  • Mend Scan (opción --type mend)
  • Checkov (opción --type checkov)
  • Exploración de vulnerabilidades de CRA para Terraform (opción --type cra-tf)
  • Terraform Security Scan (opción --type tfsec)
  • Fips Scanner (opción --type fips-scanner)
  • Contraste de Sast (opción --type contrast-sast)
  • Detectar secretos (opción --type detect-secrets)
  • Sysdig (opción --type sysdig)

Para obtener más información sobre Container Registry VA y el formato de los resultados, consulte Vulnerability Advisor para IBM Cloud Container Registry. Para obtener más información sobre el explorador de vulnerabilidades de CRA, consulte la documentación de Configuración de Code Risk Analyzer.

Uso:

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

Opciones:

--type             # (Required) Scan type [cra | va]
--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")

Variables de entorno de compilación:

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)

Variables de entorno requeridas, si está utilizandoGitHub:

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

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan ambos, --git-token-path y --git-api-url tienen prioridad.

Valores de retorno:

  • Si no se encuentra ningún problema, o si todos los problemas encontrados tienen establecido el periodo Exento o Gracia, el mandato sale con estado cero.
  • Si alguno de los problemas encontrados no tiene establecido ningún periodo de gracia o exención, el mandato sale con un estado distinto de cero.
  • Si el formato == list-El mandato lista los URL de emisión de incidencias encontrados o creados de acuerdo con el archivo de resultados y el asunto.
  • Si format == json-El mandato imprime un JSON que contiene una matriz de objetos de resultados (información de problema adicional) para cada uno de los problemas encontrados, creados y cerrados automáticamente de acuerdo con el archivo de resultados y el asunto.
  • Estructura del objeto JSON de resultados correspondiente a un problema:
{
 "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
}

Ejecución del mandato:

$ 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

proceso de incidente de cacao-heredado

Este mandato crea problemas de incidencias en el repositorio proporcionado para escenarios en los que un archivo de exploración no está disponible. Normalmente, estos escenarios serían anomalías relacionadas con la no vulnerabilidad como, por ejemplo, una anomalía de prueba de unidad, una anomalía de protección de ramificación, una anomalía de prueba de aceptación y una anomalía de firma de imagen. Estas fallas serían no vulnerabilidades, sin embargo, serían una desviación de la postura de cumplimiento. Si ya existen problemas para las combinaciones de herramienta de asunto de incidencia, el mandato no crea otros nuevos. De forma predeterminada, la evaluación de gravedad de high se establece en los problemas creados.

Si se establece --set-due-date, el mandato crea problemas o actualiza los problemas existentes con fechas de vencimiento. Las fechas de vencimiento se calculan a partir del periodo de gracia del problema, basándose en la gravedad.

Si se establece el distintivo --close-resolved-issues, el mandato busca problemas abiertos con la misma herramienta, asunto e ID de incidencia que la ejecución actual. Si se encuentran problemas, mientras que --current-status se ha pasado como success, el mandato cierra estos problemas.

Si se establece --read-only, el mandato no crea problemas nuevos ni corrija los existentes. Los resultados se procesan y se recopilan los problemas existentes para los resultados. La salida contiene la lista de URL de problemas que se supone que deben rastrearse en los problemas si la modalidad de sólo lectura no está activada.

Uso:

cocoa incident process-legacy \
  <options>

Opciones:

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

VARIABLES DE ENTORNO:

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)

Si utiliza github, puede utilizar el campo --git-token-path para establecer la señal GitHub y utilizar el campo --git-api-url para establecer el URL de la API GitHub Enterprise (el valor predeterminado es https://github.ibm.com/api/v3) en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan los pares GHE_TOKEN GH_URL y --git-token-path --git-api-url ambos, --git-token-path y --git-api-url tienen prioridad.

Valores de retorno:

  • El mandato lista los URL de emisión de incidencias encontrados o creados si el --current-status se ha pasado como failure. El mandato también cierra los URL de emisión de incidencias que coinciden con la misma combinación de incidente-herramienta-asunto si el --current-status se ha pasado como failure.
  • En la modalidad --read-only, el mandato lista los detalles de las incidencias encontradas si no se encuentra ningún problema para dicha incidencia.
  • Si no se encuentran problemas, o si todos los problemas encontrados tienen establecida una etiqueta exenta, el mandato sale con estado cero.
  • Si alguno de los problemas encontrados no tiene establecida una etiqueta exenta, el mandato sale con un estado distinto de cero.
  • En la modalidad --read-only si se encuentra alguna incidencia nueva que no tenga ningún problema, el mandato sale con un estado distinto de cero.
  • Si format == list-El mandato lista los URL de emisión de incidencias encontrados o creados si el --current-status se ha pasado como failure.
  • Si format == json-El mandato imprime un JSON que contiene una matriz de objetos de resultados (información de problema adicional) para cada uno de los problemas encontrados, creados y cerrados automáticamente de acuerdo con el archivo de resultados y el asunto.
  • Estructura del objeto JSON de resultados correspondiente a un problema:
{
 "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
}

Ejecución del mandato:

$ 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

incidencia de cacao evaluar

Evalúe el estado de los problemas basándose en due_date y exime a la etiqueta y genere los resultados de los problemas.

Uso:

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

Opciones:

--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")

Variables de entorno de compilación:

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)

Variables de entorno requeridas, si está utilizandoGitHub:

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

Si utiliza github, utilice el campo --git-token-path para establecer la señal GitHub y el campo --git-api-url para establecer el URL de la API # GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan ambos, --git-token-path y --git-api-url tienen prioridad.

Valores de retorno:

  • Si todos los problemas encontrados tienen establecido el periodo Exento o Grace, el mandato sale con el estado cero.
  • Si alguno de los problemas encontrados no tiene establecido ningún periodo de gracia o exención, el mandato sale con un estado distinto de cero.
  • Matriz JSON de resultados.
  • Estructura del objeto JSON de resultados correspondiente a un problema.
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
}

Ejecución del mandato:

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

mandatos de bloqueador de cacao

El casillero de pruebas es un repositorio Git en GitHub (Enterprise). El proveedor Git se puede especificar utilizando --git-provider (github de forma predeterminada). Para ambos proveedores, es necesaria la autenticación, para GitHub establezca la variable de entorno GHE_TOKEN o el campo --git-token-path. ParaGitHub, También debe especificar dóndeGitHub se localiza la instancia, utilizando el GH_URL variable de entorno o --git-api-url campo, pero por defecto es https://github.ibm.com.

El nombre del repositorio del bloqueador de pruebas se puede establecer utilizando --org y --repo, o utilizando las variables de entorno EVIDENCE_LOCKER_REPO_OWNER y EVIDENCE_LOCKER_REPO_NAME.

De forma predeterminada, la CLI en cada invocación garantiza que trabaja con una versión actualizada de un bloqueador de Git. Este comportamiento se puede inhabilitar estableciendo COCOA_USE_CACHE en cualquier valor excepto 0, false, no o n. En este caso, la CLI utiliza su memoria caché interna para buscar pruebas (mucho más rápido), pero los resultados pueden estar obsoletos.

Además, puede cargar pruebas y archivos adjuntos en Cloud Object Storagetambién para fines de archivado. Se realiza automáticamente cuando están presentes las variables de entorno siguientes:

  • COS_ENDPOINT: el punto finaldonde se puede acceder al grupo Cloud Object Storage.
  • COS_BUCKET_NAME: El nombre del grupo de Cloud Object Storage.
  • COS_API_KEY: Una IBM Cloudo clave de API de ID de servicioque tiene acceso de escritura al grupo Cloud Object Storage.
  • IBM_AUTH_ENDPOINT: el punto final donde se puede utilizar la clave de API para generar una señal de IAM(el valor predeterminado es https://iam.cloud.ibm.com/identity/token){: external}.

Añadir activo de bloqueador de cacao < URI >

Añade un activo al casillero de pruebas. Si el activo existe, se imprime.

Opciones:

--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`
--type             # Type of the asset ( All types are supported )
--version          # Show version number
--format           # Output format ("id", "json", default: "id")
--git-provider     # Git service provider ("github")
--git-token-path   # Git token path to read the secret from
--git-api-url      # Github API url
--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)

Utilice el distintivo --dry-run si no desea añadir nada al casillero y desea comprobar qué se añadiría al casillero.

El tipo del activo se puede especificar con el distintivo --type.

El parámetro uri puede ser cualquier URIválido, pero algunos formatos se tratan especialmente:

  • En el caso de que el esquema uri sea docker (es decir, empieza por docker://), el mandato presupone el distintivo --type=image
  • En el caso de que el esquema uri sea git, o de que la vía de acceso termine con un sufijo .git, el mandato presupone el distintivo --type=commit

Cuando type es image o commit, el URI debe coincidir con los patrones siguientes:

  • Para commit, el URI debe tener un fragmento, que debe ser un sha de confirmación hexadecimal de 40 caracteres (por ejemplo, https://github.ibm.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee)
  • Para image, el URI debe contener el resumen de imagen (por ejemplo, docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777)

Cuando type es cualquier cosa que no sea image o commit, el distintivo --type debe pasarse explícitamente.

Se pueden añadir más detalles al activo utilizando el distintivo --details, que acepta pares key=value.

Se pueden proporcionar más detalles sobre el origen del activo utilizando el distintivo --origin, que acepta pares key=value.

Algunas variables de entorno se seleccionan automáticamente para añadir detalles sobre el origen de activo:

  • El valor TOOLCHAIN_CRN es el mismo que especificar --origin toolchain_crn=$TOOLCHAIN_CRN
  • El valor PIPELINE_ID es el mismo que especificar --origin pipeline_id=$PIPELINE_ID
  • El valor PIPELINE_RUN_ID es el mismo que especificar --origin pipeline_run_id=$PIPELINE_RUN_ID

El distintivo --date se puede utilizar para alterar temporalmente la fecha de creación del activo (el valor predeterminado es la hora actual), acepta cualquier serie que Date.parse acepte.

Los activos relacionados se pueden añadir utilizando el distintivo --related (para varios activos relacionados, el distintivo se puede especificar varias veces). Los activos se pueden especificar con su ID interno o mediante su URI. Todos los ids de activos relacionados (árbol completo hasta el primer activo) se añadirán al campo parents en el json de activos.

De forma predeterminada, el formato id (el distintivo --format ) imprime el ID interno del activo creado. Con el formato json, se va a imprimir todo el activo, como un objeto JSON.

Ejecución del mandato para añadir una confirmación de Git:

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

Salida de ejemplo:

b5bbbbb55555b5555b555b55b5555bb5b555b5b555bb5b55bbb5555fbbbbb

Ejecución del mandato para añadir una imagen de Docker:

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

Salida de ejemplo:

{
   "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"
   ]
}

Ejecución del mandato para añadir un release:

$ 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

Salida de ejemplo:

36d8852458adf44ab236c99beb69d7070d461d39480bc6b8ef7c771bee93cb49%

cacao locker asset get < URI >

Recupera un activo del bloqueador de pruebas.

Opciones:

--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`
--type             # Type of the asset
--version          # Show version number
--git-provider     # Git service provider ("github")
--git-token-path   # Git token path to read the secret from
--git-api-url      # Github API url
--format           # Output format ("id", "json", default: "id")

Ejecute el mandato:

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

Salida de ejemplo:

{
   "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": "https://github.ibm.com/foo/bar.git",
    "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

Salida de ejemplo:

{
   "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": "https://github.ibm.com/foo/bar.git",
    "tag": "v1.2.3"
   },
   "date": "2021-07-15T14:26:06.301Z",
   "type": "image",
   "related": [],
   "parents": ["b5bbbbb55555b5555b555b55b5555bb5b555b5b555bb5b55bbb5555fbbbbb"]
}
 cocoa locker asset get https://github.ibm.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee --format json

Salida de ejemplo:

{
   "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": "https://github.ibm.com/foo/bar.git",
    "tag": "v1.2.3"
   },
   "date": "2021-07-15T14:26:06.301Z",
   "type": "image",
   "related": [],
   "parents": []
}

Resumen de activos de bloqueador de cacao get < URI >

Recopila el resumen de pruebas para el activo dado del bloqueador de pruebas.

Opciones:

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

Ejecute el mandato:

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

Ejecute el comando para obtener el resumen de evidencia más reciente, excluyendo el del alcance pasado usando --scope :

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

cacao locker asset list < URI >

Lista los activos relacionados del bloqueador de pruebas.

Opciones:

--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`
--type             # Type of the asset
--version          # Show version number
--git-provider     # Git service provider ("github")
--git-token-path   # Git token path to read the secret from
--git-api-url      # Github API url
--format           # Output format ("id", "json", default: "id")

Ejecute el mandato:

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

Salida de ejemplo:

1122211111122222111111111111111111111111111111666661111111111111
2222222222555552222222222222222333333222222222222222222222222222
3333333337777773333333333333333333333333333333344444433333333333

Ejecución del mandato utilizando el formato json combinado con jq:


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

Salida de ejemplo:

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

adición de pruebas de casillero de cacao

Añade pruebas al casillero de pruebas.

El casillero de pruebas se puede especificar utilizando distintivos. Para obtener más información, consulte Mandatos de bloqueador de cacao.

Las pruebas pueden configurarse utilizando los siguientes indicadores:

  • --evidence-type: una serie que identifica el tipo de las pruebas (por ejemplo, com.ibm.unit_test)
  • --evidence-type-version: una serie que identifica el esquema de detalles de pruebas (por ejemplo, 1.0.0, v2, etc.)

También se pueden especificar algunos distintivos opcionales:

  • --date: fecha de creación de pruebas (el valor predeterminado es la indicación de fecha y hora actual), acepta una serie que se puede analizar con Date.parse.
  • --details: los detalles de pruebas se pueden especificar como pares key=value, el distintivo se puede especificar varias veces (por ejemplo, --details result=success --details foo=bar, etc.).
  • --origin: los detalles sobre el origen de las pruebas se pueden especificar utilizando pares key=value, por ejemplo, --origin job_id=123, etc.
  • --asset: especifica qué activos (por su URI o ID interno) son relevantes para las pruebas; consulte los mandatos cocoa locker asset. El distintivo se puede especificar varias veces. El activo ya debe estar presente en el casillero.
  • --attachment: especifica archivos adjuntos a las pruebas. Cada archivo adjunto debe apuntar a un archivo existente, y cada nombre de archivo adjunto debe ser exclusivo (es decir, --attachment a/foo.json --attachment b/foo.json no está permitido).
  • --attachment-url: especifica los URL de archivos adjuntos que ya están almacenados en el bloqueador de pruebas. Cada URL debe apuntar a un archivo adjunto exclusivo, asegurándose de que no haya duplicados. Este distintivo se puede especificar varias veces para incluir varios URL.
  • --issue: lista de URL de problemas, que se pueden utilizar para realizar un seguimiento de las actividades relacionadas con los resultados. El distintivo se puede pasar varias veces.
  • --findings-path: utilice esta vía de acceso para pasar la matriz de resultados JSON que es la salida del mandato de proceso Incidente.
  • --scope: un identificador exclusivo que se puede utilizar para correlacionar pruebas de varios orígenes.
  • --comment-on-issues: añada un comentario con detalles sobre las pruebas creadas a los problemas de incidencia proporcionados utilizando el distintivo --issue
    • Puesto que los problemas pueden estar en github, el proveedor se analiza a partir de los URL de problemas
    • Cada problema debe ser del mismo repositorio
    • Los URL de problema deben coincidir con el patrón siguiente:
      • https://<host>/<owner>/<name>/issues/<issue number>-para github
    • Variables de entorno necesarias para acceder al repositorio de problemas:
      • si los URL apuntan a problemas de github :
        • GH_URL: opcional, el valor predeterminado es https://github.ibm.com/api/v3
        • GHE_TOKEN

Información de etiqueta para un archivo adjunto en JSON de pruebas:

Cada sección de archivo adjunto en el JSON de pruebas tiene una propiedad de etiqueta para contener metadatos sobre el archivo adjunto. Se asigna un valor predeterminado a la etiqueta y este valor depende de si la entrada de archivo adjunto es una vía de acceso de archivo o un URL de archivo adjunto. Pase una etiqueta personalizada añadiendo ::label=<value> al final de la vía de acceso del archivo adjunto o el URL del archivo adjunto.

Ejemplos:

  • --attachment path/to/attachment::label=label_name-Crea un archivo adjunto utilizando el archivo en path/to/attachment y establece el valor de etiqueta en label_name. Si no se pasa la etiqueta, el nombre de archivo se utiliza como valor de etiqueta de forma predeterminada.

  • --attachment-url url/of/attachment::label=label_name-Utiliza el archivo adjunto especificado en attachment-url y establece el valor de etiqueta en label_name. Si no se pasa la etiqueta, el valor de etiqueta es una serie vacía de forma predeterminada.

Algunas variables de entorno se seleccionan automáticamente para añadir detalles sobre el origen de activo:

  • El valor TOOLCHAIN_CRN es el mismo que especificar --origin toolchain_crn=$TOOLCHAIN_CRN
  • El valor PIPELINE_ID es el mismo que especificar --origin pipeline_id=$PIPELINE_ID
  • El valor PIPELINE_RUN_ID es el mismo que especificar --origin pipeline_run_id=$PIPELINE_RUN_ID

El comportamiento del mandato se puede modificar utilizando estos distintivos:

  • --dry-run: No añade nada al casillero, pero muestra lo que se añadiría.
  • --cache-mode: Similar a dry-run. En realidad, no añade las pruebas al casillero, pero añade los archivos adjuntos (si los hay) al casillero. Muestra las pruebas que se añadirían.
  • --format: controla el formato de salida, id o json (id de forma predeterminada).

Ejecute el mandato para guardar los resultados de detect-secrets:

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

Ejecute el mandato para guardar los resultados de la prueba de unidad:

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

Ejecute el mandato para crear una nueva prueba utilizando un archivo adjunto que ya existe en el bloqueador de pruebas:

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

Ejecute el mandato para guardar los resultados de la prueba de unidad y añadir una etiqueta personalizada al archivo adjunto:

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

evidencia de locker de cacao get < id-pruebas >

Recupera una prueba del casillero.

Opciones:

--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")
--version          # Show version number
--git-token-path   # Git token path to read the secret from
--git-api-url      # Github API url
--format           # Output format ("json", default: "json")

Ejecute el mandato:

 cocoa locker evidence get 0000000011111111222222223333333344444444555555556666666677777777

Salida de ejemplo:

{
   "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": "https://github.ibm.com/one-pipeline/compliance-app-march-2024.git#be44f38ec9b290d4f3d4931b37910effac346441",
       "url": "https://s3.us-south.cloud-object-storage.appdomain.cloud/cocoa-development/assets/7d930918fbb8be80f3a5100f0313c5b2518eba22cc915194cf971d4daf5170be/index.json"
     }
   ]
}

Resumen de pruebas de bloqueador de cacao < id-activo >

Devuelve el resumen de pruebas para uno o varios activos. Cuando no se especifica ningún activo en la línea de mandatos, los activos se leen de stdin.

Distintivos opcionales:

  • --latest-only: descarta pruebas si hay pruebas más recientes disponibles para un activo (true de forma predeterminada, establézcalo en false para inhabilitar este comportamiento)
  • --scope: considera pruebas que sólo tienen el ámbito especificado (consulte evidence add --scope), se pueden especificar varias veces
  • --linked-scope: Considera evidencia que tiene el alcance vinculado especificado como alcance. Además, los agrega a la propiedad de alcances vinculados en el resumen de evidencia devuelto. Puede especificarse varias veces.
  • --check-immutable-storage: Comprueba si cada prueba también está presente en un grupo de Cloud Object Storage y está protegida por un periodo de retención de al menos 365 días. Añade com.ibm.immutable_storage pruebas al resumen.
    • Consulte la sección cocoa locker sobre cómo configurar el grupo Cloud Object Storage.
  • --dry-run: Tiene un efecto cuando se combina con --check-immutable-storage. Si se utiliza, las pruebas de com.ibm.immutable_storage sólo se añaden al resumen, pero no se cargan en el casillero de pruebas.
  • --clone-dir: Un parámetro opcional para determinar la ruta de clonación del Repositorio de Evidencias, por defecto clonará el directorio repo /tmp
  • --initialized: Bandera opcional que asume que el armario de pruebas ya está clonado en la ubicación proporcionada --clone-dir o /tmp/.
  • --evidences-path: Para crear un resumen a partir de las evidencias locales que están almacenadas en una caché, este campo se utiliza para rpoporcionar la ruta del archivo donde están presentes todas las evidencias en la matriz.

Ejecute el mandato:

$ 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

Ejemplo leído de stdin:

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

Archivo adjunto de bloqueador de cacao get < id-adjunto >

Recupera un archivo adjunto que se ha cargado anteriormente con cocoa locker evidence add.

Opciones:

--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")
--version          # Show version number
--git-token-path   # Git token path to read the secret from
--git-api-url      # Github API url

Ejecute el mandato para cargar el archivo adjunto:

$ 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

Salida de ejemplo de carga de archivo adjunto:

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

Ejecute el comando para recuperar el archivo adjunto:

 cocoa locker attachment get 5aa5555aa55aa55a555aa5a5aa555555aaaa5aa5aa5555a55a5aa5aa5a5aaaaa

comprobación de casillero de cacao

Comprueba la configuración y los valores necesarios del casillero.

Actualmente, solo el bloqueador basado en Cloud Object Storage tiene un requisito de configuración:

  • Puesto que cada prueba debe conservarse durante al menos un año, el grupo Cloud Object Storage debe estar protegido por una política de retención. El periodo de retención predeterminado debe ser mayor o igual a 365 días.

Para obtener más información, consulte Mandatos de bloqueador de cacao.

Variables de entorno de compilación:

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

Ejecute el mandato:

 cocoa locker check --provider='cos'

comprobación de pruebas de casillero de cacao

Valide las pruebas necesarias basándose en las comprobaciones presentes en el archivo de configuración cocoa locker evidence check.

Variables de entorno de compilación:

Opciones:

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

Ejecute el mandato:

 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>`

Publicación de pruebas de locker de cacao

Publique las pruebas en Git y el programa de fondo de Cloud Object Storage (COS) (si COS está configurado).

cocoa locker evidence publish se utiliza para el proceso por lotes de pruebas.

Variables de entorno necesarias para configurar COS:

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

Opciones:

  --version         # Show version number                                
  --help            # Show help                                          
  --git-provider    # Git provider of the evidence locker ("github", "gitlab")
  --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-token-path  # Git token path to read the secret from              
  --git-api-url     # Git API URL                                         
  --evidences-path  # (Required) Use this path to read the evidences to be published
  --commit-message  # (Optional) Commit message suffix to be used for the commit to the git repository

Ejecute el mandato:

$ cocoa locker evidence publish \
      --org=<github-organization> \
      --repo=<github-repo-name> \
      --git-provider github \
      --evidences-path <path/to/file>

mandatos tekton de cacao

cocoa tekton get-pipeline-logs

Crea archivos de registro para cada paso de una ejecución de interconexión y los guarda en un directorio. Utilice las variables de entorno (PIPELINE_ID, PIPELINE_RUN_ID) o altere temporalmente las variables de entorno con distintivos explícitos (--pipeline-id, --pipeline-run-id). Los archivos de registro se pueden recuperar en un nivel por tarea y por paso, así como suministrando los distintivos --task-name y --step-name.

Si se proporciona --task-name, el mandato intenta extraer y crea los archivos de registro para cada paso para el nombre de tarea especificado.

Si se proporciona --step-name junto con --task-name, el mandato crea el archivo de registro para el paso específico para el task-name proporcionado. --step-name sin --task-name es una firma de mandato no válida.

Opciones:

-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

Variables de entorno de compilación:

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

Ejecución del mandato:

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

mandatos de registro de cambios de cacao

cocoa changelog

Este mandato está en desuso y se eliminará en 2.0.0.

Cocoa changelog no recibe soporte en Git Repos and Issue Tracking.

Imprime el registro de cambios entre dos revisiones del repositorio en stdout.

Opciones:

--org   # Defaults to GHE_ORG env variable, github organization
--repo  # Defaults to GHE_REPO env variable, name of the github repository

Variables de entorno de compilación:

GHE_TOKEN=  # Github Enterprise API Token (Required)
GHE_ORG=    # The owner of the repository (optional, when --org is not provided)
GHE_REPO=   # The repository name (optional, when --repo is not provided)

Este mandato contiene tres métodos de uso:

  • Compruebe las confirmaciones en el rango cuando se proporcionan las opciones --from y --to.

Opciones:

--from  # git commit hash to calculate the changes from
--to    # git commit hash to calculate the changes to

Ejecución del mandato:

$ cocoa changelog \
   --org=<github-organization> \
   --repo=<github-repo-name> \
   --from=<commit-hash-to-calculcate-changes-from> \
   --to=<commit-hash-to-calculate-changes-to>
  • Contener todas las confirmaciones que pertenecen a una solicitud de extracción específica cuando se proporciona la opción --pr.

Opciones:

--pr # pull request number from which the changelog is calculated

Ejecución del mandato:

$ cocoa changelog \
   --org=<github-organization> \
   --repo=<github-repo-name> \
   --pr=<pull-request-number>
  • Si no se proporciona la información anterior, el registro de cambios contiene los cambios de la solicitud de extracción fusionada actualmente.

Ejecución del mandato:

$ cocoa changelog \
   --org=<github-organization> \
   --repo=<github-repo-name>

mandatos de comentario de cacao

adición de comentario de cacao

Añade un comentario a un problema o solicitud de extracción en GitHub.

Opciones:

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

Variables de entorno de compilación:

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)

Variables de entorno requeridas, si está utilizandoGitHub:

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

Si está utilizando github, utilice el campo --git-token-path para establecer la señal GitHub y utilice el campo --git-api-url para establecer el URL de la API GitHub Enterprise en lugar de las variables de entorno GHE_TOKEN y GH_URL. Si se proporcionan las propiedades de entorno y los parámetros de línea de mandatos, --git-token-path y --git-api-url tienen prioridad.

Ejecución del mandato:

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