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.

| Polje | Prikazuje se za | Opis |
|---|---|---|
| Poruka (Message) | sve šablone | Opciona napomena koja se čuva uz zadatak i prikazuje u istoriji i obaveštenjima. |
| Verzija build-a (Build Version) | deploy šablone | Koji build se isporučuje. Podrazumevano je izabran poslednji uspešan build. Pogledajte Build i deploy šabloni. |
| Anketne promenljive | šablone sa anketnim promenljivama | Jedno polje po promenljivoj; obavezne promenljive moraju biti popunjene. |
Probno pokretanje (Dry Run) --check, Diff --diff | Ansible | Pokreć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, Reconfigure | Terraform, OpenTofu, Terragrunt | Pokreće samo plan, dodaje -destroy, -auto-approve, -upgrade ili -reconfigure. Pogledajte Terraform/OpenTofu. |
| Grana (Branch), Inventar (Inventory), CLI argumenti (CLI args) | bilo koju aplikaciju | Zamenjuju vrednosti šablona za ovo pokretanje. Svaka zamena mora biti dozvoljena u podešavanjima šablona. |

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.

| Kartica | Sadržaj |
|---|---|
| Log | Izlaz 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. |


Statusi zadatka
| Status | Značenje |
|---|---|
waiting | Zadatak je u redu: izvršava se drugi zadatak istog šablona, dostignuto je ograničenje projekta ili još nema dostupnog runner-a. |
starting | Runner je preuzeo zadatak i priprema repozitorijum i okruženje. |
waiting_confirmation | Alat 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. |
confirmed | Korisnik je potvrdio pitanje; zadatak se nastavlja. |
rejected | Korisnik je odbio pitanje; zadatak se završava. |
running | Playbook ili skripta se izvršava. |
stopping | Zatraženo je zaustavljanje i proces se prekida. |
stopped | Korisnik je zaustavio zadatak. |
success | Završen sa izlaznim kodom 0. |
error | Završ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).
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.

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:
| Promenljiva | Vrednost |
|---|---|
SEMAPHORE_TASK_ID | ID zadatka |
SEMAPHORE_PROJECT_ID | ID projekta kojem zadatak pripada |
SEMAPHORE_WORKFLOW_ID | ID workflow-a, kada je zadatak čvor pokretanja workflow-a |
SEMAPHORE_WORKFLOW_RUN_ID | ID pokretanja workflow-a kojem zadatak pripada |
SEMAPHORE_WORKFLOW_VERSION | Verzija pokretanja workflow-a kojem zadatak pripada, ako postoji |
SEMAPHORE_WORKFLOW_URL | Veza ka stranici pokretanja workflow-a (zahteva web_host u konfiguraciji servera) |
SEMAPHORE_OUTPUTS_FILE | Putanja 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_VERSIONi grupa promenljivihSEMAPHORE_TASK_DETAILS_*za build i deploy šablone.SEMAPHORE_JWTkada š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.