Spécification de commande
La spécification de commande contient les paramètres et commandes de shell qui sont exécutés pendant un déploiement. La spécification de commande est écrite en langage YAML. Le contenu du fichier peut être défini de façon incorporée ou la spécification peut être stockée dans un référentiel Artifact Registry.
Pour exécuter un fichier binaire qui n'est pas préinstallé par Oracle, vous devez soit le télécharger directement dans le dossier racine, soit 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 comprend les sections suivantes :
- Configuration des variables d'environnement.
- Artefacts d'entrée.
- Etapes à 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
Vous trouverez ci-dessous les paramètres de spécification de commande et leurs détails :
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 la phase de shell. La valeur prise en charge est |
component |
Obligatoire. Indique un composant particulier dans DevOps. Une valeur manquante ou non valide entraîne l'échec de la phase. La valeur prise en charge est |
timeoutInSeconds |
Facultatif. Indique le délai d'expiration pour l'ensemble du fichier de spécification de commande. Chaque étape peut également avoir sa propre valeur de délai d'expiration. Si aucune valeur n'est indiquée, la valeur par défaut est utilisée, soit 8 heures. La valeur maximale autorisée est 8 heures. |
shell |
Facultatif. Indique le shell à utiliser au niveau global de la spécification de commande. La valeur peut éventuellement être remplacée au niveau d'une étape. Les valeurs autorisées sont |
failImmediatelyOnError
|
Facultatif. Indique si le déploiement doit continuer lorsqu'une commande de l'étape échoue avec une valeur de sortie différente de zéro. Si aucune valeur n'est renseignée, la valeur par défaut est false et l'étape continue. Les valeurs autorisées sont true et false . OCI recommande de définir la valeur de cet attribut sur true . |
env |
Facultatif. Vous pouvez définir des variables personnalisées. Trois types de variable sont pris en charge :
|
inputArtifacts |
Facultatif. Utilisé afin de définir la liste des artefacts d'entrée requis pour exécuter la phase de shell en cours. Prend en charge les artefacts génériques provenant d'Artifact Registry. Les paramètres sont les suivants :
Remarque: Pour le type d'artefact d'entrée |
steps |
Obligatoire. Cette section définit la liste des étapes à exécuter.
|
Types d'étape
Commande :
Nom de l'attribut | Description |
---|---|
command |
Les commandes sur une seule ligne et sur plusieurs lignes sont prises en charge. Toutes les commandes indiquées dans une étape sont exécutées dans la même session de shell. En fonction de la valeur steps/*/shell , les commandes peuvent être shell ou bash. L'échec rapide n'est pas activé. La sortie de la dernière commande d'une étape est prise en compte dans la réussite de l'étape. Si le code de sortie de la dernière commande est 0, l'étape est considérée comme réussie. |
timeoutInSeconds (facultatif) |
Indique le délai d'expiration de l'étape. Si aucune valeur n'est fournie, la valeur est héritée du paramètre timeoutInSeconds global. La valeur maximale autorisée est 8 heures. |
shell (facultatif) |
Indique le type de shell de l'étape en cours. Si aucune valeur n'est indiquée, la valeur est héritée du paramètre shell global. Les valeurs autorisées sont /bin/sh et shell . |
onFailure (facultatif) |
Liste des étapes à exécuter en cas d'échec pour sortir progressivement de la phase de shell. Si l'étape correspondante échoue, exécutez ces étapes. Après l'exécution, la spécification de commande se ferme. La gestion de l'échec n'a aucune incidence sur le statut de la phase de shell. En cas d'échec de l'une des étapes, le statut de la phase de shell reste |
failImmediatelyOnError (facultatif) |
Indique si le déploiement doit continuer lorsqu'une commande de l'étape échoue avec une valeur de sortie différente de zéro. Si aucune valeur n'est renseignée, la valeur par défaut est false et l'étape continue. Les valeurs autorisées sont true et false . OCI recommande de définir la valeur de cet attribut sur true . La valeur de l'attribut |
Variables système prédéfinies
DevOps fournit un ensemble de variables 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 en cours. |
OCI_PIPELINE_ID |
OCID du pipeline de déploiement en cours. |
OCI_RESOURCE_PRINCIPAL_RPST |
Jeton de principal de ressource. |
OCI_RESOURCE_PRINCIPAL_VERSION |
Version de principal de ressource. |
OCI_CLI_AUTH |
Variable OCI CLI AUTH préconfigurée pour utiliser le principal de ressource. |
OCI_RESOURCE_PRINCIPAL_REGION |
Région de principal de ressource. |
OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM |
Chemin de clé privée de principal de ressource. |
Exemple de spécification de commande
Exemple : créez 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