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 daemon в фоне # - dockerd-entrypoint.sh & # # # Даем демону время на запуск (5 секунд) # - sleep 5 # # # Проверяем, что демон работает # - docker version # # # Собираем образ # - docker build -t my-spring-app:$CI_COMMIT_SHA . # - docker tag my-spring-app:$CI_COMMIT_SHA my-spring-app:latest # - docker images | grep my-spring-app # 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 с указанием 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