Interface de ligne de commande DevSecOps
DevSecOps CLI adopte des solutions de conformité sous IBM Cloud® DevSecOps mise en œuvre de référence; par exemple, les pipelines de référence de l'approche shift-left. Pour plus d'informations sur l'architecture de conformité en amont, voir DevSecOps avec Continuous Delivery.
Interface de ligne de commande
L'interface de ligne de commande utilise une structure à plusieurs parties sur la ligne de commande que vous devez spécifier dans l'ordre suivant:
cocoa <command> <subcommand> [options]
-
L'appel de base vers l'interface de ligne de commande.
-
La commande principale, qui correspond généralement à un service ou à un module utilisé dans le cadre de l'architecture « shift-left »; par exemple, « change request », « inventory » ou « tekton ».
-
La sous-commande qui spécifie l'action à effectuer.
-
Les options d'interface de ligne de commande requises par l'action. A condition qu'ils suivent les étapes 1 à 3, vous pouvez spécifier les options de l'interface de ligne de commande dans n'importe quel ordre.
Certaines commandes utilisent des variables d'environnement pour récupérer des clés API ou pour configurer la valeur d'une option qui n'a pas été fournie dans la ligne de commande. Vous devez exporter ces variables avant d'exécuter la commande.
Les options de ligne de commande peuvent accepter différents types de valeurs d'entrée, telles que des nombres, des chaînes de caractères, des valeurs booléennes, des tableaux et des objets JSON. Le type d'options dépend de la commande que vous
spécifiez. Rendez-vous sur cocoa <command> <subcommand> --help pour découvrir les différents types d'options.
Relance des appels d'API ayant échoué
L'interface de ligne de commande Cocoa tente à nouveau tout appel d'API qui échoue avec un statut de réponse 5xx trois fois. Vous pouvez remplacer ce comportement en fournissant les variables d'environnement suivantes:
MAX_RETRY_ATTEMPTS-Nombre de nouvelles tentatives effectuées par l'interface de ligne de commande Cocoa avant qu'elle n'abandonne. Par exemple,MAX_RETRY_ATTEMPTS=5RETRY_STATUS_CODE-Codes de statut de réponse pour lesquels la nouvelle tentative est effectuée. Par exemple,RETRY_STATUS_CODE=409,422,500pour réessayer sur ces trois codes d'état.
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.
Les nouvelles tentatives étant exponentiellement espacées dans le temps, la configuration de nouvelles tentatives plus élevées entraîne une plus grande séparation des nouvelles tentatives.
Temps écoulé pour l'exécution de la commande
L'interface de ligne de commande de cacao peut afficher le temps écoulé de n'importe quelle commande en secondes en définissant DISPLAY_ELAPSED_TIME sur une chaîne non vide comme suit:
export DISPLAY_ELAPSED_TIME=1` # Display a snippet showing the total execution time of the cli command, example `Elapsed time: 5.32 seconds`
Commandes de l'interface de ligne de commande
Bien que l' ServiceNow soit documentée, elle n'est pas prise en charge par l'implémentation de référence par défaut IBM Cloud DevSecOps.
commandes de demande d'extraction de cacao
cocoa check pull-request-approval
Vérifie l'état d'approbation d'une Pull Request pour un hachage de commit. Si la Pull Request n'a pas été approuvée, un nouveau ticket d'incident est créé dans le dépôt spécifié. La commande peut identifier les demandes d'extraction d'urgence
marquées avec un libellé. Dans ce cas, elle possède le code de sortie 0.
Variables d'environnement obligatoires :
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
Options :
--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 vous utilisez GitHub, vous pouvez utiliser le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement GHE_TOKEN et GH_URL. Si les deux sont fournis, --git-token-path et --git-api-url sont prioritaires.
Exécution de la commande :
cocoa check pull-request-approval
cocoa check pull-request-status
Vérifie le statut d'une demande d'extraction donnée et les paramètres des référentiels.
- Règles de protection de branche : Règles permettant de désactiver l'envoi forcé, d'empêcher la suppression des branches, et le cas échéant, d'exiger des vérifications de statut avant la fusion. En plus de la validation traditionnelle basée sur la protection des branches, la commande prend également en charge la validation basée sur les jeux de règles pour les référentiels GitHub. Par défaut, la commande vérifie un ensemble de règles associé sur la branche dans le référentiel GitHub et revient à la validation traditionnelle basée sur la protection des branches si aucun ensemble de règles n'est trouvé. Si une règle de protection de branche traditionnelle et un ensemble de règles sont présents pour une branche, la commande ne prend en compte que l'ensemble de règles. Pour plus d'informations sur les jeux de règles GitHub, voir Configuration de votre référentiel GitHub
- Vérification du statut des commits : services externes permettant d'attribuer aux commits un statut «
error», «failure», «pending» ou «success», qui est ensuite pris en compte dans les pull requests impliquant ces commits. - Exécutions de vérification : Applications qui effectuent l'intégration continue, exécutent les services lint ou d'analyse de code et fournissent des commentaires en retour détaillés sur les validations.
Variables d'environnement obligatoires :
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 vous utilisez GitHub, vous pouvez utiliser le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement GHE_TOKEN et GH_URL. Si les deux paires GHE_TOKEN GH_URL et --git-token-path --git-api-url sont fournies, --git-token-path et --git-api-url sont prioritaires.
Pour spécifier le chemin du fichier de sortie pour les paramètres de protection de la branche, utilisez l'option '--branch-protection-settings-output-path Lorsque la branche est protégée, la représentation JSON des paramètres
de protection de la branche du référentiel est enregistrée dans le chemin spécifié.
Pour spécifier le chemin du fichier de sortie des résultats de la validation de la protection de la branche, utilisez l'option '--branch-protection-markdown-output-path Lorsque la branche est protégée, les résultats de
la validation sont enregistrés au format Markdown dans le chemin spécifié.
REQUIRED_CHECKSExemple :
[
{
"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"
}
}
]
Exécution de la commande :
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>
Commandes de changement de demande de cacao
Les commandes cocoa change-request prennent en charge les fournisseurs de gestion des changements suivants:
- ServiceNow V1
- ServiceNow V3
Vous pouvez spécifier le fournisseur à l'aide de l'option --provider avec les valeurs suivantes: servicenow (par défaut) ou servicenow-v3.
Chaque fournisseur requiert une configuration de variable d'environnement différente:
servicenow:SERVICENOW_TOKEN- ServiceNow V1 Jeton d'APISERVICENOW_URL- URL 'API ServiceNow V1
servicenow-v3:PNP_IBMCLOUD_API_KEY-La clé d'API permettant d'accéder aux noeuds finaux ServiceNow v3, si elle n'est pas fournie, revient à IAM_ACCESS_TOKENIAM_ACCESS_TOKEN- IBMCloud IAM OAuth TokenSERVICENOW_URL- URL 'API ServiceNow V3
github-enterprise:GHE_TOKEN-Jeton GitHub EnterpriseGITHUB_CHANGE_MANAGEMENT_REPO- GitHub Change Management RepositoryGITHUB_CHANGE_MANAGEMENT_ORG-Organisation de gestion des changements GitHub
cocoa change-request get
Récupère une demande de modification via l'API ServiceNow, puis l'enregistre dans un fichier ou l'affiche dans la console.
Variables d'environnement requises pour ServiceNow v1 ou v2:
SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement requises pour ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires pour 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 d'environnement requises pour 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 d'environnement requises pour 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)
Options :
--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')
Exécution de la commande :
# 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
Crée une demande de changement et la publie sur l'API ServiceNow.
Deux méthodes d'utilisation :
- Fournir toutes les zones de demande de changement requises à partir des options de l'interface de ligne de commande.
Options :
--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.]+)
- Indiquer un nom de fichier à partir duquel faire une analyse syntaxique des données de la demande de changement. Le format JSON est attendu.
Options :
--file --f # json file name to parse the cr data from
--provider # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')
Exemple de fichier :
{
"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 d'environnement requises pour ServiceNow v1 ou v2:
SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement requises pour ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires pour 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 d'environnement requises pour 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)
Exécution de la commande :
cocoa change-request create --file=test.json
Ou
$ 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> \
mise à jour de la demande de modification du cacao
Mettre à jour une demande de changement existante en utilisant ServiceNow v3 API et l'imprimer sur la console.
Variables d'environnement requises pour ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
CHANGE_REQUEST_ID= # ID of the Change Request
Variables d'environnement supplémentaires pour 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
Options :
--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
Exécution de la commande :
# 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"
Lorsque l'option description est utilisée, la commande remplace la description existante par la nouvelle description. Si l'utilisateur souhaite ajouter du contenu à la description originale, il devra extraire la description existante et l'ajouter manuellement avant d'utiliser cette commande.
cocoa change-request change-state-to-implement
Modifie le statut d'une demande de modification pour le faire passer à « implement » via l'API ServiceNow.
Options :
--provider # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')
Variables d'environnement requises quel que soit le fournisseur:
CHANGE_REQUEST_ID= # ID of the Change Request
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v1 ou v2:
SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires, si vous utilisez le fournisseur 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 d'environnement requises pour le fournisseur 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)
Exécution de la commande :
cocoa change-request change-state-to-implement
cocoa change-request close
Permet de clôturer une demande de modification via l'API « ServiceNow ». Vous pouvez joindre des « notes de clôture » à l'aide de l'option --close-notes et préciser la « catégorie de clôture » à l'aide de l'option --close-category.
Options :
--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 d'environnement requises quel que soit le fournisseur:
CHANGE_REQUEST_ID= # ID of the Change Request
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v1 ou v2:
SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires, si vous utilisez le fournisseur 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 d'environnement requises pour le fournisseur 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)
Exécution de la commande :
cocoa change-request close
cocoa change-request check-approval
Permet de consulter le statut d'approbation d'une demande de modification. Si la demande de modification est urgente, la commande ne génère pas d'échec, mais demande une validation rétroactive.
Options :
--provider # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')
Variables d'environnement requises quel que soit le fournisseur:
CHANGE_REQUEST_ID= # ID of the Change Request
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v1 ou v2:
SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires, si vous utilisez le fournisseur 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 d'environnement requises pour le fournisseur 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)
Exécution de la commande :
cocoa change-request check-approval
cocoa change-request prepare
Crée les données relatives à la demande de modification et les affiche sur la console ou dans un fichier.
Variables d'environnement obligatoires :
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)
Les zones suivantes peuvent faire l'objet d'une analyse syntaxique à partir du corps de demande d'extraction :
--assigned-to
--impact
--priority
--purpose
--backout-plan
--type
--customer-impact
--deployment-impact
Si ces paramètres sont fournis via l'option CLI, celle-ci remplace la valeur figurant dans la pull request. Si tous ces éléments sont fournis, « pr » n'est pas analysé; les éléments « --org », « --repo » et « GHE_TOKEN » ne sont alors pas nécessaires.
Options :
--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
Exécution de la commande :
$ cocoa cr prepare \
--org=<github-organization> \
--repo=<github-repo-name> \
--pr=<pr number>
cocoa change-request request-approval
Demande l'approbation des enregistrements à l'état Nouveau avec approbation non demandée. Lors de son exécution, l'enregistrement suit la procédure de validation manuelle.
Options :
--crid="<ID>"
# or
--change-request-id="<ID>"
--provider # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v1 ou v2:
SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires, si vous utilisez le fournisseur 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 d'environnement requises pour le fournisseur 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)
Exécution de la commande :
cocoa change-request request-approval --crid="<insert-change-request-id-here>"
Ajout d'une pièce jointe de demande de changement de cacao
Ajoute une pièce jointe « Modification » à une demande de modification spécifique.
Options :
--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 d'environnement requises, si vous utilisez le fournisseur ServiceNow v1 ou v2:
SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires, si vous utilisez le fournisseur 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 d'environnement requises pour le fournisseur 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)
Exécution de la commande :
$ 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>'
obtention de la pièce jointe de la demande de changement de cacao
Récupère une pièce jointe spécifique à une demande de modification.
Options :
--provider # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v1 ou v2:
SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires, si vous utilisez le fournisseur 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 d'environnement requises pour le fournisseur 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)
Exécution de la commande :
cocoa change-request attachment get "CHGXXXXXXX" "CTASKXXXXXXX"
Liste des pièces jointes de demande de changement de cacao
Listes : Pièces jointes à une demande de modification.
Options :
--provider # (Optional) Change Management service provider (choices: 'servicenow', 'servicenow-v3', default: 'servicenow')
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v1 ou v2:
SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires, si vous utilisez le fournisseur 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 d'environnement requises pour le fournisseur 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)
Exécution de la commande :
cocoa change-request attachment list "<insert-change-request-id-here>"
changement de cacao-demande de mise à jour de pièce jointe
Met à jour une pièce jointe relative à une modification dans une demande de modification spécifique.
Options :
--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 d'environnement requises, si vous utilisez le fournisseur ServiceNow v1 ou v2:
SERVICENOW_TOKEN= # ServiceNow API Token
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires, si vous utilisez le fournisseur 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 d'environnement requises pour le fournisseur 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)
Exécution de la commande :
$ 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 demande de modification commentaire ajouter
Ajoute un commentaire à une demande de modification spécifique.
Options :
--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 d'environnement requises, si vous utilisez le fournisseur ServiceNow v3:
SERVICENOW_URL= # ServiceNow API URL
Variables d'environnement supplémentaires, si vous utilisez le fournisseur 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 d'environnement requises pour le fournisseur GitLab:
GITLAB_TOKEN= # Gitlab Token
GITLAB_URL= # Gitlab API URL
GITLAB_ORG= # Gitlab ORG
GITLAB_REPO= # Gitlab REPO Name
Variables d'environnement requises pour le fournisseur GitHub Enterprise:
GHE_TOKEN= # Github Enterprise API Token
GITHUB_CHANGE_MANAGEMENT_ORG= # The owner of the repository
GITHUB_CHANGE_MANAGEMENT_REPO= # The repository name
Exécution de la commande :
$ 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'
commandes de preuve de cacao
cocoa evidence format-summary
Formate le récapitulatif de preuves dans un format lisible par l'utilisateur. Il peut être introduit dans le contenu de la demande de changement.
Exécution de la commande :
$ 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
Démarque des preuves de cacao-résumé
Formate le récapitulatif des informations collectées dans un format de démarque qui peut être fourni en tant que commentaire de demande d'extraction GitHub.
L'entrée est un récapitulatif brut et peut être dans l'un des deux formats suivants:
- Résumé au format JSON.
- Récapitulatif agrégé, qui est un tableau JSON de récapitulatifs d'application individuels.
Lorsqu'un récapitulatif agrégé est transmis en tant qu'entrée, la sortie regroupe le statut des informations collectées en fonction des applications dans les récapitulatifs.
Indicateur facultatif:
--detailed: un récapitulatif détaillé de la démarque est généré si l'indicateur est défini sur true (truepar défaut, défini surfalsepour un récapitulatif de la démarque tronquée).
Exécution de la commande :
$ 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
commandes d'artefact de cacao
cocoa artifact upload
Télécharge un artefact dans les systèmes de back end spécifiés. Les systèmes de back end peuvent être différents types de casier de preuves, par exemple, Object Storage, GitHub ou DevOps Insights. Des éléments de verrouillage différents nécessitent des paramètres différents.
Options :
--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
Options pour git :
--git-token-path #(Optional) Github Token's path
--git-api-url #(Optional) Github API url
Variables d'environnement obligatoires :
PIPELINE_RUN_ID= # Can be used instead of '--pipeline-run-id' option
NAMESPACE= # Can be used instead of '--namespace' option
Variables d'environnement requises, si vous utilisez le fournisseur'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 d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token (Optional if you are using --git-token-path)
Variables d'environnement requises, si vous utilisez 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 vous utilisez github, utilisez le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement
GHE_TOKEN et GH_URL. Si les deux paires GHE_TOKEN GH_URL et --git-token-path --git-api-url sont fournies, --git-token-path et --git-api-url sont prioritaires.
Exécution de la commande :
$ 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>
Les options de la ligne de commande peuvent également être définies à l'aide de variables d'environnement, à l'exception de backend et upload-path``.
Récupération d'un artefact
Vous pouvez récupérer des artefacts à partir de divers casiers de preuves, tels que Object Storage, GitHub, ou DevOps Insights, en utilisant la commande cocoa artifact get. Cette commande vous permet de récupérer des artefacts de différents types de casiers, chacun nécessitant des paramètres spécifiques.
La commande « cocoa artifact get » récupère un artefact à partir des backends spécifiés. Des éléments de verrouillage différents nécessitent des paramètres différents. Options :
--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.
Options pour git :
--git-token-path # Github Token's path
--git-api-url # (Optional) Github API url
Variables d'environnement obligatoires :
Variables d'environnement requises, si vous utilisez le fournisseur'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 d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token (Optional if you are using --git-token-path)
Variables d'environnement requises, si vous utilisez 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 vous utilisez github, utilisez le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement
GHE_TOKEN et GH_URL. Si les deux paires GHE_TOKEN GH_URL et --git-token-path --git-api-url sont fournies, --git-token-path et --git-api-url sont prioritaires.
Exécution de la commande :
$ 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>
Les options CLI peuvent également être définies à partir de variables d'environnement, à l'exception de backend et artifact-path / artifact-prefix.
cocoa set-status
Définit le statut d'une validation. L'implémentation en cours est testée dans GitHub. Voir la documentation sur les statutsGitHub.
Variables d'environnement obligatoires :
GHE_ORG= # Github organization/username
GHE_REPO= # Github repository
GHE_COMMIT= # Github commit hash
Variables d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github token (Optional if you are using --git-token-path)
Si vous utilisez github, utilisez le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement GHE_TOKEN et GH_URL. Si les deux paires GHE_TOKEN GH_URL et --git-token-path --git-api-url sont fournies, --git-token-path et --git-api-url sont prioritaires.
Options pour git :
--git-token-path #(Optional) GitHub token's path
--git-api-url #(Optional) GitHub API url
Exécution de la commande :
$ 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."
commandes d'inventaire de cacao
cocoa inventory add
Ajoute une valeur au référentiel d'inventaire. Crée un fichier avec l'option « name »; s'il n'existe pas, il le remplace.
Variables d'environnement obligatoires :
GHE_ORG= # Github Organization (required if --org option is not specified).
GHE_REPO= # Github Repository (required if --repo option is not specified).
Variables d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token(Optional if you are using --git-token-path)
Options pour git :
--git-token-path #(Optional) Github Token's path
--git-api-url #(Optional) Github API url
| Option | Description | Type de valeur | Requise ou facultative | Valeur(s) possible(s) / Valeur par défaut / Remarques |
|---|---|---|---|---|
| artefact | Nom de l'artefact créé pour l'application. | Chaîne | Obligatoire | Si le type d'artefact est une image, utilisez le format suivant : <static_name>:<version>@sha256:<sha256_digest> OU <static_name>@sha256:<sha256_digest>. Si le type d'entrée n'est pas une image, utilisez un nom statique qui reste inchangé à chaque mise à jour de l'entrée. |
| version | La version de l'application. | Chaîne | Obligatoire |
|
| url-référentiel | L' URL pointant vers le dépôt de code source de l'application (de github ou GRIT/gitlab repository) | Chaîne | Obligatoire | Il doit s'agir d'un dépôt de code source valide (comme github / gitlab) et non d'un dépôt docker (comme artifactory) |
| ID-EXÉCUTION-PIPELINE | ID de l'exécution du pipeline. | Chaîne | Obligatoire | Il est utilisé pour étendre la portée des preuves. Doit être l'identifiant ou l'uuid de l'exécution du pipeline. (Exemple de valeur : " f21321af-9084-4af3-80b8-4fb34143b7d9 ) |
| Commit-sha | Le commit du référentiel d'application à partir duquel l'artefact est construit. | Chaîne | Obligatoire | Il doit s'agir d'un commit sha au format long (40 caractères en minuscules) |
| nom | Nom de l'application à laquelle appartient l'artefact | Chaîne | Obligatoire | C'est un domaine unique en son genre. Nous pouvons utiliser des sous-répertoires, comme name=subdir/foo, qui peuvent rendre votre référentiel d'inventaire mieux organisé. |
| numéro-génération | Le numéro de la version. | number | Obligatoire | Le numéro de construction est utilisé pour établir une corrélation entre l'artefact de construction et l'artefact de déploiement |
| org | Organisation GitHub qui possède le référentiel d'inventaire. | Chaîne | Facultatif si la variable d'environnement GHE_ORG est définie |
|
| référentiel | Nom du référentiel d'inventaire. | Chaîne | Facultatif si la variable d'environnement GHE_REPO est définie |
|
| artefacts d'application | Contenu d'application arbitraire au format JSON | Chaîne | Facultatif | Tout contenu supplémentaire peut être ajouté ici à des fins d'automatisation ou de flux de travail |
| type | Type d'artefact. Peut être "image" pour les images, ou peut être une valeur statique pour les types génériques tels que les fichiers de déploiement, les diagrammes de barre, etc. | Chaîne | Obligatoire | Valeurs possibles : ["image"] pour les artefacts de type image, " pour les autres valeurs telles que ["helm-chart", "deployment-file"] ou toute autre valeur arbitraire |
| sha256 | Le hachage sha256 de l'artefact. | Chaîne | Obligatoire | Doit être du format " sha256:<64 character hash> |
| provenance | URL pointant vers l'artefact (par exemple, une image construite). | Chaîne | Obligatoire | Pour une entrée d'inventaire de type "image", la provenance doit être la même que le champ de l'artefact |
| signature | Signature de l'artefact | Chaîne | Obligatoire |
|
| environnement | Nom de l'environnement dans lequel l'entrée est ajoutée. | Chaîne | Facultatif | Défaut : "master" |
| à partir d'un fichier | Le nom du fichier qui contient les détails des entrées d'inventaire. Utilisez ce drapeau pour télécharger plusieurs entrées d'inventaire en une seule fois dans le répertoire d'inventaire. | chaîne | Facultatif | Exemple : " path/to/file.json |
| git-fournisseur | Fournisseur de services de contrôle de version Git. | Chaîne | Facultatif | Valeur par défaut : "github" ' Valeurs possibles : ["github", "gitlab"] |
| Chemin-jeton-git | Chemin du jeton Git à partir duquel le secret doit être lu | Chaîne | Facultatif si la variable d'environnement GHE_TOKEN est définie | Exemple : " path/to/git-token |
| URL-api-git | URL 'API Git | Chaîne | Facultatif | Valeur par défaut : " https://<region>.git.cloud.ibm.com/api/v4 |
| emplacement | Emplacement de l'artefact dans d'autres registres, ainsi que l'emplacement de l'artefact sha256 | Chaîne | Facultatif | Exemple : <environment>#<static_name>:<version>@sha256:<sha256_digest>. Ce drapeau peut être fourni plusieurs fois. |
Exécution de la commande :
$ 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
Utilisation de l'option --from-file
Lorsque l'option --from-file est utilisée, la commande permet d'ajouter plusieurs entrées en une seule fois. Cette option attend un fichier JSON contenant un tableau d'objets, où chaque objet du tableau doit avoir les mêmes
champs que ceux décrits dans le tableau d'options ci-dessus. Les exigences en matière de champs (obligatoires ou facultatifs) restent les mêmes que lors de l'utilisation des options individuelles de la ligne de commande. La seule différence
est qu'au lieu de fournir ces champs en tant qu'arguments de ligne de commande, ils sont lus à partir du fichier JSON.
Les options --environment, --org, et --repo doivent être fournies sur la ligne de commande et s'appliquent à toutes les entrées du fichier.
Exemple de structure de fichier 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",
}
]
En utilisant --from-file, il est possible de fournir des emplacements pour l'artefact dans d'autres registres. La commande s'attend à ce que le champ locations soit un objet dont la clé est <environment> et la valeur <static_name>:<version>@sha256:<sha256_digest> dans ce format.
cocoa inventory get
Obtient une entrée à partir du référentiel d'inventaire. La cible peut être une version spécifique ou un environnement. Utilisez --version ou --environment, et seulement l'une de ces deux options. Si l'option --property est manquante, tout le contenu de l'entrée d'inventaire est imprimé.
Variables d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token (Optional if you are using --git-token-path)
Options pour git :
--git-token-path #(Optional) Github Token's path
--git-api-url #(Optional) Github API url
Si vous utilisez github, utilisez le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement
GHE_TOKEN et GH_URL. Si les deux paires GHE_TOKEN GH_URL et --git-token-path --git-api-url sont fournies, --git-token-path et --git-api-url sont prioritaires.
Par défaut, l'interface de ligne de commande de chaque appel garantit que vous utilisez une version à jour d'un casier Git. Ce comportement peut être désactivé en définissant COCOA_USE_CACHE sur n'importe quelle valeur sauf 0,
false, no ou n. Dans ce cas, l'interface de ligne de commande utilise son cache interne pour rechercher des informations collectées (beaucoup plus rapidement), mais les résultats peuvent être périmés.
Exécution de la commande :
# 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
Récupère le hachage du dernier commit associé à une étiquette ou à un environnement dans le référentiel d'inventaire. Utilisez --label ou --environment, et seulement l'une de ces deux options.
Variables d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token (Optional if you are using --git-token-path)
Options pour git :
--git-token-path #(Optional) Github Token's path
--git-api-url #(Optional) Github API url
Si vous utilisez github, utilisez le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement
GHE_TOKEN et GH_URL. Si des paires GHE_TOKEN GH_URL et --git-token-path --git-api-url sont fournies, --git-token-path et --git-api-url sont prioritaires.
Exécution de la commande :
# 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
L'utilisation d'une étiquette d'inventaire permet d'ajouter ou de déplacer des étiquettes au sein d'un élément d'inventaire, en ciblant le dernier commit sur une branche ou une autre étiquette.
Options :
--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 d'environnement obligatoires :
GHE_ORG= # Github Organization (required if --org option is not specified).
GHE_REPO= # Github Repository (required if --repo option is not specified).
Variables d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token (Optional if you are using --git-token-path)
Options pour git :
--git-token-path #(Optional) Github Token's path
--git-api-url #(Optional) Github API url
Si vous utilisez github, utilisez le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement
GHE_TOKEN et GH_URL. Si les deux paires GHE_TOKEN GH_URL et --git-token-path --git-api-url sont fournies, --git-token-path et --git-api-url sont prioritaires.
Exécution de la commande :
# 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
Effectue la promotion d'entrées à partir de l'inventaire d'un environnement à un autre. L'environnement source peut être une branche ou une étiquette.
Variables d'environnement obligatoires :
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 d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token (Optional if you are using --git-token-path)
Options pour git :
--git-token-path #(Optional) Github Token's path
--git-api-url #(Optional) Github API url
Si vous utilisez github, utilisez le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement
GHE_TOKEN et GH_URL. Si les deux sont fournis, --git-token-path et --git-api-url sont prioritaires.
Exécution de la commande :
$ 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'
validation de l'inventaire du cacao
Valide les entrées présentes dans un répertoire d'inventaire (ou un fichier JSON). L'environnement (branch) ou le label (tag) du repo d'inventaire peuvent être validés.
Les options à valider sont les suivantes (au moins un des drapeaux doit être utilisé)
- en utilisant l'indicateur "
--environment- qui prend une branche comme valeur et valide toutes les entrées qu'elle contient. - en utilisant l'indicateur '
--label- qui prend la balise comme valeur et valide toutes les entrées qu'elle contient. - en utilisant l'option '
--from-file- qui prend le chemin d'un fichier JSON contenant les entrées de l'inventaire (au format avec trait d'union).
Facultatif :
- Si un nom de fichier inventoryignore personnalisé doit être utilisé, l'indicateur '
--inventory-ignore-file-namepeut être utilisé pour remplacer la valeur par défaut. - Si un répertoire d'inventaire cloné existe déjà et que vous souhaitez que la commande l'utilise, vous pouvez fournir le chemin du répertoire d'inventaire cloné à l'aide de l'option '
--inventory-path
Options obligatoires :
--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 d'environnement (optionnelles et peuvent être utilisées à la place de --org --repo et --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)
Exécution de la commande :
$ cocoa inventory validate \
--org "Github-ID" \
--repo "inventory-repo" \
--git-token-path="$INVENTORY_TOKEN_PATH" \
--label "$latest_tag" \
--inventory-path "${DIRECTORY_NAME}"
inventaire cacao get-delta
Obtenir le delta entre les commits du référentiel d'inventaire. Il est possible d'obtenir les commentaires des pairs dans le delta entre deux commentaires.
Variables d'environnement obligatoires :
GHE_ORG= # Github Organization (required if --org option is not specified).
GHE_REPO= # Github Repository (required if --repo option is not specified).
Variables d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token(Optional if you are using --git-token-path)
Options pour git :
--git-token-path #(Optional) Github Token's path
--git-api-url #(Optional) Github API url
| Option | Description | Type de valeur | Requise ou facultative | Valeur(s) possible(s) / Valeur par défaut / Remarques |
|---|---|---|---|---|
| de-sha | L'engagement de départ pour calculer le delta à partir de | Chaîne | facultatif |
|
| à partir de l'étiquette | L'étiquette à utiliser comme début d'engagement pour calculer le delta à partir de | Chaîne | facultatif |
|
| to-sha | L'engagement final de calculer le delta jusqu'à | Chaîne | facultatif |
|
| à l'environnement | Le commit HEAD de la branche environnement pour calculer le delta jusqu'à | Chaîne | facultatif |
|
| à-étiqueter | L'étiquette indiquant l'engagement final pour calculer le delta jusqu'à | Chaîne | facultatif |
|
| org | Organisation GitHub qui possède le référentiel d'inventaire. | Chaîne | Facultatif si la variable d'environnement GHE_ORG est définie |
|
| référentiel | Nom du référentiel d'inventaire. | Chaîne | Facultatif si la variable d'environnement GHE_REPO est définie |
|
| git-fournisseur | Fournisseur de services de contrôle de version Git. | Chaîne | Facultatif | Valeur par défaut : "github" ' Valeurs possibles : ["github", "gitlab"] |
| Chemin-jeton-git | Chemin du jeton Git à partir duquel le secret doit être lu | Chaîne | Facultatif si la variable d'environnement GHE_TOKEN est définie | Exemple : " path/to/git-token |
| URL-api-git | URL 'API Git | Chaîne | Facultatif | Valeur par défaut : " https://<region>.git.cloud.ibm.com/api/v4 |
| delta | Indicateur pour calculer le delta | Booléen | facultatif | false |
| delta-suppression | Indicateur pour calculer les suppressions delta | Booléen | facultatif | false |
| liste d'inventaire | Indicateur pour calculer la liste d'inventaire complète | Booléen | facultatif | false |
| évaluation par les pairs | Drapeau pour calculer les engagements de l'examen par les pairs | Booléen | facultatif | false |
| chemin d'accès à l'inventaire | Chemin optionnel du répertoire d'inventaire. Si cette condition est remplie, le répertoire d'inventaire n'est pas cloné à l'intérieur de la commande | Chaîne | facultatif | |
| chemin d'accès au fichier d'inventaire ignoré | Chemin d'accès facultatif pour le fichier d'ignorance de l'inventaire | Chaîne | facultatif | |
| chemin d'accès au fichier de l'inventeur précédent | Chemin d'accès facultatif au fichier d'ignorance de l'inventaire du déploiement précédent | Chaîne | facultatif |
Exécution de la commande :
$ 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
mise à jour de l'inventaire du cacao - localisations
Mise à jour de l'emplacement d'une entrée/d'un artefact dans le référentiel d'inventaire.
Variables d'environnement obligatoires :
GHE_ORG= # Github Organization (required if --org option is not specified).
GHE_REPO= # Github Repository (required if --repo option is not specified).
Variables d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token(Optional if you are using --git-token-path)
Options pour git :
--git-token-path #(Optional) Github Token's path
--git-api-url #(Optional) Github API url
| Option | Description | Type de valeur | Requise ou facultative | Valeur(s) possible(s) / Valeur par défaut / Remarques |
|---|---|---|---|---|
| nom | Nom de l'application à laquelle appartient l'artefact | Chaîne | Obligatoire |
|
| org | Organisation GitHub qui possède le référentiel d'inventaire. | Chaîne | Facultatif si la variable d'environnement GHE_ORG est définie |
|
| référentiel | Nom du référentiel d'inventaire. | Chaîne | Facultatif si la variable d'environnement GHE_REPO est définie |
|
| environnement | Nom de l'environnement dans lequel l'entrée est ajoutée. | Chaîne | Facultatif | Défaut : "master" |
| git-fournisseur | Fournisseur de services de contrôle de version Git. | Chaîne | Facultatif | Valeur par défaut : "github" ' Valeurs possibles : ["github", "gitlab"] |
| Chemin-jeton-git | Chemin du jeton Git à partir duquel le secret doit être lu | Chaîne | Facultatif si la variable d'environnement GHE_TOKEN est définie | Exemple : " path/to/git-token |
| URL-api-git | URL 'API Git | Chaîne | Facultatif | Valeur par défaut : " https://<region>.git.cloud.ibm.com/api/v4 |
| emplacement | Emplacement de l'artefact dans d'autres registres, ainsi que l'emplacement de l'artefact sha256 | Chaîne | Facultatif | Exemple : <environment>#<static_name>:<version>@sha256:<sha256_digest>. Ce drapeau peut être fourni plusieurs fois. |
Exécution de la commande :
$ 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
commandes d'incident de cacao
processus incident de cacao
Cette commande traite les résultats d'analyse fournis et crée des incidents dans le référentiel fourni pour chaque vulnérabilité. S'il existe déjà des problèmes pour les paires objet-incident, cela ne crée pas de nouveaux problèmes.
Si --set-grace-period est défini, il crée des problèmes avec le délai de grâce défini, ou met à jour les problèmes existants, afin de disposer d'un délai de grâce.
Le délai de grâce est défini sur 15 jours s'il est activé. Si le délai d'exemption ou de grâce est défini sur un problème d'incident, la case à cocher répertorie le problème, mais ne le marque pas comme une erreur.
Les exceptions sont configurées dans CR VA ou vous pouvez soumettre l'incident ou la CVE pour une approbation d'exemption. S'il est approuvé, vous pouvez éditer le problème d'incident (paramètre Excempt: **true**) et le lier à
la demande approuvée.
Fichiers de résultats d'analyse actuellement pris en charge:
- Container Registry Balayage VA (option
--type va) - CRA Vulnerability Scan (option
--type cra) - Scan CRA « CIS » (option
--type cra-cis) - Rayons X (option
--type xray) - OWASP ZAP (option
--type owasp-zap) - Interface utilisateur OWASP ZAP (option
--type owasp-zap-ui) - Verrou tournant (en option
--type twistlock) - Analyses effectuées par le système CIMS (Container Image Multi-Scanner) (option
--type cims) - Examen par les pairs (option
--type peer-review) - GoLang Scan de sécurité (option
--type gosec) - SonarQube Numérisation (option
--type sonarqube) - Réparer le scan (option
--type mend) - Réparer le scan SAST (option
--type mend-sast) - Tchekhov (option
--type checkov) - CRA Vulnerability Scan for Terraform (option
--type cra-tf) - Analyse de sécurité Terraform (option
--type tfsec) - Scanner Fips (option
--type fips-scanner) - Détecter les secrets (option
--type detect-secrets) - Sysdig (option
--type sysdig) - CycloneDX (option
--type cyclonedx) - Grype (option
--type grype)
Pour plus d'informations sur Container Registry VA et le format des résultats, voir Vulnerability Advisor pour IBM Cloud Container Registry. Pour plus d'informations sur le scanner de vulnérabilité CRA, voir la documentation Configuration de Code Risk Analyzer.
Syntaxe :
$ cocoa incident process \
<options> \
<path to result file>
Options :
--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 d'environnement obligatoires :
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 d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token (Optional if you are using --git-token-path)
Si vous utilisez github, utilisez le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement
GHE_TOKEN et GH_URL. Si les deux sont fournis, --git-token-path et --git-api-url sont prioritaires.
Valeurs renvoyées :
- Si aucun problème n'est détecté ou si tous les problèmes détectés ont un délai d'exemption ou de grâce défini, la commande se ferme avec le statut zéro.
- Si l'un des problèmes détectés n'a pas d'exemption ou de délai de grâce défini, la commande se ferme avec un statut différent de zéro.
- If format == list-La commande répertorie les adresses URL de problème d'incident trouvées ou créées en fonction du fichier de résultats et du sujet.
- If format == json-La commande imprime un fichier JSON contenant un tableau d'objets de constatations (informations de problème supplémentaires) pour chacun des problèmes détectés, créés et fermés automatiquement en fonction du fichier de résultats et du sujet.
- Structure de l'objet JSON de constatations correspondant à un problème:
{
"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
}
Exécution de la commande :
$ 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
processus d'incident de cacao-existant
Cette commande crée des problèmes d'incident dans le référentiel fourni pour les scénarios où un fichier d'analyse n'est pas disponible. Généralement, ces scénarios sont des échecs non liés à la vulnérabilité tels que l'échec du test d'unité,
l'échec de la protection de la branche, l'échec du test d'acceptation et l'échec de la signature d'image. Ces échecs ne seraient pas des vulnérabilités, mais ils seraient un écart par rapport à la situation de conformité. Si des problèmes
existent déjà pour les combinaisons incident-sujet-outil, la commande ne crée pas de nouveaux problèmes. Par défaut, l'évaluation de la gravité high est définie sur les problèmes créés.
Si --set-due-date est défini, la commande crée des problèmes ou met à jour les problèmes existants avec des dates d'échéance. Les dates d'échéance sont calculées à partir du délai de grâce du problème, en fonction de la gravité.
Si l'indicateur --close-resolved-issues est défini, la commande recherche les problèmes ouverts avec le même outil, le même sujet et le même ID d'incident que l'exécution en cours. Si des problèmes sont détectés, alors que --current-status a été transmis en tant que success, la commande ferme ces problèmes.
Si --read-only est défini, la commande ne crée pas de nouveaux problèmes et ne modifie pas les problèmes existants. Les résultats sont traités et les problèmes existants sont collectés pour les résultats. La sortie contient la
liste des URL des questions qui sont censées être suivies dans les questions si le mode lecture seule n'est pas activé.
Syntaxe :
cocoa incident process-legacy \
<options>
Options :
--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 D'ENVIRONNEMENT :
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 vous utilisez github, vous pouvez utiliser le champ --git-token-path pour définir votre jeton GitHub et le champ --git-api-url pour définir l' URL l'API GitHub Enterprise ( https://<region>.git.cloud.ibm.com/api/v4 par défaut) au lieu des variables d'environnement GHE_TOKEN et GH_URL. Si les deux paires GHE_TOKEN GH_URL et --git-token-path --git-api-url sont toutes deux fournies,
--git-token-path et --git-api-url sont prioritaires.
Valeurs renvoyées :
- La commande répertorie les URL de problème d'incident trouvées ou créées si
--current-statusa été transmis en tant quefailure. La commande ferme également les URL de problème d'incident correspondant à la même combinaison incident-outil-sujet si le--current-statusa été transmis en tant quefailure. - En mode
--read-only, la commande répertorie les détails des incidents trouvés si aucun problème n'est détecté pour cet incident. - Si aucun problème n'est détecté ou si tous les problèmes détectés ont un libellé d'exemption défini, la commande se ferme avec le statut zéro.
- Si aucun libellé d'exemption n'est défini pour l'un des problèmes détectés, la commande prend fin avec un statut différent de zéro.
- En mode
--read-only, si un nouvel incident sans problème est détecté, la commande se ferme avec un statut différent de zéro. - If format == list-La commande répertorie les URL de problème d'incident trouvées ou créées si
--current-statusa été transmis en tant quefailure. - If format == json-La commande imprime un fichier JSON contenant un tableau d'objets de constatations (informations de problème supplémentaires) pour chacun des problèmes détectés, créés et fermés automatiquement en fonction du fichier de résultats et du sujet.
- Structure de l'objet JSON de constatations correspondant à un problème:
{
"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
}
Exécution de la commande :
$ 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
évaluation de l'incident de cacao
Evaluer le statut des problèmes en fonction de due_date et de l'étiquette d'exemption et générer les résultats des problèmes.
Syntaxe :
$ cocoa incident evaluate \
<options> \
<filePath>
Options :
--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 d'environnement obligatoires :
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 d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token (Optional if you are using --git-token-path)
Si vous utilisez github, utilisez le champ --git-token-path pour définir votre Token GitHub et le champ --git-api-url pour définir l' URL # GitHub Enterprise API au lieu des variables d'environnement GHE_TOKEN et GH_URL. Si les deux sont fournis, --git-token-path et --git-api-url sont prioritaires.
Valeurs renvoyées :
- Si tous les problèmes détectés ont un délai d'exemption ou de grâce défini, la commande prend fin avec le statut zéro.
- Si l'un des problèmes détectés n'a pas d'exemption ou de délai de grâce défini, la commande se ferme avec un statut différent de zéro.
- Tableau JSON de constatations.
- Structure de l'objet JSON de constatations correspondant à un problème.
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
}
Exécution de la commande :
$ cocoa incident evaluate \
--org \
--repo \
--git-provider \
--git-token-path \
--filePath
incident de cacao état de mise à jour
Mettre à jour l'état de la question de l'incident à open ou close en fonction de l'état actuel de l' URL de la question de l'incident spécifiée.
Extrait de code :
$ cocoa incident update-state \
<options>
Options :
Spécifiez les variables et valeurs facultatives suivantes pour fournir plus de détails sur votre problème d'incident CoCa.
--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 d'environnement obligatoires :
Vous devez fournir les variables d'environnement suivantes et leurs valeurs si vous n'avez pas utilisé les variables facultatives --org et --repo précédemment.
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 votre git-provider est github, utilisez la variable d'environnement suivante :
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)
Vous pouvez également utiliser les variables facultatives --git-token-path et --git-api-url pour fournir le chemin d'accès au jeton Github et les valeurs d' URL s de l'API. Les variables optionnelles ont une priorité
plus élevée lorsque les deux sont fournies, --git-token-path et --git-api-url sont prioritaires.
Valeurs renvoyées :
- La commande se termine avec le code de retour
0si la mise à jour de l'état de la question est réussie. - La commande se termine avec le code de retour
1si la mise à jour de l'état de la question n'est pas réussie.
Exécution de la commande :
$ cocoa incident update-state \
--org \
--repo \
--git-provider \
--git-token-path \
--git-api-url \
--issue-url \
--comment \
--to-state
commandes de verrouillage de cacao
Télécharger les preuves et les pièces jointes sur Cloud Object Storage à des fins d'archivage. Elle est effectuée automatiquement lorsque les variables d'environnement suivantes sont présentes:
COS_ENDPOINT: noeud final où le compartiment Cloud Object Storage est accessible.COS_BUCKET_NAME: nom du compartiment Cloud Object Storage.COS_API_KEY: clé d'API IBM Cloudou clé d'API d'ID de servicequi dispose d'un accès en écriture au compartiment Cloud Object Storage.BACKUP_COS_ENDPOINT: noeud final où le compartiment Cloud Object Storage est accessible.BACKUP_COS_BUCKET_NAME: Nom du seau d' BackupCloud Object Storage.BACKUP_COS_API_KEY: Une clé API d' IBM Cloud ou une clé API d'ID de service qui dispose d'un accès en lecture au compartiment d' Cloud Object Storage.IBM_AUTH_ENDPOINT: noeud final où la clé d'API peut être utilisée pour générer un jeton IAM(valeur par défaut:https://iam.cloud.ibm.com/identity/token){: external}.
Cacao locker asset add < URI >
Ajoute un actif au casier d'informations collectées. Il affiche les informations relatives à l'actif si l'actif spécifié existe.
Options :
--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)
Utilisez l'indicateur --dry-run si vous ne souhaitez rien ajouter au casier et que vous souhaitez vérifier ce qui doit être ajouté au casier.
Le type de l'actif peut être spécifié avec l'indicateur --type.
Le paramètre uri peut être n'importe quel URIvalide, mais quelques formats sont traités spécialement:
- Si le schéma
uriestdocker(c'est-à-dire qu'il commence pardocker://), la commande utilise l'indicateur--type=image - Si le schéma
uriestgitou que le chemin se termine par un suffixe.git, la commande utilise l'indicateur--type=commit
Lorsque type est image ou commit, l'URI doit correspondre aux modèles suivants:
- Pour
image, l'URI doit contenir le résumé de l'image (par exemple,docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777)
Lorsque type est autre chose que image ou commit, l'indicateur --type doit être explicitement transmis.
Des détails supplémentaires peuvent être ajoutés à l'actif à l'aide de l'indicateur --details, qui accepte les paires key=value.
Des détails supplémentaires sur l'origine de l'actif peuvent être fournis à l'aide de l'indicateur --origin, qui accepte les paires key=value.
Certaines variables d'environnement sont automatiquement sélectionnées pour ajouter des détails sur l'origine de l'actif:
- Le paramètre
TOOLCHAIN_CRNest identique à la spécification de--origin toolchain_crn=$TOOLCHAIN_CRN - Le paramètre
PIPELINE_IDest identique à la spécification de--origin pipeline_id=$PIPELINE_ID - Le paramètre
PIPELINE_RUN_IDest identique à la spécification de--origin pipeline_run_id=$PIPELINE_RUN_ID
L'indicateur --date peut être utilisé pour remplacer la date de création de l'actif (par défaut, l'heure en cours). Il accepte toute chaîne acceptée par Date.parse.
Les actifs apparentés peuvent être ajoutés à l'aide de l'indicateur --related (pour plusieurs actifs apparentés, l'indicateur peut être spécifié plusieurs fois). Les actifs peuvent être spécifiés avec leur ID interne ou par leur
URI. Tous les identifiants des actifs liés (de l'arbre entier jusqu'au premier actif) seront ajoutés au champ parents dans le json de l'actif.
Par défaut, le format id (indicateur --format ) imprime l'ID interne de l'actif créé. Avec le format json, l'ensemble de l'actif va être imprimé, en tant qu'objet JSON.
Exécution de la commande permettant d'ajouter une validation Git:
$ cocoa locker asset add 'https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee' \
--details tag=v1.2.3
Exemple de sortie :
b5bbbbb55555b5555b555b55b5555bb5b555b5b555bb5b55bbb5555fbbbbb
Exécution de la commande permettant d'ajouter une image 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
Exemple de sortie :
{
"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"
]
}
Exécution de la commande permettant d'ajouter une édition:
$ 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
Exemple de sortie :
36d8852458adf44ab236c99beb69d7070d461d39480bc6b8ef7c771bee93cb49%
Cacaoyer locker asset get < URI >
Extrait un actif du casier d'informations collectées.
Options :
--type # Type of the asset
--version # Show version number
--format # Output format ("id", "json", default: "id")
Exécutez la commande suivante :
cocoa locker asset get release:my-app@v1.2.3 --format json
Exemple de sortie :
{
"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
Exemple de sortie :
{
"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
Exemple de sortie :
{
"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": []
}
Récapitulatif des actifs du casier de cacao get < URI >
Collecte un récapitulatif des informations collectées pour l'actif donné à partir du casier d'informations collectées.
Options :
--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.
Exécutez la commande suivante :
cocoa locker asset summary get https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee \
--scope 11a1aa11-1a11-11a1-aa11-a11a1a1111a1 \
--environment prod \
--service-environment prod
Exécutez la commande pour récupérer le dernier résumé des preuves à l'exclusion de celui de la portée transmise à l'aide de --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 >
Répertorie les actifs associés à partir du casier d'informations collectées.
Options :
--type # Type of the asset
--version # Show version number
--format # Output format ("id", "json", default: "id")
Exécutez la commande suivante :
cocoa locker asset list release:my-app@v1.2.3 --format id --type generic
Exemple de sortie :
1122211111122222111111111111111111111111111111666661111111111111
2222222222555552222222222222222333333222222222222222222222222222
3333333337777773333333333333333333333333333333344444433333333333
Exécutez la commande en utilisant le format json combiné à jq:
cocoa locker asset list release:my-app@v1.2.3 --format json --type generic | jq -r '.[].uri'
Exemple de sortie :
release:my-app@v1.2.3
docker://us.icr.io/foo/bar:v1.2.3@sha256:0000000011111111222222223333333344444444555555556666666677777777
https://github.com/foo/bar.git#aaaaaaaabbbbbbbbccccccccddddddddeeeeeeee
ajout de preuves de casier de cacao
Ajoute des informations collectées au casier d'informations collectées.
Le casier d'informations collectées peut être spécifié à l'aide d'indicateurs. Pour plus d'informations, voir Commandes de casier de cacao.
La configuration de l'evidence peut être effectuée à l'aide des indicateurs suivants :
--evidence-type: chaîne qui identifie le type des informations collectées (par exemple,com.ibm.unit_test)--evidence-type-version: chaîne qui identifie le schéma des détails des informations collectées (par exemple,1.0.0,v2, etc.)
Certains indicateurs facultatifs peuvent également être spécifiés:
--date: date de création des informations collectées (par défaut, l'horodatage en cours), accepte une chaîne qui peut être analysée avecDate.parse.--details: les détails des informations collectées peuvent être spécifiés sous forme de paireskey=value, l'indicateur peut être spécifié plusieurs fois (par exemple,--details result=success --details foo=bar, etc.).--origin: des détails sur l'origine des informations collectées peuvent être spécifiés à l'aide de paireskey=value, par exemple--origin job_id=123, etc.--asset: indique les actifs (par leur URI ou leur ID interne) qui sont pertinents pour les informations collectées. Voir les commandescocoa locker asset. L'indicateur peut être spécifié plusieurs fois. L'actif doit déjà être présent dans le casier.--attachment: indique les fichiers joints aux informations collectées. Chaque pièce jointe doit pointer vers un fichier existant et chaque nom de pièce jointe doit être unique (c'est-à-dire que--attachment a/foo.json --attachment b/foo.jsonn'est pas autorisé).--attachment-url: indique les URL des pièces jointes qui sont déjà stockées dans le casier d'informations collectées. Chaque URL doit pointer vers une pièce jointe unique, afin d'éviter les doublons. Cet indicateur peut être spécifié plusieurs fois pour inclure plusieurs URL.--issue: liste des URL de problème, qui peut être utilisée pour suivre les activités liées aux résultats. L'indicateur peut être transmis plusieurs fois.--findings-path: utilisez ce chemin pour transmettre le tableau de constatations JSON qui est la sortie de la commande de processus d'incident.--scope: identificateur unique qui peut être utilisé pour corréler des informations collectées provenant de plusieurs sources.--comment-on-issues: ajoutez un commentaire avec des détails sur les informations collectées créées aux problèmes d'incident fournis à l'aide de l'indicateur--issue- Etant donné que les problèmes peuvent se produire sous
github, le fournisseur est analysé à partir des URL de problème - Chaque problème doit provenir du même référentiel
- Les URL de problème doivent correspondre au modèle suivant:
https://<host>/<owner>/<name>/issues/<issue number>-pourgithub
- Variables d'environnement requises pour accéder au référentiel de problèmes:
- si les URL pointent vers des problèmes
github:GH_URL: facultatif, la valeur par défaut esthttps://<region>.git.cloud.ibm.com/api/v4GHE_TOKEN
- si les URL pointent vers des problèmes
- Etant donné que les problèmes peuvent se produire sous
Informations d'étiquette pour une pièce jointe en preuve JSON :
Chaque section de pièce jointe dans le JSON de preuve possède une propriété label pour contenir les métadonnées sur la pièce jointe. Une valeur par défaut est attribuée à l'étiquette et cette valeur dépend du fait que l'entrée de la pièce
jointe est un chemin de fichier ou une URL de pièce jointe. Passez une étiquette personnalisée en ajoutant ::label=<value> à la fin du chemin de la pièce jointe ou de l’URL de la pièce jointe.
Exemples :
-
--attachment path/to/attachment::label=label_name- Crée une pièce jointe en utilisant le fichier danspath/to/attachmentet définit la valeur de l'étiquette surlabel_name. Si l'étiquette n'est pas transmise, le nom du fichier est utilisé comme valeur d'étiquette par défaut. -
--attachment-url url/of/attachment::label=label_name- Utilise la pièce jointe spécifiée dans leattachment-urlet définit la valeur de l'étiquette surlabel_name. Si l'étiquette n'est pas transmise, la valeur de l'étiquette est une chaîne vide par défaut.
Certaines variables d'environnement sont automatiquement sélectionnées pour ajouter des détails sur l'origine de l'actif:
- Le paramètre
TOOLCHAIN_CRNest identique à la spécification de--origin toolchain_crn=$TOOLCHAIN_CRN - Le paramètre
PIPELINE_IDest identique à la spécification de--origin pipeline_id=$PIPELINE_ID - Le paramètre
PIPELINE_RUN_IDest identique à la spécification de--origin pipeline_run_id=$PIPELINE_RUN_ID
Le comportement de la commande peut être modifié à l'aide des indicateurs suivants:
--dry-run: n'ajoute rien au casier, mais indique ce qui sera ajouté.--cache-mode: similaire à dry-run. N'ajoute pas réellement les preuves au casier, mais ajoute les pièces jointes (le cas échéant) au casier. Affiche les informations collectées qui seraient ajoutées.--format: contrôle le format de sortie,idoujson(idpar défaut).
Exécutez la commande suivante pour sauvegarder les résultats pour 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
Exécutez la commande suivante pour sauvegarder les résultats du test d'unité:
$ 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>
Exécutez la commande suivante pour créer de nouvelles informations collectées à l'aide d'une pièce jointe qui existe déjà dans le casier d'informations collectées:
$ 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
Exécutez la commande pour enregistrer les résultats des tests unitaires et ajouter une étiquette personnalisée à la pièce jointe :
$ 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
cacaoyer locker preuve get < id_preuve >
Extrait un élément de preuve du casier.
Options :
--version # Show version number
--format # Output format ("json", default: "json")
Exécutez la commande suivante :
cocoa locker evidence get 0000000011111111222222223333333344444444555555556666666677777777
Exemple de sortie :
{
"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"
}
]
}
Récapitulatif des informations collectées du casier de cacao < asset-id >
Renvoie le récapitulatif des informations collectées pour un ou plusieurs actifs. Lorsqu'aucun actif n'est spécifié sur la ligne de commande, les actifs sont lus à partir de stdin.
Indicateurs facultatifs :
--latest-only: supprime les informations collectées si des informations collectées plus récentes sont disponibles pour un actif (truepar défaut, défini surfalsepour désactiver ce comportement)--scope: prend en compte les informations collectées qui ont la portée spécifiée uniquement (voirevidence add --scope), qui peuvent être spécifiées plusieurs fois--linked-scope: prend en compte les preuves qui ont la portée liée spécifiée comme portée. En outre, les ajoute à la propriété linked-scopes dans le résumé des preuves renvoyé. Peut être spécifié plusieurs fois.--check-immutable-storage: vérifie si chaque preuve est également présente dans un compartiment Cloud Object Storage et est protégée par une période de conservation d'au moins 365 jours. Ajoute des informations collectéescom.ibm.immutable_storageau récapitulatif.- Voir la section
cocoa lockerpour savoir comment configurer le compartiment Cloud Object Storage.
- Voir la section
--dry-run: a un effet lorsqu'il est associé à--check-immutable-storage. Si elles sont utilisées, les informations collectéescom.ibm.immutable_storagesont uniquement ajoutées au récapitulatif, mais elles ne sont pas téléchargées dans le casier d'informations collectées.--clone-dir: Un paramètre optionnel pour déterminer le chemin de clonage du référentiel Evidence, par défaut il clonera le répertoire repo /tmp--initialized: Indicateur facultatif qui suppose que le casier de preuves est déjà cloné à l'emplacement fourni--clone-dirou/tmp/.--evidences-path: Pour créer un résumé à partir des preuves locales stockées dans un cache, ce champ est utilisé pour fournir le chemin du fichier où toutes les preuves sont présentes dans le tableau.
Exécutez la commande suivante :
$ 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
Exemple lu à partir 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
Cocoa Locker Attachment get < ID-pièce jointe >
Extrait une pièce jointe précédemment téléchargée avec cocoa locker evidence add.
Options :
--version # Show version number
Exécutez la commande suivante pour télécharger la pièce jointe:
$ 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
Exemple de sortie de téléchargement de pièce jointe:
{
...
"attachments": [
{
"hash": "9a841ef856a5de813dbe440b102b9bff3ca1831630292cff7323c557704f386b",
"url": "https://s3.private.us-south.cloud-object-storage.appdomain.cloud/test/assets/9a841ef856a5de813dbe440b102b9bff3ca1831630292cff7323c557704f386b/index.json",
"label": "unit-test"
}
],
...
}
Exécutez la commande suivante pour récupérer la pièce jointe :
cocoa locker attachment get 5aa5555aa55aa55a555aa5a5aa555555aaaa5aa5aa5555a55a5aa5aa5a5aaaaa
vérification des casiers à cacao
Vérifie la configuration et les paramètres requis du casier.
Actuellement, seul le casier basé sur Cloud Object Storage a une configuration requise:
- Etant donné que chaque preuve doit être conservée pendant au moins un an, le compartiment Cloud Object Storage doit être protégé par une règle de conservation. La durée de conservation par défaut doit être supérieure ou égale à 365 jours.
Pour plus d'informations, voir Commandes de casier de cacao.
Variables d'environnement obligatoires :
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
Exécutez la commande suivante :
cocoa locker check --provider='cos'
Vérification des preuves de casier de cacao
Validez les informations collectées requises en fonction des vérifications présentes dans le fichier de configuration cocoa locker evidence check.
Variables d'environnement obligatoires :
Options :
--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
Exécutez la commande suivante :
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>`
casier à cacao collecte de preuves
Recueillir les preuves et les conserver dans le casier. Cette commande est l'implémentation sous-jacente du script shell collect-evidence.
Utilisation
cocoa locker evidence collect [OPTIONS]
Paramètres obligatoires
-
--tool-type <string>Identifiant de l'outil (par exemple, "sonarqube", "cra", "owasp-zap", "detect-secrets") -
--evidence-type <string>Type de preuve (par exemple, " com.ibm.static_scan ", " com.ibm.unit_tests ", " com.ibm.detect_secrets ") -
--assets <key:type>Spécifications des actifs au format "key:type". Peut être spécifié plusieurs fois pour plusieurs actifs. Exemple :--assets app-repo:repoou--assets my-image:artifact -
--status <string>Statut de la preuve :success|failurepending -
--pipeline-run-id <string>Identifiant d'exécution du pipeline -
--pipeline-namespace <string>Espace de noms du pipeline :pr|ci|cd|cc -
--incident-org <string>Git organisation pour le dépôt des incidents -
--incident-repo <string>Nom du référentiel d'incidents
Paramètres requis pour la plateforme tekton.
-
--pipeline-id <string>Identifiant de la canalisation -
--task-name <string>Nom de la tâche dans le pipeline -
--step-name <string>Nom de l'étape dans la tâche
Paramètres facultatifs
-
--attachment <path>Fichiers joints tels que les résultats de l'analyse (peuvent être spécifiés plusieurs fois) -
--attachment-url <url>URL des pièces jointes préchargées (peut être spécifié plusieurs fois) -
--meta <key=value>Paires clé/valeur des métadonnées (peuvent être spécifiées plusieurs fois) -
--additional-comment <string>Commentaire supplémentaire à inclure dans les questions relatives aux incidents -
--show-tableAfficher les détails de la preuve sous forme de tableau -
--dry-runPrévisualisation sans enregistrement dans le casier -
--cache-modeAjouter les pièces jointes uniquement, ignorer les preuves elles-mêmes -
--evidence-reuseActiver la fonction de réutilisation des preuves -
--evidence-per-assetCréer des preuves pour chaque actif séparément -
--upload-logs <boolean>Télécharger les journaux en tant que pièces jointes si aucune autre pièce jointe n'est fournie (par défaut : true) -
--incident-git-provider <string>Git fournisseur :github|gitlab(par défaut : github) -
--incident-git-token-path <path>Chemin d'accès au jeton d'authentification Git -
--incident-git-api-url <url>Base personnalisée Git API URL -
--incident-labels <string>Étiquettes à appliquer aux incidents (peuvent être spécifiées plusieurs fois) -
--incident-assignees <string>GitHub/GitLab les noms d'utilisateur à attribuer aux incidents (peuvent être spécifiés plusieurs fois) -
--comment-on-issuesRelier les éléments de preuve supplémentaires sur les questions d'incidents -
--pr-issue-managementPermettre la liaison et la gestion des demandes d'extraction vers les problèmes -
--opt-in-auto-closePermettre la clôture automatique des incidents s'ils sont résolus -
--custom-exempt-label <string>Étiquette indiquant l'exemption des exigences de conformité -
--platform <string>Plate-forme utilisée pour récupérer les journaux :tekton|github-actions(par défaut : tekton) -
--root-pipeline-run-id <string>Identifiant de la canalisation racine -
--toolchain-crn <string>Nom de ressource cloud (CRN) de la chaîne d'outils -
--deployment-prefix <string>Le préfixe de déploiement -
--target-environment <string>Environnement cible (par défaut : prod) -
--target-environment-purpose <string>Objectif de l'environnement cible -
--collect-evidence-in-pr <string>Recueillir des preuves dans le contexte des relations publiques :none|success|all -
--pr-html-url <string>URL à la demande d'extraction associée -
--base-branch <string>Branche de base pour la demande d'extraction -
--branch <string>Nom de branche -
--gh-org <string>GitHub l'organisation où le pipeline s'exécute (spécifique à la plateforme d'actions github). -
--gh-repo <string>GitHub dépôt où le pipeline s'exécute ( spécifique à la plateforme d'actions github ). -
--gh-server-url <string>GitHub Actions : Serveur URL (spécifique à la plateforme d'actions github). -
--gh-repository-url <string>GitHub Actions : Dépôt complet URL (spécifique à la plateforme d'actions github). -
--gh-run-attempt <string>GitHub Actions : Numéro de tentative d'exécution du flux de travail (spécifique à la plateforme d'actions github). -
--run-id <string>Identificateur d'exécution -
--xforce-api-key <string>Clé API pour IBM X-Force Exchange -
--xforce-password <string>Mot de passe API pour IBM X-Force Exchange -
--xforce-url <string>IBM X-Force Exchange API URL
Exemple
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"
réutilisation des preuves des casiers à cacao
Trouver et réutiliser les preuves existantes pour l'actif donné. Cette commande est l'implémentation sous-jacente du script shell check-evidence-for-reuse.
Utilisation
cocoa locker evidence reuse [OPTIONS]
Paramètres obligatoires
-
--tool-type <string>Identifiant de l'outil (par exemple, "sonarqube", "cra", "owasp-zap") -
--evidence-type <string>Type de preuve (par exemple, " com.ibm.static_scan ", " com.ibm.unit_tests ") -
--assets <key:type>Spécifications des actifs au format "key:type" -
--pipeline-run-id <string>Identifiant d'exécution du pipeline -
--pipeline-namespace <string>Espace de noms du pipeline :pr|ci -
--incident-org <string>Git organisation pour le dépôt des incidents -
--incident-repo <string>Nom du référentiel d'incidents
Paramètres requis pour la plateforme tekton.
-
--task-name <string>Nom de la tâche dans le pipeline -
--step-name <string>Nom de l'étape dans la tâche -
--pipeline-id <string>Identifiant de la canalisation
Paramètres facultatifs
-
--meta <key=value>Métadonnées pour la validation des preuves trouvées pour la réutilisation (peuvent être spécifiées plusieurs fois) -
--evidence-validity-period <number>Période de validité en heures (par défaut : 24, max : 720 heures / 30 jours) -
--evidence-reuse-for-failureActiver la réutilisation des preuves échouées (par défaut : false) -
--dry-runMode de prévisualisation sans réutilisation des preuves -
--show-tableAfficher les détails de la preuve sous forme de tableau -
--format <string>Format de sortie :json(par défaut : json) -
--incident-git-provider <string>Git fournisseur :github|gitlab(par défaut : github) -
--incident-git-token-path <path>Chemin d'accès au jeton d'authentification Git -
--incident-git-api-url <url>Base personnalisée Git API URL -
--incident-assignees <string>GitHub/GitLab les noms d'utilisateur à attribuer aux incidents (peuvent être spécifiés plusieurs fois) -
--custom-exempt-label <string>Étiquette indiquant l'exemption des exigences de conformité -
--deployment-prefix <string>Le préfixe de déploiement -
--root-pipeline-run-id <string>Identifiant de la canalisation racine -
--toolchain-crn <string>Nom de ressource cloud (CRN) de la chaîne d'outils -
--platform <string>Plate-forme utilisée pour récupérer les journaux :tekton|github-actions(par défaut : tekton) -
--gh-org <string>GitHub organisation où le pipeline s'exécute ( spécifique à la plateforme d'actions github ) -
--gh-repo <string>GitHub dépôt où le pipeline s'exécute ( spécifique à la plateforme d'actions github ) -
--run-id <string>Identificateur d'exécution -
--environment <string>Environnement (par défaut : dev) -
--serviceEnvironment <string>Environnement de service (par défaut : dev)
Exemple
Utilisation de base :
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"
Avec une période de validité personnalisée et une validation des métadonnées :
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"
Réutiliser les preuves qui ont échoué :
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"
Code de sortie
0: Preuves trouvées et réutilisées avec succès1: Aucune preuve réutilisable n'a été trouvée ou la validation a échoué
commandes de tekton de cacao
cocoa tekton get-pipeline-logs
Crée des fichiers journaux pour chaque étape à partir d'une exécution de pipeline et sauvegarde ces fichiers journaux dans un répertoire. Utilisez les variables d'environnement (PIPELINE_ID, PIPELINE_RUN_ID) ou remplacez
les variables d'environnement par des indicateurs explicites (--pipeline-id, --pipeline-run-id). Les fichiers journaux peuvent également être extraits au niveau par tâche et par étape en fournissant des indicateurs
--task-name et --step-name.
Si --task-name est fourni, la commande tente d'extraire et de créer les fichiers journaux pour chaque étape pour le nom de tâche indiqué.
Si --step-name est fourni avec --task-name, la commande crée le fichier journal pour l'étape spécifique de l' task-name fournie. --step-name sans la signature de commande --task-name n'est pas valide.
Options :
-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 d'environnement obligatoires :
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
Exécution de la commande :
$ cocoa tekton get-pipeline-logs \
--output-dir=<output-dir> \
--pipeline-id=<pipeline-id> \
--pipeline-run-id=<pipeline-run-id> \
--use-task-ref
Commandes de commentaire de cacao
ajouter un commentaire de cacao
Ajoute un commentaire à une demande de problème ou d'extraction dans GitHub.
Options :
--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 d'environnement obligatoires :
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 d'environnement requises, si vous utilisezGitHub:
GHE_TOKEN= # Github Enterprise API Token (Optional if you are using --git-token-path)
Si vous utilisez github, utilisez le champ --git-token-path pour définir votre Token GitHub et utilisez le champ --git-api-url pour définir l' URL l'API GitHub Enterprise au lieu des variables d'environnement
GHE_TOKEN et GH_URL. Si des propriétés d'environnement et des paramètres de ligne de commande sont fournis, --git-token-path et --git-api-url sont prioritaires.
Exécution de la commande :
$ cocoa comment add --id 1 \
--content "This is a test comment" \
--type pr \
--git-provider github \
--org <github-organization> \
--repo <github-repo-name>
commandes d'étiquettes de cacao
label cacao ajouter
Ajoute une ou plusieurs étiquettes aux demandes d'extraction dans GitHub ou GitLab.
Options :
--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 d'environnement obligatoires :
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 d'environnement requises pour GitHub:
GHE_TOKEN= # Github Enterprise API Token (Optional if you are using --git-token-path)
Si vous utilisez GitHub, la variable d'environnement suivante est nécessaire :
| Variable | Description |
|---|---|
GHE_TOKEN |
Le jeton de l'API d' GitHub Enterprise. Facultatif si vous utilisez l'option --git-token-path. |
Options de la ligne de commande :
Vous pouvez également utiliser les options de ligne de commande suivantes pour vous authentifier :
| Options de la ligne de commande | Description |
|---|---|
--git-token-path |
Définissez votre jeton « GitHub ». |
--git-api-url |
Définir l' URL l'API GitHub Enterprise |
Si des propriétés d'environnement et des paramètres de ligne de commande sont fournis, les options --git-token-pat h et --git-api-url sont prioritaires.
Exemple : Ajout d'une étiquette à une demande de retrait
Vous pouvez ajouter un label à une pull request en exécutant la commande suivante :
$ cocoa label add --id 1 \
--label "deployed" \
--type pr \
--git-provider github \
--org <github-organization> \
--repo <github-repo-name>
liste de commentaires sur les demandes de modification concernant le cacao
Liste tous les commentaires relatifs à une demande de changement spécifique.
Options :
Remarque :
--last» doit être un nombre non négatif.--beforeet--afteracceptent les dates au format ISO 8601 et ne peuvent pas être dans le futur.--beforeet--after, la date de--beforedoit être supérieure à celle de--after.--before,--after), puis--lastpour limiter les résultats.Variables d'environnement requises, si vous utilisez le fournisseur ServiceNow v3:
Variables d'environnement supplémentaires, si vous utilisez le fournisseur ServiceNow v3:
Variables d'environnement requises pour le fournisseur GitLab:
Variables d'environnement requises pour le fournisseur GitHub Enterprise:
Exécution de la commande :
# 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