Pređi na glavni sadržaj

Zadaci

Zadatak (Task) je jedno izvršavanje šablona zadatka (Task Template): jedno pokretanje Ansible playbook-a, Terraform/OpenTofu/Terragrunt konfiguracije ili Bash, PowerShell ili Python skripte. Svaki zadatak čuva sopstveni log, status i detalje, tako da uvek možete videti šta je pokrenuto, kada, ko je to uradio i sa kojom revizijom repozitorijuma.

Pokretanje zadatka​

Potrebna vam je uloga Izvršilac zadataka (Task Runner) ili viša u projektu (pogledajte Timovi). Zadatak pokrećete na jednom od dva mesta:

  • U odeljku Šabloni zadataka (Task Templates) kliknite na dugme play u redu šablona.
  • Na stranici šablona kliknite na dugme u gornjem desnom uglu. Njegova oznaka zavisi od tipa šablona: Pokreni (Run), Build ili Deploy.

Oba otvaraju dijalog Novi zadatak (New Task). Njegov sadržaj zavisi od aplikacije i opcija uključenih u šablonu.

Dijalog Novi zadatak za Ansible šablon

PoljePrikazuje se zaOpis
Poruka (Message)sve šabloneOpciona napomena koja se čuva uz zadatak i prikazuje u istoriji i obaveštenjima.
Verzija build-a (Build Version)deploy šabloneKoji build se isporučuje. Podrazumevano je izabran poslednji uspešan build. Pogledajte Build i deploy šabloni.
Anketne promenljivešablone sa anketnim promenljivamaJedno polje po promenljivoj; obavezne promenljive moraju biti popunjene.
Probno pokretanje (Dry Run) --check, Diff --diffAnsiblePokreće playbook u režimu provere ili prikazuje izmene fajlova. Ostali Ansible upiti (Limit, Tags, Skip tags, Debug) pojavljuju se kada su uključeni u šablonu, pogledajte Upiti.
Plan, Destroy, Auto Approve, Upgrade, ReconfigureTerraform, OpenTofu, TerragruntPokreće samo plan, dodaje -destroy, -auto-approve, -upgrade ili -reconfigure. Pogledajte Terraform/OpenTofu.
Grana (Branch), Inventar (Inventory), CLI argumenti (CLI args)bilo koju aplikacijuZamenjuju vrednosti šablona za ovo pokretanje. Svaka zamena mora biti dozvoljena u podešavanjima šablona.

Dijalog Novi zadatak za Terraform šablon

Kliknite na Pokreni (Run) (ili Build / Deploy) da biste zadatak stavili u red.

Red i paralelno izvršavanje​

Zadaci istog šablona izvršavaju se jedan za drugim, osim ako je u šablonu uključena opcija Dozvoli paralelne zadatke (Allow parallel tasks). Projekat takođe može ograničiti ukupan broj pokrenutih zadataka opcijom Maksimalan broj paralelnih zadataka (Max number of parallel tasks) u podešavanjima projekta. Zadatak koji mora da čeka ostaje u statusu waiting i automatski se pokreće kada se oslobodi mesto.

Prozor zadatka​

Klik na zadatak bilo gde u korisničkom interfejsu otvara prozor zadatka. Zaglavlje prikazuje šablon, broj zadatka, poruku commit-a revizije repozitorijuma, oznaku statusa, ko je i kada pokrenuo zadatak, kao i trajanje. Ikona sa strelicama proširuje prozor na ceo ekran.

Log zadatka

KarticaSadržaj
LogIzlaz zadatka uživo sa vremenskim oznakama. Log se prenosi dok se zadatak izvršava. Sirovi log (Raw log) otvara neobrađeni izlaz u novoj kartici pregledača.
Detalji (Details)Informacije o šablonu (aplikacija, šablon), informacije o commit-u (poruka i heš) i informacije o izvršavanju: poruka, vreme kreiranja, početka i završetka, trajanje i, kada su postavljeni, runner, grana, limit i promenljive korišćene za pokretanje.
Rezime (Summary) (Pro)Za Ansible zadatke: koliko je hostova završilo uspešno, a koliko neuspešno, sa tabelom neuspelih taskova po serveru.

Detalji zadatka

Rezime zadatka

Statusi zadatka​

StatusZnačenje
waitingZadatak je u redu: izvršava se drugi zadatak istog šablona, dostignuto je ograničenje projekta ili još nema dostupnog runner-a.
startingRunner je preuzeo zadatak i priprema repozitorijum i okruženje.
waiting_confirmationAlat je postavio pitanje i čeka korisnika, na primer terraform apply bez opcije Auto Approve ili skripta koja čita unos. Koristite Potvrdi (Confirm) ili Odbij (Reject) u prozoru zadatka.
confirmedKorisnik je potvrdio pitanje; zadatak se nastavlja.
rejectedKorisnik je odbio pitanje; zadatak se završava.
runningPlaybook ili skripta se izvršava.
stoppingZatraženo je zaustavljanje i proces se prekida.
stoppedKorisnik je zaustavio zadatak.
successZavršen sa izlaznim kodom 0.
errorZavršen sa izlaznim kodom različitim od nule ili nije uspeo da se pokrene. U korisničkom interfejsu se prikazuje kao Neuspešno (Failed).

Zaustavljanje zadataka​

Otvorite prozor pokrenutog zadatka i kliknite na Zaustavi (Stop). Semaphore šalje signal za prekid i zadatak prelazi u status stopping dok se proces završava. Ako proces ne reaguje, dugme se menja u Prisilno zaustavi (Force Stop); kliknite na njega da biste odmah ubili proces.

Da biste zaustavili sve pokrenute zadatke i zadatke u redu jednog šablona, otvorite stranicu šablona i koristite Zaustavi sve (Stop all). Padajući meni nudi i Zaustavi (Stop) i Prisilno zaustavi (Force stop).

Meni Zaustavi sve

Ponovno pokretanje zadatka​

Na kartici Zadaci (Tasks) šablona svaki red ima dugme ponovo pokreni (rerun). Ono otvara dijalog Novi zadatak sa popunjenom porukom i parametrima tog zadatka.

Zadaci šablona sa dugmadima za ponovno pokretanje

Gde su zadaci navedeni​

  • Kontrolna tabla → Istorija (Dashboard → History): svi zadaci projekta, pogledajte Istorija.
  • Stranica šablona → Zadaci (Tasks): zadaci jednog šablona.
  • Šabloni zadataka (Task Templates): proširite red strelicom sa leve strane da biste videli najnovije zadatke šablona bez napuštanja liste.

Promenljive okruženja​

Svaki zadatak, bez obzira na aplikaciju (Ansible, Terraform, Bash, PowerShell ili Python), dobija promenljive koje ga identifikuju u Semaphore-u:

PromenljivaVrednost
SEMAPHORE_TASK_IDID zadatka
SEMAPHORE_PROJECT_IDID projekta kojem zadatak pripada
SEMAPHORE_WORKFLOW_IDID workflow-a, kada je zadatak čvor pokretanja workflow-a
SEMAPHORE_WORKFLOW_RUN_IDID pokretanja workflow-a kojem zadatak pripada
SEMAPHORE_WORKFLOW_VERSIONVerzija pokretanja workflow-a kojem zadatak pripada, ako postoji
SEMAPHORE_WORKFLOW_URLVeza ka stranici pokretanja workflow-a (zahteva web_host u konfiguraciji servera)
SEMAPHORE_OUTPUTS_FILEPutanja datoteke u koju zadatak workflow-a upisuje svoje izlaze

Workflow promenljive nisu prisutne ako zadatak nije pokrenut iz workflow-a.

Potpuna lista, uključujući promenljive koje se postavljaju samo za jednu aplikaciju i pomoćne promenljive za git i SSH, nalazi se u referenci: Promenljive okruženja zadatka.

Druge promenljive se postavljaju u određenim slučajevima:

  • SEMAPHORE_TASK_TYPE, SEMAPHORE_TASK_INCOMING_VERSION, SEMAPHORE_TASK_TARGET_VERSION i grupa promenljivih SEMAPHORE_TASK_DETAILS_* za build i deploy šablone.
  • SEMAPHORE_JWT kada šablon izdaje JWT.

Primer za Bash:

echo "Task $SEMAPHORE_TASK_ID of project $SEMAPHORE_PROJECT_ID"
if [ -n "$SEMAPHORE_WORKFLOW_RUN_ID" ]; then
echo "Started by workflow run: $SEMAPHORE_WORKFLOW_URL"
fi

Čuvanje logova​

Zadaci i logovi se podrazumevano čuvaju zauvek. Koristite max_tasks_per_template da biste zadržali samo najnovije zadatke svakog šablona, pogledajte Istorija.