Compare commits
8 Commits
9e03cfa3ae
...
9cbd21d22b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9cbd21d22b | ||
|
|
c0e3be6420 | ||
|
|
34e5db1da1 | ||
|
|
daa00c9844 | ||
|
|
83b2d73f88 | ||
|
|
75d72dfa00 | ||
|
|
6b40d84659 | ||
|
|
95727193e7 |
78
Jenkinsfile
vendored
78
Jenkinsfile
vendored
@@ -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'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,23 +1,15 @@
|
|||||||
version: '3.8'
|
|
||||||
services:
|
services:
|
||||||
# Serwis aplikacji budowany z naszego Dockerfile
|
|
||||||
app:
|
app:
|
||||||
build: .
|
build: .
|
||||||
container_name: ntwo-app
|
|
||||||
ports:
|
ports:
|
||||||
- "8000:8000"
|
- "8000:8000"
|
||||||
|
|
||||||
# Oficjalny kontener Cypress z przegladarkami
|
|
||||||
cypress:
|
cypress:
|
||||||
image: cypress/included:13.6.0
|
build:
|
||||||
container_name: ntwo-tests
|
context: ./e2e
|
||||||
# Zaleznosc: testy rusza dopiero po starcie aplikacji
|
dockerfile: Dockerfile
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
environment:
|
environment:
|
||||||
# Adres pod ktorym Cypress widzi nasza aplikacje w sieci Docker
|
|
||||||
- CYPRESS_baseUrl=http://app:8000
|
- 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
11
e2e/Dockerfile
Normal 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"]
|
||||||
Reference in New Issue
Block a user