# .pipeline.yml # ----------------- # Build, publish, and deploy Java Spring Boot app when: event: [ push, pull_request ] steps: - name: test image: maven:3.9.11-eclipse-temurin-25 commands: - echo "๐Ÿงช Building and testing Spring Boot app...." - mvn -B clean verify when: - event: pull_request branch: [main, develop] - event: push branch: [ main, develop ] - name: publish-image depends_on: [ test ] image: woodpeckerci/plugin-docker-buildx settings: platforms: linux/amd64 repo: git.badger-pirarucu.ts.net/mangamochi/backend registry: git.badger-pirarucu.ts.net dockerfile: Dockerfile context: . username: from_secret: DOCKER_USER password: from_secret: DOCKER_PASSWORD tags: - latest - ${CI_COMMIT_SHA} when: event: [ push ] branch: [ main ] - name: deploy depends_on: [ publish-image ] image: alpine:3.20 environment: DEPLOY_USER: rov DEPLOY_HOST: mangamochi.badger-pirarucu.ts.net DEPLOY_PORT: 22 IMAGE: git.badger-pirarucu.ts.net/mangamochi/backend:${CI_COMMIT_SHA} DEPLOY_SSH_KEY: from_secret: DEPLOY_SSH_KEY commands: - echo "๐Ÿš€ Deploying to $DEPLOY_HOST..." - apk add --no-cache openssh-client docker-cli - mkdir -p ~/.ssh - echo "$DEPLOY_SSH_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-keyscan -p $DEPLOY_PORT $DEPLOY_HOST >> ~/.ssh/known_hosts - > ssh -p $DEPLOY_PORT $DEPLOY_USER@$DEPLOY_HOST " docker pull $IMAGE && docker stop mangamochi-backend 2>/dev/null || true && docker rm mangamochi-backend 2>/dev/null || true && docker run -d --name mangamochi-backend \ --restart always \ --network host \ --env-file /home/rov/mangamochi/.env \ -p 8080:8080 \ $IMAGE " when: event: [ push ] branch: [ main ]