Compare commits
3 Commits
9cbd21d22b
...
e2f1bc7c32
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e2f1bc7c32 | ||
|
|
d874213bdf | ||
|
|
ba6654a489 |
43
Jenkinsfile
vendored
43
Jenkinsfile
vendored
@@ -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'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user