61 lines
1.8 KiB
YAML
61 lines
1.8 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 -build-cache clean build test
|
||
environment:
|
||
GRADLE_USER_HOME: /gradle-cache
|
||
volumes:
|
||
- gradle-cache-pvc:/gradle-cache
|
||
|
||
docker-build-and-push:
|
||
image: docker:24.0-dind
|
||
privileged: true
|
||
commands:
|
||
- dockerd-entrypoint.sh &
|
||
- sleep 10
|
||
|
||
# Логинимся в Harbor
|
||
- docker login $HARBOR_HOST -u $HARBOR_USERNAME -p $HARBOR_PASSWORD
|
||
|
||
# Собираем образ с тегом коммита
|
||
- docker build -t $HARBOR_HOST/$HARBOR_PROJECT/my-spring-app:$CI_COMMIT_SHA .
|
||
- docker push $HARBOR_HOST/$HARBOR_PROJECT/my-spring-app:$CI_COMMIT_SHA
|
||
|
||
# Тэг latest для удобства
|
||
- docker tag $HARBOR_HOST/$HARBOR_PROJECT/my-spring-app:$CI_COMMIT_SHA $HARBOR_HOST/$HARBOR_PROJECT/my-spring-app:latest
|
||
- docker push $HARBOR_HOST/$HARBOR_PROJECT/my-spring-app:latest
|
||
environment:
|
||
HARBOR_HOST:
|
||
from_secret: harbor_host
|
||
HARBOR_PROJECT:
|
||
from_secret: harbor_project
|
||
HARBOR_USERNAME:
|
||
from_secret: harbor_username
|
||
HARBOR_PASSWORD:
|
||
from_secret: harbor_password
|
||
|
||
deploy:
|
||
image: bitnami/kubectl:latest
|
||
commands:
|
||
# Обновляем образ в deployment
|
||
- kubectl set image deployment/my-spring-app -n apps my-spring-app=$HARBOR_HOST/$HARBOR_PROJECT/my-spring-app:$CI_COMMIT_SHA
|
||
- kubectl rollout status deployment/my-spring-app -n apps
|
||
environment:
|
||
HARBOR_HOST:
|
||
from_secret: harbor_host
|
||
HARBOR_PROJECT:
|
||
from_secret: harbor_project
|
||
when:
|
||
status: success |