Configurazione del comportamento di accodamento delle esecuzioni - Amazon CodeCatalyst

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à.

Configurazione del comportamento di accodamento delle esecuzioni

Per impostazione predefinita CodeCatalyst, in Amazon, quando si verificano più flussi di lavoro contemporaneamente, li mette in CodeCatalyst coda e li elabora uno per uno, nell'ordine in cui sono stati avviati. Puoi modificare questo comportamento predefinito specificando una modalità di esecuzione. Esistono alcune modalità di esecuzione:

  • (Impostazione predefinita) Modalità di esecuzione in coda: CodeCatalyst i processi vengono eseguiti uno per uno

  • Modalità di esecuzione sostituita: CodeCatalyst i processi vengono eseguiti uno per uno, con le esecuzioni più recenti che sostituiscono quelle precedenti

  • Modalità di esecuzione parallela: CodeCatalyst i processi vengono eseguiti in parallelo

Per ulteriori informazioni sulle esecuzioni del flusso di lavoro, vedereEsecuzione di un workflow.

Informazioni sulla modalità di esecuzione in coda

In modalità di esecuzione in coda, le esecuzioni vengono eseguite in serie, con le esecuzioni in attesa che formano una coda.

Le code si formano nei punti di ingresso alle azioni e ai gruppi di azioni, quindi è possibile avere più code all'interno dello stesso flusso di lavoro (vedi). Figure 1 Quando un'esecuzione in coda entra in un'azione, l'azione viene bloccata e non possono entrare altre esecuzioni. Quando la corsa termina ed esce dall'azione, l'azione viene sbloccata e pronta per l'esecuzione successiva.

Figure 1illustra un flusso di lavoro configurato in modalità di esecuzione in coda. Mostra le seguenti informazioni:

  • Sette esecuzioni si fanno strada nel flusso di lavoro.

  • Due code: una all'esterno dell'ingresso della sorgente di input (Repo:main) e una all'esterno dell'ingresso dell'azione. BuildTestActionGroup

  • Due blocchi bloccati: la sorgente di ingresso (Repo:main) e il. BuildTestActionGroup

Ecco come andranno le cose man mano che il flusso di lavoro viene eseguito e terminato l'elaborazione:

  • Quando run-4D444 termina la clonazione del repository di origine, uscirà dalla sorgente di input e si unirà alla coda dietro RUN-3c333. Quindi, RUN-5e555 entrerà nella sorgente di input.

  • Quando Run-1a111 terminerà la costruzione e il test, uscirà dall'azione ed entrerà nell'BuildTestActionGroupazione. DeployAction Quindi, Run-2b222 entrerà in azione. BuildTestActionGroup

Figura 1: Un flusso di lavoro configurato in «modalità di esecuzione in coda»

Un flusso di lavoro configurato in «modalità di esecuzione in coda»

Utilizza la modalità di esecuzione in coda se:

  • Desideri mantenere una one-to-one relazione tra funzionalità ed esecuzioni: queste funzionalità possono essere raggruppate quando si utilizza la modalità sostituita. Ad esempio, quando si unisce la funzionalità 1 nel commit 1, viene avviata l'esecuzione 1 e quando si unisce la funzionalità 2 nel commit 2, viene avviata l'esecuzione 2 e così via. Se dovessi utilizzare la modalità sostituita anziché la modalità in coda, le tue funzionalità (e i commit) verranno raggruppati nella sequenza che sostituisce le altre.

  • Vuoi evitare condizioni di gara e problemi imprevisti che possono verificarsi quando si utilizza la modalità parallela. Ad esempio, se due sviluppatori di software, Wang e Saanvi, avviano il flusso di lavoro all'incirca nello stesso momento per la distribuzione in un ECS cluster Amazon, l'esecuzione di Wang potrebbe avviare i test di integrazione sul cluster mentre quella di Saanvi distribuisce il nuovo codice applicativo nel cluster, causando il fallimento dei test di Wang o il test del codice sbagliato. Come altro esempio, potresti avere un obiettivo che non dispone di un meccanismo di blocco, nel qual caso le due esecuzioni potrebbero sovrascrivere le reciproche modifiche in modi imprevisti.

  • Vuoi limitare il carico sulle risorse di calcolo CodeCatalyst utilizzate per elaborare le tue esecuzioni. Ad esempio, se hai tre azioni nel tuo flusso di lavoro, puoi avere un massimo di tre esecuzioni contemporaneamente. L'imposizione di un limite al numero di esecuzioni che possono essere eseguite contemporaneamente rende il throughput di esecuzione più prevedibile.

  • Si desidera limitare il numero di richieste effettuate a servizi di terze parti dal flusso di lavoro. Ad esempio, il flusso di lavoro potrebbe avere un'azione di compilazione che include istruzioni per estrarre un'immagine da Docker Hub. Docker Hub limita il numero di pull request che puoi effettuare a un determinato numero all'ora per account e, se superi il limite, non potrai più accedere. L'utilizzo della modalità di esecuzione in coda per rallentare il throughput di esecuzione avrà l'effetto di generare meno richieste all'ora verso Docker Hub, limitando così il potenziale di blocchi e i conseguenti errori di compilazione ed esecuzione.

Dimensione massima della coda: 50

Note sulla dimensione massima della coda:

  • La dimensione massima della coda si riferisce al numero massimo di esecuzioni consentite in tutte le code del flusso di lavoro.

  • Se una coda supera le 50 esecuzioni, CodeCatalyst interrompe la 51a esecuzione e le successive.

Comportamento di errore:

Se un'esecuzione non risponde mentre viene elaborata da un'azione, le esecuzioni successive rimangono in coda fino al timeout dell'azione. Le azioni scadono dopo un'ora.

Se un'esecuzione fallisce all'interno di un'azione, la prima esecuzione in coda che l'ha preceduta può continuare.

Informazioni sulla modalità di esecuzione sostituita

La modalità di esecuzione sostituita è la stessa della modalità di esecuzione in coda, tranne per il fatto che:

  • Se un'esecuzione in coda raggiunge un'altra esecuzione in coda, l'esecuzione successiva sostituisce (sostituisce) l'esecuzione precedente e l'esecuzione precedente viene annullata e contrassegnata come «sostituita».

  • Come risultato del comportamento descritto nel primo bullet, una coda può includere una sola esecuzione quando viene utilizzata la modalità di esecuzione sostituita.

Utilizzando il workflow in Figure 1 come guida, l'applicazione della modalità di esecuzione sostituita a questo flusso di lavoro comporterebbe quanto segue:

  • Run-7g777 sostituirebbe le altre due esecuzioni nella sua coda e sarebbe l'unica esecuzione rimasta nella coda #1. RUN-6f666 e RUN-5e555 verrebbero annullati.

  • Run-3c333 sostituirebbe RUN-2b222 e sarebbe l'unica esecuzione rimasta nella coda #2. Run-2b222 verrebbe annullata.

Usa la modalità di esecuzione sostituita se desideri:

  • velocità di trasmissione migliore rispetto alla modalità in coda

  • ancora meno richieste verso i servizi di terze parti rispetto alla modalità in coda; questo è vantaggioso se il servizio di terze parti ha limiti di tariffa, come Docker Hub

Informazioni sulla modalità di esecuzione parallela

In modalità di esecuzione parallela, le esecuzioni sono indipendenti l'una dall'altra e non attendono il completamento delle altre esecuzioni prima di iniziare. Non ci sono code e la velocità di esecuzione è limitata solo dalla velocità di completamento delle azioni all'interno del flusso di lavoro.

Utilizza la modalità di esecuzione parallela in ambienti di sviluppo in cui ogni utente ha il proprio ramo di funzionalità e si distribuisce su destinazioni non condivise da altri utenti.

Importante

Se disponi di un target condiviso su cui più utenti possono eseguire l'implementazione, ad esempio una funzione Lambda in un ambiente di produzione, non utilizzare la modalità parallela, poiché potrebbero verificarsi condizioni di gara. Una condizione di gara si verifica quando l'esecuzione di un flusso di lavoro parallelo tenta di modificare contemporaneamente una risorsa condivisa, con risultati imprevedibili.

Numero massimo di esecuzioni parallele: 1000 per CodeCatalyst spazio

Configurazione della modalità di esecuzione

È possibile impostare la modalità di esecuzione in coda, sostituita o parallela. L'impostazione predefinita è in coda.

Quando si modifica la modalità di esecuzione da coda o sostituita a parallela CodeCatalyst , annulla le esecuzioni in coda e consente il completamento delle esecuzioni attualmente elaborate da un'azione prima di annullarle.

Quando si modifica la modalità di esecuzione da parallela a quella in coda o sostituita, consente il completamento di CodeCatalyst tutte le esecuzioni parallele attualmente in esecuzione. Tutte le esecuzioni avviate dopo aver cambiato la modalità di esecuzione in coda o sostituita utilizzano la nuova modalità.

Visual
Per modificare la modalità di esecuzione utilizzando l'editor visuale
  1. Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/.

  2. Scegliere il progetto.

  3. Nel riquadro di navigazione, scegli CI/CD, quindi scegli Flussi di lavoro.

  4. Scegli il nome del tuo flusso di lavoro. Puoi filtrare in base al nome del repository o del ramo di origine in cui è definito il flusso di lavoro oppure filtrare in base al nome o allo stato del flusso di lavoro.

  5. Scegli Modifica.

  6. In alto a destra, scegli Proprietà del flusso di lavoro.

  7. Espandi Avanzate e, in modalità Esegui, scegli una delle seguenti opzioni:

    1. In coda: vedi Informazioni sulla modalità di esecuzione in coda

    2. Sostituito: vedi Informazioni sulla modalità di esecuzione sostituita

    3. Parallelo: vedi Informazioni sulla modalità di esecuzione parallela

  8. (Facoltativo) Scegliete Convalida per convalidare il YAML codice del flusso di lavoro prima di eseguire il commit.

  9. Scegli Commit, inserisci un messaggio di commit e scegli nuovamente Commit.

YAML
Per cambiare la modalità di esecuzione utilizzando l'YAMLeditor
  1. Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/.

  2. Scegliere il progetto.

  3. Nel riquadro di navigazione, scegli CI/CD, quindi scegli Flussi di lavoro.

  4. Scegli il nome del tuo flusso di lavoro. Puoi filtrare in base al nome del repository o del ramo di origine in cui è definito il flusso di lavoro oppure filtrare in base al nome o allo stato del flusso di lavoro.

  5. Scegli Modifica.

  6. Scegli YAML.

  7. Aggiungi la RunMode proprietà, in questo modo:

    Name: Workflow_6d39 SchemaVersion: "1.0" RunMode: QUEUED|SUPERSEDED|PARALLEL

    Per ulteriori informazioni, consulta la descrizione della RunMode proprietà nella Proprietà di primo livello sezione delYAMLDefinizione del workflow.

  8. (Facoltativo) Scegliete Convalida per convalidare il YAML codice del flusso di lavoro prima di eseguire il commit.

  9. Scegli Commit, inserisci un messaggio di commit e scegli nuovamente Commit.