Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Usa costrutti a ciclo continuo in AWSTOE
Questa sezione fornisce informazioni per aiutarvi a creare costrutti ciclici in. AWSTOE I costrutti di looping definiscono una sequenza ripetuta di istruzioni. È possibile utilizzare i seguenti tipi di costrutti di loop in: AWSTOE
-
for
costrutti: esegue l'iterazione su una sequenza limitata di numeri interi. -
forEach
costrutti-
forEach
loop with input list — Itera su una raccolta finita di stringhe. -
forEach
loop con elenco delimitato — Itera su una raccolta finita di stringhe unite da un delimitatore.
-
Nota
I costrutti di looping supportano solo i tipi di dati di tipo stringa.
Argomenti relativi ai costrutti in loop
Variabili di iterazione di riferimento
Per fare riferimento all'indice e al valore della variabile di iterazione corrente, l'espressione di riferimento {{ loop.* }}
deve essere utilizzata all'interno del corpo di input di un passaggio che contiene un costrutto ciclico. Questa espressione non può essere utilizzata per fare riferimento alle variabili di iterazione del costrutto di looping di un altro passaggio.
L'espressione di riferimento è composta dai seguenti membri:
{{ loop.index }}
— La posizione ordinale dell'iterazione corrente, indicizzata in.0
{{ loop.value }}
— Il valore associato alla variabile di iterazione corrente.
Nomi dei loop
Tutti i costrutti in loop hanno un campo nome opzionale per l'identificazione. Se viene fornito un nome di ciclo, può essere utilizzato per fare riferimento alle variabili di iterazione nel corpo di input del passaggio. Per fare riferimento agli indici di iterazione e ai valori di un ciclo denominato, utilizzate {{ <loop_name>.* }}
with {{ loop.* }}
nel corpo di input del passaggio. Questa espressione non può essere utilizzata per fare riferimento al costrutto di looping denominato di un altro passaggio.
L'espressione di riferimento è composta dai seguenti membri:
{{ <loop_name>.index }}
— La posizione ordinale dell'iterazione corrente del ciclo denominato, indicizzata in.0
{{ <loop_name>.value }}
— Il valore associato alla variabile di iterazione corrente del ciclo denominato.
Risolve le espressioni di riferimento
AWSTOE Risolve le espressioni di riferimento come segue:
{{ <loop_name>.* }}
— AWSTOE risolve questa espressione utilizzando la logica seguente:Se il ciclo del passaggio attualmente in esecuzione corrisponde al
<loop_name>
valore, l'espressione di riferimento si risolve nel costrutto di loop del passaggio attualmente in esecuzione.<loop_name>
si risolve nel costrutto di looping denominato se appare nella fase attualmente in esecuzione.
{{ loop.* }}
— AWSTOE risolve l'espressione utilizzando il costrutto di looping definito nella fase attualmente in esecuzione.
Se le espressioni di riferimento vengono utilizzate all'interno di un passaggio che non contiene un ciclo, non AWSTOE risolve le espressioni e vengono visualizzate nel passaggio senza alcuna sostituzione.
Nota
Le espressioni di riferimento devono essere racchiuse tra virgolette doppie per essere interpretate correttamente dal YAML compilatore.
Tipi di costrutti ciclici
Questa sezione fornisce informazioni ed esempi sui tipi di costrutti di looping che possono essere utilizzati in. AWSTOE
Tipi di costrutti a ciclo continuo
for
ciclo
Il for
ciclo itera su un intervallo di numeri interi specificato all'interno di un limite delineato dall'inizio e dalla fine delle variabili. I valori di iterazione sono inclusi nel set [start, end]
e includono i valori limite.
AWSTOE verifica i updateBy
valori start
end
, e per garantire che la combinazione non produca un ciclo infinito.
for
schema a ciclo continuo
- name: "StepName" action: "ActionModule" loop: name: "string" for: start: int end: int updateBy: int inputs: ...
Campo | Descrizione | Tipo | Obbligatorio | Predefinita |
---|---|---|---|---|
|
Nome univoco del ciclo. Deve essere univoco rispetto ad altri nomi di loop nella stessa fase. |
Stringa |
No |
"" |
|
Valore iniziale dell'iterazione. Non accetta espressioni concatenate. |
Numero intero |
Sì |
N/A |
|
Valore finale dell'iterazione. Non accetta espressioni concatenate. | Numero intero | Sì | N/A |
|
Differenza in base alla quale un valore iterativo viene aggiornato tramite addizione. Deve essere un valore negativo o positivo diverso da zero. Non accetta espressioni concatenate. | Numero intero | Sì | N/A |
for
esempio di input in loop
- name: "CalculateFileUploadLatencies" action: "ExecutePowerShell" loop: for: start: 100000 end: 1000000 updateBy: 100000 inputs: commands: - | $f = new-object System.IO.FileStream c:\temp\test{{ loop.index }}.txt, Create, ReadWrite $f.SetLength({{ loop.value }}MB) $f.Close() - c:\users\administrator\downloads\latencyTest.exe --file c:\temp\test{{ loop.index }}.txt - AWS s3 cp c:\users\administrator\downloads\latencyMetrics.json s3://bucket/latencyMetrics.json - | Remove-Item -Path c:\temp\test{{ loop.index }}.txt Remove-Item -Path c:\users\administrator\downloads\latencyMetrics.json
forEach
loop con elenco di input
Il forEach
ciclo itera su un elenco esplicito di valori, che può essere costituito da stringhe ed espressioni concatenate.
forEach
ciclo con schema di elenco di input
- name: "StepName" action: "ActionModule" loop: name: "string" forEach: - "string" inputs: ...
Campo | Descrizione | Tipo | Obbligatorio | Predefinita |
---|---|---|---|---|
|
Nome univoco del ciclo. Deve essere univoco rispetto ad altri nomi di loop nella stessa fase. |
Stringa |
No |
"" |
Elenco di stringhe di loop |
Elenco di stringhe per l'iterazione. Accetta espressioni concatenate come stringhe nell'elenco. Le espressioni concatenate devono essere racchiuse tra virgolette doppie affinché il YAML compilatore le interpreti correttamente. |
Elenco di stringhe |
Sì |
N/A |
forEach
ciclo con elenco di input (esempio 1)
- name: "ExecuteCustomScripts" action: "ExecuteBash" loop: name: BatchExecLoop forEach: - /tmp/script1.sh - /tmp/script2.sh - /tmp/script3.sh inputs: commands: - echo "Count {{ BatchExecLoop.index }}" - sh "{{ loop.value }}" - | retVal=$? if [ $retVal -ne 0 ]; then echo "Failed" else echo "Passed" fi
forEach
ciclo con elenco di input (esempio 2)
- name: "RunMSIWithDifferentArgs" action: "ExecuteBinary" loop: name: MultiArgLoop forEach: - "ARG1=C:\Users ARG2=1" - "ARG1=C:\Users" - "ARG1=C:\Users ARG3=C:\Users\Administrator\Documents\f1.txt" inputs: commands: path: "c:\users\administrator\downloads\runner.exe" args: - "{{ MultiArgLoop.value }}"
forEach
ciclo con elenco di input (esempio 3)
- name: "DownloadAllBinaries" action: "S3Download" loop: name: MultiArgLoop forEach: - "bin1.exe" - "bin10.exe" - "bin5.exe" inputs: - source: "s3://bucket/{{ loop.value }}" destination: "c:\temp\{{ loop.value }}"
forEach
ciclo con elenco delimitato
Il ciclo scorre su una stringa contenente valori separati da un delimitatore. Per iterare sui componenti della stringa, AWSTOE utilizza il delimitatore per dividere la stringa in un array adatto all'iterazione.
forEach
ciclo con schema a elenco delimitato
- name: "StepName" action: "ActionModule" loop: name: "string" forEach: list: "string" delimiter: ".,;:\n\t -_" inputs: ...
Campo | Descrizione | Tipo | Obbligatorio | Predefinita |
---|---|---|---|---|
|
Nome univoco assegnato al ciclo. Dovrebbe essere unico se confrontato con altri nomi di loop nella stessa fase. |
Stringa |
No |
"" |
|
Una stringa composta da stringhe costituenti unite da un carattere delimitatore comune. Accetta anche espressioni concatenate. In caso di espressioni concatenate, assicuratevi che siano racchiuse tra virgolette doppie per una corretta interpretazione da parte del compilatore. YAML | Stringa |
Sì |
N/A |
|
Carattere usato per separare le stringhe all'interno di un blocco. L'impostazione predefinita è il carattere virgola. È consentito un solo carattere delimitatore dall'elenco fornito:
Le espressioni concatenate non possono essere utilizzate. |
Stringa | No | Virgola: "," |
Nota
Il valore di list
viene considerato come una stringa immutabile. Se l'origine di list
viene modificata durante l'esecuzione, non verrà riflessa durante l'esecuzione.
forEach
ciclo con elenco delimitato (esempio 1)
Questo esempio utilizza il seguente modello di espressione concatenata per fare riferimento all'output di un altro passaggio:. <phase_name>.<step_name>.[inputs | outputs].<var_name>
- name: "RunMSIs" action: "ExecuteBinary" loop: forEach: list: "{{ build.GetAllMSIPathsForInstallation.outputs.stdout }}" delimiter: "\n" inputs: commands: path: "{{ loop.value }}"
forEach
ciclo con elenco delimitato (esempio 2)
- name: "UploadMetricFiles" action: "S3Upload" loop: forEach: list: "/tmp/m1.txt,/tmp/m2.txt,/tmp/m3.txt,..." inputs: commands: - source: "{{ loop.value }}" destination: "s3://bucket/key/{{ loop.value }}"
Campi Step
I loop fanno parte di un passaggio. Qualsiasi campo relativo all'esecuzione di un passaggio non viene applicato alle singole iterazioni. I campi della fase si applicano solo a livello di fase, come segue:
-
timeoutSeconds— Tutte le iterazioni del ciclo devono essere eseguite entro il periodo di tempo specificato in questo campo. Se l'esecuzione del ciclo scade, AWSTOE esegue la politica di riprova del passaggio e reimposta il parametro di timeout per ogni nuovo tentativo. Se l'esecuzione del ciclo supera il valore di timeout dopo aver raggiunto il numero massimo di tentativi, il messaggio di errore della fase indica che l'esecuzione del ciclo è scaduta.
-
onFailure— La gestione degli errori viene applicata alla fase nel modo seguente:
-
Se onFailureè impostata su
Abort
, AWSTOE esce dal ciclo e riprova la fase in base alla politica sui nuovi tentativi. Dopo il numero massimo di tentativi, AWSTOE contrassegna il passaggio corrente come fallito e interrompe l'esecuzione del processo.AWSTOE imposta il codice di stato per la fase principale e il documento su
Failed
.Nota
Nessun altro passaggio viene eseguito dopo il passaggio fallito.
-
Se onFailureè impostato su
Continue
, AWSTOE esce dal ciclo e riprova il passaggio in base alla politica sui nuovi tentativi. Dopo il numero massimo di tentativi, AWSTOE contrassegna il passaggio corrente come fallito e continua a eseguire il passaggio successivo.AWSTOE imposta il codice di stato per la fase principale e il documento su
Failed
. -
Se onFailureè impostato su
Ignore
, AWSTOE esce dal ciclo e riprova il passaggio in base alla politica sui nuovi tentativi. Dopo il numero massimo di tentativi, AWSTOE contrassegna il passaggio corrente comeIgnoredFailure
e continua a eseguire il passaggio successivo.AWSTOE imposta il codice di stato per la fase principale e il documento su
SuccessWithIgnoredFailure
.Nota
Viene comunque considerata un'esecuzione riuscita, ma include informazioni che indicano che uno o più passaggi non sono riusciti e sono stati ignorati.
-
maxAttempts — Per ogni nuovo tentativo, l'intero passaggio e tutte le iterazioni vengono eseguiti dall'inizio.
status: lo stato generale dell'esecuzione di un passaggio.
status
non rappresenta lo stato delle singole iterazioni. Lo stato di un passaggio con loop è determinato come segue:Se una singola iterazione non viene eseguita, lo stato di un passaggio indica un errore.
Se tutte le iterazioni hanno esito positivo, lo stato di un passaggio indica un successo.
startTime — L'ora di inizio complessiva dell'esecuzione di una fase. Non rappresenta l'ora di inizio delle singole iterazioni.
endTime — L'ora di fine complessiva dell'esecuzione di un passaggio. Non rappresenta l'ora di fine delle singole iterazioni.
failureMessage — Include gli indici di iterazione che hanno avuto esito negativo in caso di errori diversi dal timeout. In caso di errori di timeout, il messaggio indica che l'esecuzione del ciclo non è riuscita. Non vengono forniti messaggi di errore individuali per ogni iterazione per ridurre al minimo la dimensione dei messaggi di errore.
Uscite di fase e iterazione
Ogni iterazione contiene un output. Alla fine di un ciclo, AWSTOE consolida tutti gli output di iterazione riusciti in. detailedOutput.json
Gli output consolidati sono una raccolta di valori che appartengono alle chiavi di output corrispondenti, come definito nello schema di output del modulo di azione. L'esempio seguente mostra come vengono consolidati gli output:
Output di ExecuteBash
per l'iterazione 1
{ "stdout":"Hello" }
Output di ExecuteBash
per l'iterazione 2
{ "stdout":"World" }
Output di ExecuteBash
for Step
{ "stdout":"Hello\nWorld" }
Ad esempio ExecuteBash
ExecutePowerShell
, e ExecuteBinary
sono moduli di azione che restituiscono STDOUT
come output del modulo di azione. STDOUT
i messaggi vengono uniti al nuovo carattere di riga per produrre l'output complessivo dello step indetailedOutput.json
.
AWSTOE non consoliderà i risultati delle iterazioni non riuscite.