Especificación de comando
La especificación de comando contiene los comandos de shell y la configuración que se ejecutan durante un despliegue. La especificación de comando está escrita en YAML. El contenido del archivo se puede especificar en línea, o bien puede almacenar la especificación en un repositorio de Artifact Registry.
Para ejecutar cualquier archivo binario que no esté preinstalado por Oracle, debe descargarlo directamente en la carpeta raíz o descargarlo en la carpeta del espacio de trabajo y, a continuación, moverlo a la carpeta raíz antes de ejecutarlo.
La especificación de comando se organiza en las siguientes secciones:
- Configuración de las variables de entorno.
- Artefactos de entrada.
- Pasos para su ejecución en secuencia.
Sintaxis de especificación de comando
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
Parámetros de especificación de comando
A continuación, se muestran los parámetros de especificación de comando y sus detalles:
Parámetro | Descripción |
---|---|
version |
Obligatorio. Indica la versión de especificación de comando. Una versión que falta o no es válida provoca un fallo en la etapa Shell. El valor soportado es |
component |
Obligatorio. Indica un componente concreto en DevOps. Si falta un valor o no es válido, se produce un fallo en la etapa. El valor soportado es |
timeoutInSeconds |
Opcional. Especifica el timeout para todo el archivo de especificación de comando. Cada 'paso' también puede tener opcionalmente su propio valor de timeout. Si no se especifica un valor, se utiliza el valor por defecto de 8 horas. El valor máximo permitido es 8 horas. |
shell |
Opcional. Especifica el shell que se utilizará en el nivel global de especificación de comando. El valor se puede sustituir opcionalmente en el nivel de 'paso'. Los valores permitidos son |
failImmediatelyOnError
|
Opcional. Especifica si el despliegue debe continuar en caso de que falle algún comando del paso con un valor de salida distinto de cero. Si no se especifica, el valor por defecto es false y el paso continúa. Los valores permitidos son true y false . OCI recomienda definir el valor de este atributo en true . |
env |
Opcional. Puede definir variables personalizadas. Hay soportados tres tipos de variables:
|
inputArtifacts |
Opcional. Se utiliza para definir la lista de artefactos de entrada necesarios para ejecutar la etapa Shell actual. Soporta artefactos genéricos de Artifact Registry. Los parámetros son los siguientes:
Nota: Para el tipo |
steps |
Obligatorio. En esta sección se define una lista de pasos que se deben ejecutar.
|
Tipos de paso
Comando
Nombre de atributo | Descripción |
---|---|
command |
Están soportados tanto comandos de una sola línea como de varias líneas. Todos los comandos especificados en un paso se ejecutan en la misma sesión de shell. Según el valor steps/*/shell , los comandos pueden ser shell o bash. Error rápido no está activado. Para que el paso se realice correctamente, se tiene en cuenta la salida del último comando en un paso. Si el último código de salida del comando es 0, el paso se considera correcto. |
timeoutInSeconds (opcional) |
Especifica el timeout del paso. Si no se proporciona, el valor se hereda del parámetro global timeoutInSeconds . El valor máximo permitido es 8 horas. |
shell (opcional) |
Especifica el tipo de shell del paso actual. Si no se especifica, el valor se hereda del parámetro global shell . Los valores permitidos son /bin/sh y shell . |
onFailure (opcional) |
Lista de pasos que se deben ejecutar en caso de fallo para salir correctamente de la etapa Shell. Se ejecuta si falla el paso correspondiente y, después de la ejecución, se sale de la especificación de comando. El manejo del fallo no afecta al estado de la etapa Shell. Si alguno de los pasos falla, el estado de la etapa Shell sigue siendo |
failImmediatelyOnError (opcional) |
Especifica si el despliegue debe continuar en caso de que falle algún comando del paso con un valor de salida distinto de cero. Si no se especifica, el valor por defecto es false y el paso continúa. Los valores permitidos son true y false . OCI recomienda definir el valor de este atributo en true . El valor de atributo |
Variables del sistema predefinidas
DevOps proporciona un juego de variables predefinidas del sistema con valores por defecto que puede utilizar en la especificación de comando.
Variable | Descripción |
---|---|
OCI_DEPLOYMENT_ID |
OCID del despliegue actual. |
OCI_PIPELINE_ID |
OCID del pipeline de despliegue actual. |
OCI_RESOURCE_PRINCIPAL_RPST |
Token de principal de recurso. |
OCI_RESOURCE_PRINCIPAL_VERSION |
Versión de principal de recurso. |
OCI_CLI_AUTH |
Autenticación de la interfaz de línea de comandos de OCI configurada previamente para utilizar el principal de recurso. |
OCI_RESOURCE_PRINCIPAL_REGION |
Región del principal de recurso. |
OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM |
Ruta de clave privada del principal de recurso. |
Ejemplo de especificación de comando
Ejemplo: cree un espacio de nombres de 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