Proces CI/CD uruchamiany jest automatycznie przy każdej próbie wprowadzenia zmian do repozytorium (push) oraz podczas tworzenia lub aktualizacji żądań typu pull request.
on:
push:
branches:
- "**"
pull_request:
branches:
- main
Proces CI/CD składa się z kilku etapów

- Uruchomienie testów jednostkowych
- Skan SCA - OWASP
- Skan SAST - CodeQL
- Budowa obrazu docer
- Skan SCA obrazu docker - Trivy
- Skan DAST - OWASP ZAP
- Wypchnięcie obrazu docker do rejestru
Jeżeli testy lub któryś ze skanów nie przejdą obraz docker nie jest wypychany, a proces CI/CD kończy się niepowodzeniem.
Do uruchomienia testów jednostkowych wykorzystany został pytest

Po poprawnym przejściu testów uruchamiana jest statyczna analiza zależności. W tym etapie narzędzie OWASP Dependency-Check skanuje projekt w poszukiwaniu znanych podatności (CVE) w wykorzystywanych bibliotekach. Analiza opiera się na bazie danych NVD, do której dostęp realizowany jest przy użyciu klucza API. W wyniku skanowania generowany jest raport w formacie HTML, który następnie zapisywany jest jako artefakt workflow. Etap ten umożliwia wykrycie potencjalnych podatności w zewnętrznych zależnościach używanych w projekcie.
Raport z narzędzia można znaleźć w jobie https://github.com/msobol12/TBO_project/actions/runs/21392367476 w artefaktach (dependency-check-report)
Znaleziono trzy podatności Critical, High, Medium w bibliotekach: form-data, axios, follow-redirects
Kolejnym krokiem w procesie CI/CD jest analiza bezpieczeństwa kodu źródłowego. W tym etapie uruchamiane jest narzędzie CodeQL dla języka Python, które wykonuje rozszerzone zapytania bezpieczeństwa z zestawu security-extended. Po zakończeniu analizy sprawdzane są otwarte alerty wygenerowane przez CodeQL, a w przypadku wykrycia jakichkolwiek podatności bezpieczeństwa pipeline kończy się błędem. Etap ten pozwala na identyfikację potencjalnych błędów oraz luk bezpieczeństwa bezpośrednio w kodzie aplikacji.
Raport z narzędzia widoczny jest w zakładce Security -> Code scanning w repozytorium https://github.com/msobol12/TBO_project/security/code-scanning

Znaleziono 9 podatności (1 High, 8 Medium)
Po zbudowaniu obrazu Docker następuje jego analiza pod kątem bezpieczeństwa przy użyciu narzędzia Trivy. Obraz jest skanowany w poszukiwaniu podatności o poziomie LOW, MEDIUM, HIGH oraz CRITICAL, a wyniki skanowania są zapisywane w raporcie w formacie HTML, który następnie staje się artefaktem workflow.
Raport z narzędzia można znaleźć w jobie https://github.com/msobol12/TBO_project/actions/runs/21394161563 w artefaktach (trivy-report). W tym jobie tymczasowo zmieniono zasady wykonywania procesu CI/CD – usunięto wymóg przeprowadzania testów SCA i SAST przed zbudowaniem obrazu Docker. W przeciwnym wypadku raport z Trivy nie powstałby, ponieważ skany SCA i SAST generują alerty, które kończą proces przed etapem skanowania obrazu.

Po skanowaniu obrazu uruchamiany jest kontener Docker z aplikacją, a następnie wykonywany jest OWASP ZAP Baseline Scan na działającej aplikacji. W przypadku wykrycia podatności pipeline zostaje przerwany, a raport z testów jest dostępny bezpośrednio w jobie. Etap ten pozwala na identyfikację podatności, które są widoczne z perspektywy użytkownika aplikacji.
Wynik wykonania można zobaczyć bezpośrednio w jobie https://github.com/msobol12/TBO_project/actions/runs/21392125756/job/61581370783 . W tym jobie tymczasowo zmieniono zasady wykonywania procesu CI/CD – usunięto wymóg przeprowadzania testów SCA i SAST przed zbudowaniem obrazu Docker. W przeciwnym wypadku skan DAST nie uruchomił by się, ponieważ skany SCA i SAST generują alerty, które kończą proces przed etapem skanowania obrazu.
Znaleziono 12 warningów
Obraz dla gałęzi main jest budowany z tagiem latest, dla wszystkich pozostałych gałęzi ma tag beta.
Po zbudowaniu obrazu i przejściu wszystkich testów bezpieczeństwa, obraz jest publikowany w Docker Hub https://hub.docker.com/r/tboproject1/tbo-app/tags