CLI de DevSecOps

DevSecOps CLI adopta soluciones de cumplimiento bajo IBM Cloud® DevSecOps implementación de referencia; por ejemplo, el enfoque de desplazamiento a la izquierda tuberías de referencia. 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 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 API o para configurar el valor de una opción que no se ha especificado en la línea comando. Debes exportar estas variables antes de ejecutar el comando.

Las opciones comando pueden admitir diversos tipos de valores de entrada, como números, cadenas, valores booleanos, matrices y objetos JSON. El tipo de opciones depende del comando que especifiques. Visita cocoa <command> <subcommand> --help para ver los tipos de opciones disponibles.

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

Aunque ServiceNow está documentado, no es compatible con la implementación de referencia predeterminada IBM Cloud DevSecOps.

mandatos de solicitud de extracción de cacao

cocoa check pull-request-approval

Comprueba el estado de aprobación de una solicitud de incorporación de cambios (Pull Request) en función del hash de una confirmación. Si la solicitud de incorporación de cambios no se ha aprobado, se 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 utiliza GitHub, puede utilizar el campo --git-token-path para establecer su token de GitHub y el campo --git-api-url para establecer la # URL la API de 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 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. Como mejora, además de la validación tradicional basada en Branch Protection, el comando también admite la validación basada en Ruleset para Repositorios GitHub. El comando , de forma predeterminada, busca un conjunto de reglas asociado en la rama en el repositorio GitHub y recurre a la validación tradicional basada en protección de ramas si no se encuentra ningún conjunto de reglas. Si tanto Ruleset como la regla de protección tradicional Branch están presentes para una rama, el comando sólo tiene en cuenta Ruleset. Para obtener más información sobre GitHub Rulesets, consulte Configuración de su repositorio GitHub
  • Comprobación del estado de las confirmaciones: Servicios externos que marcan las confirmaciones con los estados « error », « failure », « pending » o « success », lo cual se refleja posteriormente en las solicitudes de incorporación de cambios que incluyen dichas confirmaciones.
  • 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 utiliza GitHub, puede utilizar el campo --git-token-path para establecer su token de GitHub y el campo --git-api-url para establecer la # URL la API de 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.

Para especificar la ruta del archivo de salida de los ajustes de Protección de Rama, utilice la opción ' --branch-protection-settings-output-path. Cuando la rama está protegida, la representación JSON de la configuración de protección de la rama del repositorio se guardará en esta ruta especificada.

Para especificar la ruta del archivo de salida de los resultados de la validación de la Protección de Rama, utilice la opción " --branch-protection-markdown-output-path. Cuando la rama esté protegida, los resultados de la validación se guardarán en formato Markdown en esta ruta especificada.

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
 cocoa check pull-request-status \
    --branch-protection-settings-output-path <path/to/file> \
    --branch-protection-markdown-output-path <path/to/file>

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 API 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- Token IBMCloud IAM OAuth
    • SERVICENOW_URL- URL API 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 desde la API de ServiceNow y la guarda en un archivo o la muestra 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> \

actualización de la solicitud de cambio de cacao

Actualice una solicitud de cambio existente utilizando ServiceNow v3 API e imprímala en la consola.

Variables de entorno necesarias para ServiceNow v3:

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

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

Opciones:

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

Ejecución del mandato:

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

Cuando se utiliza la opción de descripción, el comando sustituye la descripción existente por la nueva descripción. En caso de que el usuario quiera añadir contenido a la descripción original, tendrá que extraer la descripción existente y añadirla manualmente antes de utilizar este comando.

cocoa change-request change-state-to-implement

Cambia el estado de una solicitud de cambio a « implement » a través de la API de 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 de ServiceNow. Puedes adjuntar «notas de cierre» utilizando la opción --close-notes y especificar la «categoría de cierre» mediante 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 cambio. Si la solicitud de cambio es una emergencia, el comando no falla, sino que solicita una aprobación con carácter retroactivo.

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 muestra 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 especifiquen mediante la opción de la CLI, dicha opción anula el valor que figura en la solicitud de incorporación de cambios. Si se proporcionan todos ellos, no se analiza «pr», por lo que no es necesario incluir « --org », « --repo » ni « GHE_TOKEN ».

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. Una vez ejecutado, el registro sigue el proceso 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>"

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

Añade un anexo de cambio a una solicitud de cambio concreta.

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

Listas: Archivos adjuntos 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 list "<insert-change-request-id-here>"

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

Actualiza un anexo de cambio en una solicitud de cambio concreta.

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

cacao solicitud de cambio comentario añadir

Añade un comentario a una solicitud de cambio concreta.

Opciones:

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

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

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

Variables de entorno necesarias para el proveedor GitHub Enterprise:

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

Ejecución del mandato:

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

lista de comentarios sobre la solicitud de cambio de cacao

Lista todos los comentarios para una solicitud de cambio específica.

Opciones:

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

Nota:

  • El parámetro « --last » debe ser un número no negativo.
  • Los parámetros --before y --after aceptan fechas en formato ISO 8601 y no pueden estar en el futuro.
  • Si se utiliza --before y --after, la fecha --before debe ser mayor que la fecha --after.
  • Los filtros se aplican en el siguiente orden: primero los filtros de fecha (--before, --after) y después --last para limitar los resultados.

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

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

Variables de entorno necesarias para el proveedor GitHub Enterprise:

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

Ejecución del mandato:

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

mandatos de pruebas de cacao

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

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 está utilizando github, utilice el campo --git-token-path para establecer su Token GitHub y el campo --git-api-url para establecer la # API GitHub Enterprise URL 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 configurar mediante variables de entorno, salvo backend y upload-path.

Recuperación de un artefacto

Puedes recuperar artefactos de varios casilleros de pruebas, como Object Storage, GitHub, o DevOps Insights, utilizando el comando get de artefactos de cacao. Este comando le permite obtener artefactos de diferentes tipos de taquillas, cada uno de los cuales requiere parámetros específicos.

El comando cocoa artifact get recupera un artefacto de los backends especificados. Los diferentes archivos requieren que se provean diferentes parámetros. Opciones:

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

Opciones para git:

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

Variables de entorno de compilación:

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)
BACKUP_COS_API_KEY=        # Cloud Object Storage API Key (Required while migrating from one COS bucket to another to read the old artifacts)
BACKUP_COS_BUCKET_NAME=    # Bucket Name where the artifact will be uploaded in the COS Instance (Required while migrating from one COS bucket to another to read the old artifacts)
BACKUP_COS_ENDPOINT=       # The COS API Endpoint matching the region where the bucket is located (Required while migrating from one COS bucket to another to read the old artifacts)

Si está utilizando github, utilice el campo --git-token-path para establecer su Token GitHub y el campo --git-api-url para establecer la # API GitHub Enterprise URL 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 get
$ cocoa artifact get \
  --backend=[choices: "git", "cos"] \ # e.g. --backend=cos
  --artifact-path <file-path> \ # full path in case of git, cos can utilise --artifact-prefix <file-path>

Las opciones CLI también se pueden configurar desde variables de entorno, excepto backend y artifact-path / artifact-prefix.

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 está utilizando github, utilice el campo --git-token-path para establecer su Token GitHub y el campo --git-api-url para establecer la # API GitHub Enterprise URL 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, 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
Opciones para Git
Opción Descripción Tipo de valor Obligatoria u opcional Valor(es) posible(s) / Valor por defecto / Observaciones
artefacto Nombre del artefacto creado para la aplicación. Serie Obligatorio Si el tipo de artefacto es una imagen, utiliza el siguiente formato:
<static_name>:<version>@sha256:<sha256_digest>
O
<static_name>@sha256:<sha256_digest>.

Si el tipo de entrada no es una imagen, utiliza un nombre estático que se mantenga constante en todas las actualizaciones de la entrada.
versión La versión de la aplicación. Serie Obligatorio
url-repositorio La URL que apunta al repositorio de código fuente de la aplicación (de github o repos GRIT/gitlab) Serie Obligatorio Este debe ser un repositorio de código fuente válido (como github / gitlab) y no un repositorio docker (como artifactory)
PIPELINE-RUN-ID El ID de la ejecución del conducto. Serie Obligatorio Se utiliza para ampliar el alcance de las pruebas. Debe ser el id o uuid de ejecución de la tubería. (Valor de ejemplo : ' f21321af-9084-4af3-80b8-4fb34143b7d9 )
Confirmar-sha El commit del repositorio de la aplicación a partir del cual se construye el artefacto. Serie Obligatorio Debe ser un commit sha de formato largo (40 caracteres en minúsculas)
nombre El nombre de la aplicación a la que pertenece el artefacto Serie Obligatorio Es un campo único. Podemos utilizar subdirectorios, como name=subdir/foo, que pueden hacer que su repositorio de inventario esté mejor organizado.
número-compilación El número de compilación. number Obligatorio El número de compilación se utiliza para correlacionar el artefacto de compilación y el artefacto de despliegue
org La organización GitHub que es propietaria del repositorio de inventario. Serie Opcional si la variable de entorno GHE_ORG está activada
repo El nombre del repositorio de inventario. Serie Opcional si la variable de entorno GHE_REPO está activada
artefactos de aplicación Contenido de aplicación arbitrario en formato JSON Serie Opcional Cualquier contenido adicional se puede añadir aquí para la automatización / uso de flujo de trabajo
tipo Tipo de artefacto. Puede ser "image" para imágenes, o puede ser un valor estático para tipos genéricos como archivos de despliegue, diagramas de timón, etc. Serie Obligatorio Valores posibles : ["image"] para artefactos de tipo imagen, '
en caso contrario se pueden utilizar valores como ["helm-chart", "deployment-file"] o cualquier valor arbitrario
sha256 El hash sha256 del artefacto. Serie Obligatorio Debe tener el formato " sha256:<64 character hash>
Origen URL que apunta al artefacto (por ejemplo, imagen construida). Serie Obligatorio Para una entrada de inventario de tipo "imagen", la procedencia debe ser la misma que la del campo artefacto
signature La firma del artefacto Serie Obligatorio
entorno El nombre del entorno donde se añade la entrada. Serie Opcional Por defecto : "master"
de-archivo El nombre del archivo que contiene los detalles de las entradas del inventario. Utilice esta opción para cargar varias entradas de inventario en una única confirmación en el repositorio de inventario. string Opcional Ejemplo : ' path/to/file.json
proveedor de git El proveedor de servicios de control de versiones de Git. Serie Opcional Por defecto : "github"
' Valores posibles : ["github", "gitlab"]
vía-acceso-señal-git Vía de acceso de señal Git desde la que leer el secreto Serie Opcional si se establece la variable de entorno GHE_TOKEN Ejemplo : ' path/to/git-token
git-api-url URL la API Git Serie Opcional Por defecto : ' https://<region>.git.cloud.ibm.com/api/v4
ubicación Ubicación del artefacto en otros regsirty junto con el sha256 Serie Opcional Ejemplo: <environment>#<static_name>:<version>@sha256:<sha256_digest>.
Esta opción se puede especificar varias veces.

Ejecución del mandato:

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

Utilización de la opción --from-file

Si se utiliza la opción --from-file, el comando permite añadir varias entradas en una única confirmación. Esta opción espera un archivo JSON que contenga una matriz de objetos, donde cada objeto de la matriz debe tener los mismos campos que se describen en la tabla de opciones anterior. Los requisitos de los campos (obligatorios u opcionales) siguen siendo los mismos que cuando se utilizan opciones de comando individuales. La única diferencia es que en lugar de proporcionar estos campos como argumentos de comando, se leen desde el archivo JSON.

Las opciones --environment, --org, y --repo deben proporcionarse en la línea de comando y se aplicarán a todas las entradas del archivo.

Ejemplo de estructura de archivo JSON:

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

Cuando se utiliza --from-file, es posible proporcionar ubicaciones para el artefacto en otro registro. El comando espera que el campo locations sea un objeto donde la clave es <environment> y el valor es <static_name>:<version>@sha256:<sha256_digest> en este formato.

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 está utilizando github, utilice el campo --git-token-path para establecer su Token GitHub y el campo --git-api-url para establecer la # API GitHub Enterprise URL 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 según una etiqueta o un 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 está utilizando github, utilice el campo --git-token-path para establecer su Token GitHub y el campo --git-api-url para establecer la # API GitHub Enterprise URL 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

El uso de una etiqueta de inventario permite añadir o reubicar etiquetas dentro de un elemento de inventario, apuntando a la última confirmación de una rama o a otra etiqueta.

Opciones:

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

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 está utilizando github, utilice el campo --git-token-path para establecer su Token GitHub y el campo --git-api-url para establecer la # API GitHub Enterprise URL 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 `label-to-move` label to another label (to the same commit)
$ cocoa inventory label move \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  --to-label="some-label" \
  "label-to-move"
# delete the `label-to-delete` label from the inventory
$ cocoa inventory label delete \
  --org='Github-ID' \
  --repo='compliance-inventory-repo' \
  "label-to-delete"

cocoa inventory promote

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 está utilizando github, utilice el campo --git-token-path para establecer su Token GitHub y el campo --git-api-url para establecer la # API GitHub Enterprise URL 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'

inventario de cacao validar

Valida las entradas presentes en un repositorio de inventario (o archivo JSON). El repositorio de inventario puede tener su entorno (rama) o etiqueta (tag) validados.

Las opciones a validar incluyen (al menos una de las banderas debe ser utilizada)

  1. utilizando la bandera ' --environment ' - que toma una rama como valor y valida todas las entradas en ella.
  2. utilizando la bandera ' --label ' - que toma la etiqueta como valor y valida todas las entradas en ella.
  3. utilizando la bandera ' --from-file ' - que toma la ruta de un archivo JSON que contiene entradas de inventario (en formato guión).

Opcional:

  1. Si se debe utilizar un nombre de archivo inventoryignore personalizado, se puede utilizar la bandera ' --inventory-ignore-file-name ' para anular el valor predeterminado.
  2. Si ya existe un repositorio de inventario clonado y desea que el comando lo utilice, puede proporcionar la ruta del repositorio de inventario clonado utilizando el indicador " --inventory-path.

Opciones necesarias:

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

Variables de entorno (Opcionales y pueden utilizarse en lugar de proporcionar --org --repo y --git-token-path):

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

Ejecución del mandato:

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

inventario de cacao get-delta

Obtener el delta entre commits del repositorio de inventario. Opcionalmente, obtenga las confirmaciones de revisión por pares dentro del delta entre dos confirmaciones.

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
Opciones para Git
Opción Descripción Tipo de valor Obligatoria u opcional Valor(es) posible(s) / Valor por defecto / Observaciones
de-sha El commit de inicio para calcular el delta desde Serie opcional
de-etiqueta La etiqueta que se utilizará como commit inicial para calcular el delta a partir de Serie opcional
to-sha El compromiso final para calcular el delta hasta Serie opcional
al medio ambiente La confirmación HEAD de la rama del entorno para calcular el delta hasta Serie opcional
para etiquetar La etiqueta que indica el commit final para calcular el delta hasta Serie opcional
org La organización GitHub que es propietaria del repositorio de inventario. Serie Opcional si la variable de entorno GHE_ORG está activada
repo El nombre del repositorio de inventario. Serie Opcional si la variable de entorno GHE_REPO está activada
proveedor de git El proveedor de servicios de control de versiones de Git. Serie Opcional Por defecto : "github"
' Valores posibles : ["github", "gitlab"]
vía-acceso-señal-git Vía de acceso de señal Git desde la que leer el secreto Serie Opcional si se establece la variable de entorno GHE_TOKEN Ejemplo : ' path/to/git-token
git-api-url URL la API Git Serie Opcional Por defecto : ' https://<region>.git.cloud.ibm.com/api/v4
delta Indicador para calcular el delta Boolean opcional falso
supresión delta Indicador para calcular las supresiones delta Boolean opcional falso
lista de inventario Indicador para calcular la lista de inventario completa Boolean opcional falso
revisión por pares Indicador para calcular los commits de revisión por pares Boolean opcional falso
ruta-de-repositorio-de-inventario Ruta opcional del repositorio de inventario. Si se pasa, el repositorio de inventario no se clona dentro del comando Serie opcional
ruta-del-archivo-para-ignorar-el-inventario Ruta opcional para el archivo de ignorar inventario Serie opcional
anterior-inventory-ignore-file-path Ruta opcional para el archivo ignore del inventario de despliegue anterior Serie opcional

Ejecución del mandato:

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

actualización del inventario de cacao-localizaciones

Actualizar una entrada/ubicación de artefactos en el repositorio de inventario.

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
Opciones para Git
Opción Descripción Tipo de valor Obligatoria u opcional Valor(es) posible(s) / Valor por defecto / Observaciones
nombre El nombre de la aplicación a la que pertenece el artefacto Serie Obligatorio
org La organización GitHub que es propietaria del repositorio de inventario. Serie Opcional si la variable de entorno GHE_ORG está activada
repo El nombre del repositorio de inventario. Serie Opcional si la variable de entorno GHE_REPO está activada
entorno El nombre del entorno donde se añade la entrada. Serie Opcional Por defecto : "master"
proveedor de git El proveedor de servicios de control de versiones de Git. Serie Opcional Por defecto : "github"
' Valores posibles : ["github", "gitlab"]
vía-acceso-señal-git Vía de acceso de señal Git desde la que leer el secreto Serie Opcional si se establece la variable de entorno GHE_TOKEN Ejemplo : ' path/to/git-token
git-api-url URL la API Git Serie Opcional Por defecto : ' https://<region>.git.cloud.ibm.com/api/v4
ubicación Ubicación del artefacto en otros regsirty junto con el sha256 Serie Opcional Ejemplo: <environment>#<static_name>:<version>@sha256:<sha256_digest>.
Esta opción se puede especificar varias veces.

Ejecución del mandato:

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

mandatos de incidencias de cacao

proceso de incidente de cacao

Este comando procesa los resultados del análisis proporcionados y crea incidencias en el repositorio proporcionado por cada vulnerabilidad. 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)
  • Escaneo CRA « CIS » (opción --type cra-cis)
  • 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)
  • Escaneos de Container Image Multi-Scanner (CIMS) (opción --type cims)
  • 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)
  • Reparar el análisis SAST (opción « --type mend-sast »)
  • 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)
  • Detectar secretos (opción --type detect-secrets)
  • Sysdig (opción --type sysdig)
  • CycloneDX (opción --type cyclonedx)
  • Grype (opción --type grype)

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

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 está utilizando github, utilice el campo --git-token-path para establecer su Token GitHub y el campo --git-api-url para establecer la # API GitHub Enterprise URL 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 incidencias que se supone que se rastrean en incidencias si el modo de sólo lectura no está activado.

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 está utilizando github puede utilizar el campo --git-token-path para establecer su token GitHub y utilizar el campo --git-api-url para establecer la API GitHub Enterprise URL (por defecto es https://<region>.git.cloud.ibm.com/api/v4 ) 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 está utilizando github, utilice el campo --git-token-path para establecer su Token GitHub y el campo --git-api-url para establecer la # API GitHub Enterprise URL 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

actualización del estado del incidente del cacao

Actualiza el estado de la incidencia a open o close en función del estado actual de la URL la incidencia especificada.

Fragmento de código:

$ cocoa incident update-state \
  <options>

Opciones:

Especifique las siguientes variables y valores opcionales para proporcionar más detalles sobre la incidencia de cooca.

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

Variables de entorno de compilación:

Debe proporcionar las siguientes variables de entorno y sus valores si no utilizó antes las variables opcionales --org y --repo.

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

Si su git-provider es github, utilice la siguiente variable de entorno necesaria:

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

También puede utilizar las variables opcionales --git-token-path y --git-api-url para proporcionar la ruta del token de Github y los valores de la API URL. Las variables opcionales tienen mayor precedencia cuando se proporcionan ambas, --git-token-path y --git-api-url tienen precedencia.

Valores de retorno:

  • El comando sale con el código de retorno 0 si la actualización del estado del problema se realiza correctamente .
  • El comando sale con el código de retorno 1 si la actualización del estado de la incidencia no tiene éxito.

Ejecución del mandato:

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

mandatos de bloqueador de cacao

Para subir pruebas y archivos adjuntos a Cloud Object Storage como para archivarlos. 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.
  • BACKUP_COS_ENDPOINT: el punto finaldonde se puede acceder al grupo Cloud Object Storage.
  • BACKUP_COS_BUCKET_NAME: El nombre del cubo de BackupCloud Object Storage.
  • BACKUP_COS_API_KEY: Una clave API de IBM Cloud o una clave API de ID de servicio que tenga acceso de lectura al bucket de 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. Muestra la información del activo si el activo especificado existe.

Opciones:

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

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

--type             # Type of the asset
--version          # Show version number
--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": <repository-url>,
    "tag": "v1.2.3"
   },
   "date": "2021-07-15T14:26:06.301Z",
   "type": "image",
   "related": ["0000000011111111222222223333333344444444555555556666666677777777"],
   "parents": ["0000000011111111222222223333333344444444555555556666666677777777", "b5bbbbb55555b5555b555b55b5555bb5b555b5b555bb5b55bbb5555fbbbbb"]
}
 cocoa locker asset get docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777 --format json

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

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": <repository-url>,
    "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.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.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:

--type             # Type of the asset
--version          # Show version number
--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.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.

La evidencia se puede configurar 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 único archivo adjunto, garantizando 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://<region>.git.cloud.ibm.com/api/v4
        • 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.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.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee
                            --attachment path/to/results/junit.xml \
                            --issue <issue-link> \
                            --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.com/foo/bar/blob/master/raw/attachments/5aa5555aa55aa55a555aa5a5aa555555aaaa5aa5aa5555a55a5aa5aa5a5aaaaa/content
                            --asset https://github.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.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee
                            --issue <issue-link> \
                            --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:

--version          # Show version number
--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": <git-uri-to-asset>,
       "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. Se puede especificar 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:

--version          # Show version number

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"
    }
   ],
   ...
}

Ejecuta 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.
--output-config-path # optional path to create a more suitable file based on the current config file

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

taquilla de cacao recogida de pruebas

Recoge las pruebas y guárdalas en la taquilla. Este comando es la implementación subyacente para el script de shell collect-evidence.

Uso

cocoa locker evidence collect [OPTIONS]

Parámetros necesarios

  • --tool-type <string> Identificador de la herramienta (por ejemplo, "sonarqube", "cra", "owasp-zap", "detect-secrets")

  • --evidence-type <string> Tipo de prueba (por ejemplo, " com.ibm.static_scan ", " com.ibm.unit_tests ", " com.ibm.detect_secrets ")

  • --assets <key:type> Especificaciones de los activos en formato "key:type". Puede especificarse varias veces para varios activos. Ejemplo: --assets app-repo:repo o --assets my-image:artifact

  • --status <string> Estado de las pruebas: success | failure pending

  • --pipeline-run-id <string> Identificador de ejecución de la tubería

  • --pipeline-namespace <string> Espacio de nombres de tuberías: pr | ci cd cc

  • --incident-org <string> Git organización para el depósito de incidentes

  • --incident-repo <string> Nombre del repositorio de incidentes

Parámetros necesarios para la plataforma tekton.
  • --pipeline-id <string> Identificador de la tubería

  • --task-name <string> Nombre de la tarea dentro de la canalización

  • --step-name <string> Nombre del paso dentro de la tarea

Parámetros opcionales

  • --attachment <path> Archivos adjuntos, como resultados de análisis (pueden especificarse varias veces)

  • --attachment-url <url> URL de los archivos adjuntos precargados (puede especificarse varias veces)

  • --meta <key=value> Pares de metadatos clave=valor (pueden especificarse varias veces)

  • --additional-comment <string> Comentario adicional para incluir en las ediciones de incidentes

  • --show-table Mostrar los detalles de las pruebas en forma de tabla

  • --dry-run Vista previa sin guardar en la taquilla

  • --cache-mode Añadir sólo archivos adjuntos, omitir las pruebas propiamente dichas

  • --evidence-reuse Activar la función de reutilización de pruebas

  • --evidence-per-asset Crear pruebas para cada activo por separado

  • --upload-logs <boolean> Cargar los registros como archivos adjuntos si no se proporcionan otros archivos adjuntos (por defecto: true)

  • --incident-git-provider <string> Git proveedor: github | gitlab (por defecto: github)

  • --incident-git-token-path <path> Ruta a Git token para la autenticación

  • --incident-git-api-url <url> Base API personalizada Git URL

  • --incident-labels <string> Etiquetas para aplicar a las incidencias (pueden especificarse varias veces)

  • --incident-assignees <string> GitHub/GitLab nombres de usuario para asignar a los incidentes (pueden especificarse varias veces)

  • --comment-on-issues Vincular las pruebas añadidas sobre cuestiones de incidentes

  • --pr-issue-management Permitir la vinculación y gestión de pull request a issue

  • --opt-in-auto-close Permitir el cierre automático de los incidentes si se resuelven

  • --custom-exempt-label <string> Etiqueta que indica la exención de los requisitos de conformidad

  • --platform <string> Plataforma utilizada para obtener los registros: tekton | github-actions (por defecto: tekton)

  • --root-pipeline-run-id <string> Identificador de la ejecución raíz de la tubería

  • --toolchain-crn <string> Nombre del recurso en la nube (CRN) de la cadena de herramientas

  • --deployment-prefix <string> El prefijo de implantación

  • --target-environment <string> Entorno de destino (por defecto: prod)

  • --target-environment-purpose <string> Objetivo del entorno

  • --collect-evidence-in-pr <string> Recopilar pruebas en el contexto de las RR: none | success | all

  • --pr-html-url <string> URL a la solicitud de extracción asociada

  • --base-branch <string> Rama base para el pull request

  • --branch <string> Nombre de rama

  • --gh-org <string> GitHub organización donde se ejecuta el pipeline ( específico para la plataforma de acciones github ).

  • --gh-repo <string> GitHub repositorio donde se ejecuta el pipeline ( específico para la plataforma de acciones github ).

  • --gh-server-url <string> GitHub Acciones: Servidor URL ( específico de la plataforma github actions ).

  • --gh-repository-url <string> GitHub Acciones: Repositorio completo URL ( específico de la plataforma de acciones github ).

  • --gh-run-attempt <string> GitHub Acciones: Número de intento de ejecución del flujo de trabajo ( específico de la plataforma de acciones de github ).

  • --run-id <string> Identificador de ejecución

  • --xforce-api-key <string> Clave API para IBM X-Force Exchange

  • --xforce-password <string> Contraseña API para IBM X-Force Exchange

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

Ejemplo

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

reutilización de las pruebas de las taquillas de cacao

Encontrar y reutilizar las pruebas existentes para el activo dado. Este comando es la implementación subyacente para el script de shell check-evidence-for-reuse.

Uso

cocoa locker evidence reuse [OPTIONS]

Parámetros necesarios

  • --tool-type <string> Identificador de la herramienta (por ejemplo, "sonarqube", "cra", "owasp-zap")

  • --evidence-type <string> Tipo de prueba (por ejemplo, " com.ibm.static_scan ", " com.ibm.unit_tests ")

  • --assets <key:type> Especificaciones de activos en formato "clave:tipo"

  • --pipeline-run-id <string> Identificador de ejecución de la tubería

  • --pipeline-namespace <string> Espacio de nombres de la tubería: pr | ci

  • --incident-org <string> Git organización para el depósito de incidentes

  • --incident-repo <string> Nombre del repositorio de incidentes

Parámetros necesarios para la plataforma tekton.
  • --task-name <string> Nombre de la tarea dentro de la canalización

  • --step-name <string> Nombre del paso dentro de la tarea

  • --pipeline-id <string> Identificador de la tubería

Parámetros opcionales

  • --meta <key=value> Metadatos de validación de las pruebas encontradas para su reutilización (pueden especificarse varias veces)

  • --evidence-validity-period <number> Periodo de validez en horas (por defecto: 24, máx: 720 horas / 30 días)

  • --evidence-reuse-for-failure Habilitar la reutilización de pruebas fallidas (por defecto: false)

  • --dry-run Modo de vista previa sin reutilizar las pruebas

  • --show-table Mostrar los detalles de las pruebas en forma de tabla

  • --format <string> Formato de salida: json (por defecto: json)

  • --incident-git-provider <string> Git proveedor: github | gitlab (por defecto: github)

  • --incident-git-token-path <path> Ruta a Git token para la autenticación

  • --incident-git-api-url <url> Base API personalizada Git URL

  • --incident-assignees <string> GitHub/GitLab nombres de usuario para asignar a los incidentes (pueden especificarse varias veces)

  • --custom-exempt-label <string> Etiqueta que indica la exención de los requisitos de conformidad

  • --deployment-prefix <string> El prefijo de implantación

  • --root-pipeline-run-id <string> Identificador de la ejecución raíz de la tubería

  • --toolchain-crn <string> Nombre del recurso en la nube (CRN) de la cadena de herramientas

  • --platform <string> Plataforma utilizada para obtener los registros: tekton | github-actions (por defecto: tekton)

  • --gh-org <string> GitHub organización donde se ejecuta el pipeline ( específico de la plataforma github actions )

  • --gh-repo <string> GitHub repositorio donde se ejecuta el pipeline ( específico para la plataforma de acciones github )

  • --run-id <string> Identificador de ejecución

  • --environment <string> Entorno (por defecto: dev)

  • --serviceEnvironment <string> Entorno de servicio (por defecto: dev)

Ejemplo

Uso básico:

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

Con periodo de validez personalizado y validación de metadatos:

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

Reutilizar las pruebas fallidas:

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

Código de salida

  • 0: Pruebas encontradas y reutilizadas con éxito
  • 1: No se han encontrado pruebas reutilizables o la validación ha fallado

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 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 su Token GitHub y utilice el campo --git-api-url para establecer la API GitHub Enterprise URL 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>

comandos de etiqueta de cacao

etiqueta cacao añadir

Añade una o más etiquetas a los pull requests en GitHub o GitLab.

Opciones:

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

Variables de entorno de compilación:

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

Variables de entorno necesarias para GitHub:

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

Si utiliza GitHub, se requiere la siguiente variable de entorno:

Variables de entorno necesarias para GitHub
Variable Descripción
GHE_TOKEN El token de la API GitHub Enterprise. Opcional si utiliza la opción --git-token-path.

Opciones de la línea de comandos:

Alternativamente, puede utilizar las siguientes opciones de línea de comandos para autenticarse:

Opciones de línea de comandos para GitHub
Opciones de la línea de comandos Descripción
--git-token-path Configura tu token de GitHub.
--git-api-url Establece la URL la API GitHub Enterprise.

Si se proporcionan tanto propiedades de entorno como parámetros de línea de comandos, las opciones --git-token-pat h y --git-api-url tienen prioridad.

Ejemplo: Añadir una etiqueta a un Pull Request

Puede añadir una etiqueta a una pull request ejecutando el siguiente comando:

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