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: - /tmp/gradle-cache:/gradle-cache:rw # Шаг 2: Сборка Docker образа с именем 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