Befehlsspezifikation
Die Befehlsspezifikation enthält Shellbefehle und Einstellungen, die während eines Deployments ausgeführt werden. Die Befehlsspezifikation wird in YAML geschrieben. Der Dateiinhalt kann inline angegeben werden, oder die Spezifikation kann in einem Artifact Registry-Repository gespeichert werden.
Um eine Binärdatei auszuführen, die nicht von Oracle vorinstalliert ist, müssen Sie sie entweder direkt in den Root-Ordner herunterladen oder in den Workspace-Ordner herunterladen und dann vor der Ausführung in den Root-Ordner verschieben.
Die Befehlsspezifikation ist in folgende Abschnitte unterteilt:
- Setup der Umgebungsvariablen
- Eingabeartefakte
- Schritte, die sequenziell ausgeführt werden müssen
Befehlsspezifikationssyntax
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
Befehlsspezifikationsparameter
Im Folgenden sind die Parameter der Befehlsspezifikation und die zugehörigen Details aufgeführt:
Parameter | Beschreibung |
---|---|
version |
Obligatorisch. Gibt die Version der Befehlsspezifikation an. Eine fehlende oder ungültige Version führt zu einem Fehler in der Shellphase. Der unterstützte Wert lautet |
component |
Obligatorisch. Gibt eine bestimmte Komponente in DevOps an. Ein fehlender oder ungültiger Wert führt zu einem Fehler in der Phase. Der unterstützte Wert lautet |
timeoutInSeconds |
Optional. Gibt den Timeout für die gesamte Befehlsspezifikationsdatei an. Jeder "Schritt" kann optional auch einen eigenen Timeoutwert haben. Wenn kein Wert angegeben ist, wird der Standardwert "8 Stunden" verwendet. Der maximal zulässige Wert beträgt 8 Stunden. |
shell |
Optional. Gibt die Shell an, die auf der globalen Ebene der Befehlsspezifikation verwendet werden soll. Der Wert kann optional auf Schrittebene überschrieben werden. Zulässige Werte sind |
failImmediatelyOnError
|
Optional. Gibt an, ob das Deployment fortgesetzt werden muss, wenn ein Befehl im Schritt mit einem Exit-Wert ungleich null nicht erfolgreich verläuft. Wenn kein Wert angegeben ist, lautet der Standardwert false , und der Schritt wird fortgesetzt. Zulässige Werte sind true und false . OCI empfiehlt, den Wert dieses Attributs auf true zu setzen. |
env |
Optional. Sie können benutzerdefinierte Variablen definieren. Drei Variablentypen werden unterstützt:
|
inputArtifacts |
Optional. Wird verwendet, um eine Liste der Eingabeartefakte zu definieren, die für die Ausführung der aktuellen Shellphase erforderlich sind. Unterstützt generische Artefakte aus Artifact Registry. Folgende Parameter sind verfügbar:
Hinweis: Für den Eingabeartefakttyp |
steps |
Obligatorisch. In diesem Abschnitt wird eine Liste der Schritte definiert, die ausgeführt werden müssen.
|
Schritttypen
Befehl
Attributname | Beschreibung |
---|---|
command |
Sowohl einzeilige als auch mehrzeilige Befehle werden unterstützt. Alle in einem Schritt angegebenen Befehle werden in derselben Shell-Session ausgeführt. Basierend auf dem Wert steps/*/shell kann es sich um Shell- oder Bash-Befehle handeln. Fast Fail ist nicht aktiviert. Damit der Schritt erfolgreich verläuft, wird die Ausgabe des letzten Befehls in einem Schritt berücksichtigt. Wenn der Exitcode des letzten Befehls 0 ist, wird der Schritt als erfolgreich betrachtet. |
timeoutInSeconds (Optional) |
Gibt den Timeout für den Schritt an. Ist kein Wert angegeben, wird der Wert vom globalen timeoutInSeconds -Parameter übernommen. Der maximal zulässige Wert beträgt 8 Stunden. |
shell (Optional) |
Gibt den Shell-Typ des aktuellen Schritts an. Ist kein Wert angegeben, wird der Wert vom globalen shell -Parameter übernommen. Zulässige Werte sind /bin/sh und shell . |
onFailure (Optional) |
Eine Liste der Schritte, die bei einem Fehler ausgeführt werden müssen, damit die Shellphase ordnungsgemäß beendet wird. Diese Schritte werden ausgeführt, wenn der entsprechende Schritt nicht erfolgreich verläuft. Nach der Ausführung wird die Befehlsspezifikation beendet. Die Bearbeitung des Fehlers wirkt sich nicht auf den Status der Shellphase aus. Wenn einer der Schritte nicht erfolgreich verläuft, verbleibt die Shellphase im Status |
failImmediatelyOnError (Optional) |
Gibt an, ob das Deployment fortgesetzt werden muss, wenn ein Befehl im Schritt mit einem Exit-Wert ungleich null nicht erfolgreich verläuft. Wenn kein Wert angegeben ist, lautet der Standardwert false , und der Schritt wird fortgesetzt. Zulässige Werte sind true und false . OCI empfiehlt, den Wert dieses Attributs auf true zu setzen. Der unter |
Vordefinierte Systemvariablen
DevOps stellt vordefinierte Systemvariablen mit Standardwerten bereit, die Sie in der Befehlsspezifikation verwenden können.
Variable | Beschreibung |
---|---|
OCI_DEPLOYMENT_ID |
Die OCID des aktuellen Deployments. |
OCI_PIPELINE_ID |
Die OCID der aktuellen Deployment-Pipeline. |
OCI_RESOURCE_PRINCIPAL_RPST |
Resource Principal-Token. |
OCI_RESOURCE_PRINCIPAL_VERSION |
Resource Principal-Version. |
OCI_CLI_AUTH |
Vorkonfigurierte Authentifizierung der OCI-CLI zur Verwendung des Resource Principals. |
OCI_RESOURCE_PRINCIPAL_REGION |
Region des Resource Principals. |
OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM |
Private-Key-Pfad des Resource Principals. |
Beispiel einer Befehlsspezifikation
Beispiel: Erstellen Sie einen OKE-Namespace.
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