68 lines
2.4 KiB
YAML
68 lines
2.4 KiB
YAML
when:
|
||
event: push
|
||
branch: main
|
||
|
||
steps:
|
||
test:
|
||
image: alpine:latest
|
||
commands:
|
||
- echo "WOODPECKER WORKS"
|
||
|
||
# Шаг 1: Сборка Spring Boot приложения через Gradle
|
||
build:
|
||
image: gradle:8.5-jdk21 # JDK
|
||
commands:
|
||
- chmod +x ./gradlew
|
||
# - ./gradlew clean build -x test # Сборка без тестов
|
||
- ./gradlew clean build test
|
||
- ls -la build/libs/
|
||
environment:
|
||
GRADLE_USER_HOME: /gradle-cache
|
||
volumes:
|
||
- gradle-cache-pvc:/gradle-cache
|
||
|
||
# Шаг 2: Сборка Docker образа с именем my-spring-app
|
||
|
||
docker-build:
|
||
image: docker:24.0-dind # специальный образ с встроенным Docker daemon
|
||
privileged: true # нужно для запуска своего демона
|
||
commands:
|
||
# Диагностика (для отладки)
|
||
- docker version
|
||
- echo "Building image my-spring-app:$CI_COMMIT_SHA"
|
||
# Собираем образ
|
||
- docker build -t my-spring-app:$CI_COMMIT_SHA .
|
||
# Тэг latest для удобства
|
||
- docker tag my-spring-app:$CI_COMMIT_SHA my-spring-app:latest
|
||
# Проверяем, что образ создался
|
||
- docker images | grep my-spring-app
|
||
# docker-build:
|
||
# image: docker:24.0
|
||
# commands:
|
||
# # Собираем образ с именем my-spring-app и тегом из коммита
|
||
# - docker build -t my-spring-app:$CI_COMMIT_SHA .
|
||
# # Тэг latest для удобства
|
||
# - docker tag my-spring-app:$CI_COMMIT_SHA my-spring-app:latest
|
||
# volumes:
|
||
# - /var/run/docker.sock:/var/run/docker.sock
|
||
|
||
# Шаг 3: Деплой в Minikube
|
||
# deploy:
|
||
# image: bitnami/kubectl:latest
|
||
# commands:
|
||
# # Обновляем образ в deployment
|
||
# - kubectl set image deployment/my-spring-app my-spring-app=my-spring-app:$CI_COMMIT_SHA
|
||
# # Ждем успешного развертывания
|
||
# - kubectl rollout status deployment/my-spring-app
|
||
# when:
|
||
# status: success
|
||
|
||
deploy:
|
||
image: bitnami/kubectl:latest
|
||
commands:
|
||
# Обновляем образ в deployment с указанием namespace apps
|
||
- kubectl set image deployment/my-spring-app -n apps my-spring-app=my-spring-app:$CI_COMMIT_SHA
|
||
# Ждем успешного развертывания
|
||
- kubectl rollout status deployment/my-spring-app -n apps
|
||
when:
|
||
status: success |