Spécification de commande
La spécification de commande contient les commandes et les paramètres de l'interpréteur de commandes exécutés lors d'un déploiement. La spécification de commande est écrite en YAML. Le contenu du fichier peut être inséré ou la spécification peut être stockée dans un référentiel du registre d'artefacts.
Pour exécuter un fichier binaire qui n'est pas préinstallé par Oracle, vous devez le télécharger directement dans le dossier racine ou le télécharger dans le dossier de l'espace de travail, puis le déplacer dans le dossier racine avant de l'exécuter.
La spécification de commande se compose des sections suivantes :
- Configuration des variables d'environnement.
- Artefacts d'entrée.
- Étapes à exécuter dans l'ordre.
Syntaxe de spécification de commande
version: 0.1
component: command
timeoutInSeconds: 10000
shell: bash
failImmediatelyOnError: true
env:
variables:
key: "value"
key: "value"
vaultVariables:
key: "secret-id"
inputArtifacts:
- name: artifact-name
type: GENERIC_ARTIFACT
artifactId: "artifact-ocid"
registryId: OCID of the Artifact Registry
path: path of the artifact in the Registry
version: version of the artifact
location: target-location
- name: artifact-name
type: URL
url: downloadable link
location: target-location
steps:
- type: Command
name: step-name
shell: shellType
timeoutInSeconds: 650
failImmediatelyOnError: true
command: command
onFailure:
- type: Command
command: |
command
command
timeoutInSeconds: 400
- type: Command
name: step-name
command: |
command
command
command
onFailure:
- type: Command
command: |
command
timeoutInSeconds: 400
Paramètres de spécification de commande
Voici la liste des paramètres de la spécification de commande et leur description :
Paramètre | Description |
---|---|
version |
Obligatoire. Indique la version de la spécification de commande. Une version manquante ou non valide entraîne l'échec de l'étape d'interpréteur de commandes. La valeur prise en charge est |
component |
Obligatoire. Indique un composant spécifique dans DevOps. Une valeur manquante ou non valide entraîne l'échec de l'étape. La valeur prise en charge est |
timeoutInSeconds |
Facultatif. Indique la temporisation pour l'ensemble du fichier de spécification de commande. Chaque étape peut également avoir sa propre valeur de temporisation. Si aucune valeur n'est spécifiée, la valeur par défaut, 8 heures, est utilisée. La valeur maximale autorisée est 8 heures. |
shell |
Facultatif. Indique l'interpréteur de commandes à utiliser au niveau global de la spécification de commande. Cette valeur peut éventuellement être remplacée au niveau de l'étape. Les valeurs autorisées sont |
failImmediatelyOnError
|
Facultatif. Indique si le déploiement doit continuer si l'une des commandes de l'étape échoue avec une valeur de sortie différente de zéro. Si vous ne spécifiez pas de valeur, la valeur par défaut est false et l'étape continue. Les valeurs autorisées sont true et false . OCI recommande de régler la valeur de cet attribut à true . |
env |
Facultatif. Vous pouvez définir des variables personnalisées. Trois types de variable sont pris en charge :
|
inputArtifacts |
Facultatif. Sert à définir une liste des artefacts d'entrée requis pour exécuter l'étape d'interpréteur de commandes courante. Prend en charge les artefacts génériques du registre d'artefacts. Les paramètres sont les suivants :
Note : Pour le type d'artefact d'entrée |
steps |
Obligatoire. Cette section définit une liste d'étapes à exécuter.
|
Types d'étape
Commande
Nom de l'attribut | Description |
---|---|
command |
Les commandes à une seule ligne et à plusieurs lignes sont prises en charge. Toutes les commandes spécifiées dans une étape sont exécutées dans la même session de l'interpréteur de commandes. Selon la valeur de steps/*/shell , il peut s'agir de commandes shell ou bash. L'interruption immédiate n'est pas activée. Pour que l'étape réussisse, la sortie de la dernière commande d'une étape est prise en compte. Si le code de sortie de la dernière commande est 0, l'étape est considérée comme réussie. |
timeoutInSeconds (Facultatif) |
Indique la temporisation de l'étape. Si elle n'est pas indiquée, la valeur est héritée du paramètre timeoutInSeconds global. La valeur maximale autorisée est 8 heures. |
shell (Facultatif) |
Indique le type d'interpréteur de commandes de l'étape courante. Si elle n'est pas spécifiée, la valeur est héritée du paramètre shell global. Les valeurs autorisées sont /bin/sh et shell . |
onFailure (Facultatif) |
Liste d'étapes à exécuter en cas d'échec pour quitter correctement l'étape d'interpéteur de commandes. Elles sont exécutées si l'étape correspondante échoue, et sont suivies de la sortie de la spécification de commande. La gestion de l'échec n'a aucune incidence sur le statut de l'étape d'interpréteur de commandes. Si l'une des étapes échoue, l'étape d'interpréteur de commandes garde le statut |
failImmediatelyOnError (Facultatif) |
Indique si le déploiement doit continuer si l'une des commandes de l'étape échoue avec une valeur de sortie différente de zéro. Si vous ne spécifiez pas de valeur, la valeur par défaut est false et l'étape continue. Les valeurs autorisées sont true et false . OCI recommande de régler la valeur de cet attribut à true . La valeur de l'attribut |
Variables de système prédéfinies
DevOps fournit un jeu de variables de système prédéfinies avec des valeurs par défaut que vous pouvez utiliser dans la spécification de commande.
Variable | Description |
---|---|
OCI_DEPLOYMENT_ID |
OCID du déploiement courant. |
OCI_PIPELINE_ID |
OCID du pipeline de déploiement courant. |
OCI_RESOURCE_PRINCIPAL_RPST |
Jeton du principal de ressource. |
OCI_RESOURCE_PRINCIPAL_VERSION |
Version du principal de ressource. |
OCI_CLI_AUTH |
Authentification CLI OCI préconfigurée pour l'utilisation du principal de ressource. |
OCI_RESOURCE_PRINCIPAL_REGION |
Région du principal de ressource. |
OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM |
Chemin de la clé privée du principal de ressource. |
Exemple de spécification de commande
Exemple : Créer un espace de noms OKE.
version: 0.1
component: command
timeoutInSeconds: 6000
shell: bash
steps:
- type: Command
timeoutInSeconds: 600
name: "Setup kube config and get nodes"
command: |
oci ce cluster create-kubeconfig --cluster-id ${clusterid} --file $HOME/.kube/config --region us-ashburn-1 --token-version 2.0.0 --kube-endpoint ${endpoint}
kubectl get nodes
onFailure:
- type: Command
command: |
echo "Failed to set up kube config and get nodes"
timeoutInSeconds: 60