Compare commits

...

3 Commits

Author SHA1 Message Date
Jenkins Bot
e2f1bc7c32 Merge branch develop into main (Jenkins CI) 2026-01-05 19:58:52 +00:00
David Ali
d874213bdf fix typo 2026-01-05 20:56:51 +01:00
David Ali
ba6654a489 simplify Jenkinsfile 2026-01-05 20:54:32 +01:00

43
Jenkinsfile vendored
View File

@@ -2,77 +2,58 @@ pipeline {
agent any agent any
environment { environment {
// Tożsamość bota, który będzie widoczny w historii Gita jako autor scalenia
GIT_AUTHOR_NAME = 'Jenkins Bot' GIT_AUTHOR_NAME = 'Jenkins Bot'
GIT_AUTHOR_EMAIL = 'jenkins@alidavid.hu' GIT_AUTHOR_EMAIL = 'jenkins@alidavid.hu'
} }
stages { stages {
// ETAP 1: Testy (Gatekeeper)
// Jeśli ten etap nie przejdzie, pipeline się zatrzyma i nic nie trafi na main.
stage('Build & Test (E2E)') { stage('Build & Test (E2E)') {
when {
branch 'develop'
}
steps { steps {
script { script {
echo '--- 1. Start środowiska testowego ---' echo '--- 1. Start środowiska testowego (pomijane na main) ---'
// Sprzątanie (na wypadek, gdyby coś zostało z poprzedniego uruchomienia)
sh 'docker compose -f docker-compose.test.yml down -v || true' 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' 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') { stage('Merge Develop -> Main') {
when { when {
// Uruchom ten krok TYLKO, gdy zmiany są na gałęzi 'develop'
branch 'develop' branch 'develop'
} }
steps { steps {
// Używamy klucza SSH z Jenkinsa do autoryzacji w Gitea
sshagent(credentials: ['gitea-ssh-key']) { sshagent(credentials: ['gitea-ssh-key']) {
script { script {
echo '--- 2. Testy zaliczone. Scalanie do produkcji (main) ---' echo '--- 2. Testy zaliczone. Scalanie do produkcji ---'
// Konfiguracja Gita wewnątrz runnera
sh "git config user.name '${GIT_AUTHOR_NAME}'" sh "git config user.name '${GIT_AUTHOR_NAME}'"
sh "git config user.email '${GIT_AUTHOR_EMAIL}'" sh "git config user.email '${GIT_AUTHOR_EMAIL}'"
// 1. Pobieramy aktualny stan repozytorium
sh 'git fetch origin main' sh 'git fetch origin main'
sh 'git fetch origin develop'
// 2. Przełączamy się na main
sh 'git checkout main' sh 'git checkout main'
// Upewniamy się, że mamy najnowszą wersję main
sh 'git pull origin 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)"' 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' 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'
} }
} }
} }
} }
// Tutaj w przyszłości będzie ETAP 3: Publish to NPM
// On będzie miał warunek: when { branch 'main' }
} }
post { post {
always { always {
// Bez względu na wynik (sukces/błąd), sprzątamy kontenery Dockerowe // Sprzątanie wykonujemy tylko, jeśli testy w ogóle ruszyły
echo '--- Sprzątanie po testach ---' // Ale komenda down jest bezpieczna nawet jak nic nie działało
sh 'docker compose -f docker-compose.test.yml down -v' sh 'docker-compose -f docker-compose.test.yml down -v'
} }
} }
} }