pipeline { agent any environment { GIT_AUTHOR_NAME = 'Jenkins Bot' GIT_AUTHOR_EMAIL = 'jenkins@alidavid.hu' } stages { stage('Build & Test (E2E)') { when { branch 'develop' } steps { script { echo '--- 1. Start środowiska testowego (pomijane na main) ---' sh 'docker compose -f docker-compose.test.yml down -v || true' sh 'docker compose -f docker-compose.test.yml up --build --abort-on-container-exit --exit-code-from cypress' } } } stage('Merge Develop -> Main') { when { branch 'develop' } steps { sshagent(credentials: ['gitea-ssh-key']) { script { echo '--- 2. Testy zaliczone. Scalanie do produkcji ---' sh "git config user.name '${GIT_AUTHOR_NAME}'" sh "git config user.email '${GIT_AUTHOR_EMAIL}'" sh 'git fetch origin main' sh 'git fetch origin develop' sh 'git checkout main' sh 'git pull origin main' sh 'git merge origin/develop --no-ff -m "Merge branch develop into main (Jenkins CI)"' sh 'GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git push origin main' } } } } // Tutaj w przyszłości będzie ETAP 3: Publish to NPM // On będzie miał warunek: when { branch 'main' } } post { always { // Sprzątanie wykonujemy tylko, jeśli testy w ogóle ruszyły // Ale komenda down jest bezpieczna nawet jak nic nie działało sh 'docker-compose -f docker-compose.test.yml down -v' } } }