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