Skip to content

git workflow.

git workflow. #10

name: Eureka Server CI/CD
on:
push:
branches: [master]
paths:
- "eureka-server/**"
- ".github/workflows/eureka-server-ci-cd.yml"
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./eureka-server
steps:
- uses: actions/checkout@v3
# QEMU kurulumu
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64
# Docker Buildx kurulumu
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
platforms: linux/arm64
# Build cache'i devre dışı bırak
buildkitd-flags: --debug
# Docker Hub'a giriş yap
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# Sadece ARM64 için build ve push
- name: Build and Push Docker image
uses: docker/build-push-action@v4
with:
context: ./eureka-server
platforms: linux/arm64
push: true
tags: |
${{ secrets.DOCKERHUB_USERNAME }}/eureka-server:latest-arm64
${{ secrets.DOCKERHUB_USERNAME }}/eureka-server:${{ github.sha }}-arm64
# Cache'i devre dışı bırak
no-cache: true
pull: true
# VPS'e deploy
- name: Deploy to VPS
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
echo "=== Stopping Old Container ==="
docker stop eureka-server || true
docker rm eureka-server || true
echo "=== Starting New Container ==="
docker run -d \
--name eureka-server \
--network craftpilot-network \
-p 8761:8761 \
-e SPRING_PROFILES_ACTIVE=prod \
-e EUREKA_USERNAME=craftpilot \
-e EUREKA_PASSWORD=13579ada \
${{ secrets.DOCKERHUB_USERNAME }}/eureka-server:latest-arm64
echo "=== Waiting for Container to Start ==="
sleep 30
echo "=== Container Logs ==="
docker logs eureka-server
echo "=== Health Check ==="
for i in {1..5}; do
if curl -f -u craftpilot:13579ada http://localhost:8761/actuator/health; then
echo "Service is healthy"
exit 0
fi
echo "Waiting for service to start... Attempt $i"
sleep 10
done
echo "Service failed health check"
docker logs eureka-server
exit 1
- name: Trigger Deploy Services Workflow
if: success()
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.GH_TOKEN }}
event-type: trigger-deploy-services