Compare commits

..

8 Commits

Author SHA1 Message Date
Jenkins Bot
9cbd21d22b Merge branch develop into main (Jenkins CI) 2026-01-05 18:52:49 +00:00
David Ali
c0e3be6420 fix: origin/develop 2026-01-05 19:52:09 +01:00
David Ali
34e5db1da1 fix: docker-in-docker 2026-01-05 19:48:54 +01:00
David Ali
daa00c9844 fix: docker-in-docker volume issue by building e2e image 2026-01-05 19:46:04 +01:00
David Ali
83b2d73f88 unname containers 2026-01-05 19:39:37 +01:00
David Ali
75d72dfa00 fix typo 2026-01-05 19:24:03 +01:00
David Ali
6b40d84659 fix typo 2026-01-05 19:06:34 +01:00
David Ali
95727193e7 add Jenkinsfile 2026-01-05 19:01:43 +01:00
3 changed files with 93 additions and 12 deletions

78
Jenkinsfile vendored
View File

@@ -0,0 +1,78 @@
pipeline {
agent any
environment {
// Tożsamość bota, który będzie widoczny w historii Gita jako autor scalenia
GIT_AUTHOR_NAME = 'Jenkins Bot'
GIT_AUTHOR_EMAIL = 'jenkins@alidavid.hu'
}
stages {
// ETAP 1: Testy (Gatekeeper)
// Jeśli ten etap nie przejdzie, pipeline się zatrzyma i nic nie trafi na main.
stage('Build & Test (E2E)') {
steps {
script {
echo '--- 1. Start środowiska testowego ---'
// Sprzątanie (na wypadek, gdyby coś zostało z poprzedniego uruchomienia)
sh 'docker compose -f docker-compose.test.yml down -v || true'
// Uruchomienie testów
// --abort-on-container-exit: zamyka kontenery, gdy Cypress skończy
// --exit-code-from cypress: jeśli Cypress zwróci błąd, Jenkins przerwie zadanie
sh 'docker compose -f docker-compose.test.yml up --build --abort-on-container-exit --exit-code-from cypress'
}
}
}
// ETAP 2: Automatyczny Merge (Tylko dla gałęzi develop)
stage('Merge Develop -> Main') {
when {
// Uruchom ten krok TYLKO, gdy zmiany są na gałęzi 'develop'
branch 'develop'
}
steps {
// Używamy klucza SSH z Jenkinsa do autoryzacji w Gitea
sshagent(credentials: ['gitea-ssh-key']) {
script {
echo '--- 2. Testy zaliczone. Scalanie do produkcji (main) ---'
// Konfiguracja Gita wewnątrz runnera
sh "git config user.name '${GIT_AUTHOR_NAME}'"
sh "git config user.email '${GIT_AUTHOR_EMAIL}'"
// 1. Pobieramy aktualny stan repozytorium
sh 'git fetch origin main'
// 2. Przełączamy się na main
sh 'git checkout main'
// Upewniamy się, że mamy najnowszą wersję main
sh 'git pull origin main'
// 3. Scalamy develop do main
// --no-ff tworzy commit scalający (widać historię w grafie)
sh 'git merge origin/develop --no-ff -m "Merge branch develop into main (Jenkins CI)"'
// 4. Wysyłamy zmiany do Gitea
// StrictHostKeyChecking=no zapobiega pytaniom o akceptację klucza hosta
sh 'GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git push origin main'
echo '--- SUKCES: Kod został zaktualizowany na gałęzi main ---'
// Powrót na develop dla porządku
sh 'git checkout develop'
}
}
}
}
}
post {
always {
// Bez względu na wynik (sukces/błąd), sprzątamy kontenery Dockerowe
echo '--- Sprzątanie po testach ---'
sh 'docker compose -f docker-compose.test.yml down -v'
}
}
}

View File

@@ -1,23 +1,15 @@
version: '3.8'
services:
# Serwis aplikacji budowany z naszego Dockerfile
app:
build: .
container_name: ntwo-app
ports:
- "8000:8000"
# Oficjalny kontener Cypress z przegladarkami
cypress:
image: cypress/included:13.6.0
container_name: ntwo-tests
# Zaleznosc: testy rusza dopiero po starcie aplikacji
build:
context: ./e2e
dockerfile: Dockerfile
depends_on:
- app
environment:
# Adres pod ktorym Cypress widzi nasza aplikacje w sieci Docker
- CYPRESS_baseUrl=http://app:8000
working_dir: /e2e
# Montowanie wolumenow: pozwala zapisac zrzuty ekranu na dysku hosta
volumes:
- ./e2e:/e2e

11
e2e/Dockerfile Normal file
View File

@@ -0,0 +1,11 @@
# e2e/Dockerfile
FROM cypress/included:13.6.0
# Ustawiamy katalog roboczy
WORKDIR /e2e
# Kopiujemy pliki testowe (cypress.config.js i folder cypress) do obrazu
COPY . .
# Domyślna komenda (można nadpisać w docker-compose)
CMD ["cypress", "run"]