CI/CD Flashcards
Opišite strukturo YAML formata, ki se uporablja za definiranje GitHub Actions. Kakšni so ključni elementi v tem formatu?
- name: Ime poteka dela.
- on: Določa dogodke, ki sprožijo potek dela (npr. push, pull_request).
-
jobs: Skupina nalog (jobs) znotraj poteka dela.
- Vsak job vsebuje:
- runs-on: Določa okolje, kjer se naloga izvaja (npr. ubuntu-latest).
-
steps: Koraki, ki jih naloga izvaja.
- Vsak korak (step) lahko vključuje:
- name: Ime koraka.
- uses: Uporablja vnaprej določeno akcijo iz GitHub Marketplace.
- run: Izvaja ukaze ukazne vrstice.
- env: Določa okoljske spremenljivke.
- Vsak korak (step) lahko vključuje:
Razložite postopek ustvarjanja lastnega “action-runnerja” za GitHub Actions. Katere so osnovne zahteve za delovanje tega runnerja?
- Ustvarite nov GitHub Action runner.
mkdir -p ~/actions-runner && cd ~/actions-runner
curl -o actions-runner-linux-x64-2.284.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.284.0/actions-runner-linux-x64-2.284.0.tar.gz
tar xzf ./actions-runner-linux-x64-2.284.0.tar.gz
- Konfiguracija.
REPO_URL="https://github.com/your-username/your-repo"
RUNNER_TOKEN="YOUR_RUNNER_TOKEN"
./config.sh --url REPO_URL --token YOUR_RUNNER_TOKEN
- Namestitev in zagon
sudo ./svc.sh install
sudo ./svc.sh start
- Osnovne zahteve za delovanje runnerja:
- Svež Linux strežnik.
- Vsaj 4 GB pomnilnika.
- 1 jedro.
- 10 GB prostora.
Kaj so “artefakti” v kontekstu GitHub Actions in kako jih lahko uporabimo za komunikacijo med nalogami?
Artefakti v GitHub Actions so datoteke, ki jih naloge (jobs) ustvarijo in shranijo, ter se lahko uporabijo za komunikacijo med različnimi nalogami znotraj poteka dela. Uporabimo jih lahko tako, da ena naloga ustvari artefakt (npr. datoteko z napakami), ki ga druga naloga nato prebere in uporabi za nadaljnje korake.
Opišite postopek ustvarjanja in uporabe matrice (matrix) v GitHub Actions skripti. Kdaj bi uporabili matrico in kakšne prednosti prinaša?
Matrico ustvarimo znotraj definicije naloge (job) v YAML datoteki. Uporablja se za izvajanje iste naloge z različnimi nastavitvami, kot so različne verzije jezika, operacijski sistemi ali konfiguracije. Definicija matrice:
Kako zagotovite, da se določena GitHub Action sproži samo ob določenih dogodkih, kot je potiskanje (push) na določeno vejo?
To zagotovimo z uporabo on ključa v YAML datoteki in specifičnimi pogoji.
on: push: branches: - main
Kaj se zgodi, ko testna skripta (akcija) pade oz. je neuspešna? Kako lahko obravnavamo in dokumentiramo takšne primere?
Ko testna skripta pade, GitHub Actions prikaže rdeče opozorilo v vmesniku, ki kaže, da je prišlo do napake. Lahko preusmerimo izpis napak v datoteko in jih shranimo kot artefakt.
steps: - name: Run tests run: npm test 2> napaka.txt || exit 0 - name: Upload error log if: failure() uses: actions/upload-artifact@v2 with: name: error-log path: napaka.txt
Opišite postopek ustvarjanja in objave Docker zabojnika v GitHub Actions. Kako zagotovite, da se ta postopek izvede le, ko so testi uspešno zaključeni?
- Ustvarimo Dockerfile za našo aplikacijo.
- Definiramo GitHub Action skripto za gradnjo in objavo Docker zabojnika.
- Poskrbimo, da se ta skripta zažene le ob uspešnem zaključku testne skripte.