Skip to content

Fix: gateway 에 Discovery Server 등록 #27

Fix: gateway 에 Discovery Server 등록

Fix: gateway 에 Discovery Server 등록 #27

Workflow file for this run

name: Deploy JPetStore6-microservices with prod environment
on:
push:
branches: [ 'main' ]
jobs:
deploy:
name: Build and Deploy changed services
runs-on: ubuntu-latest
environment: prod
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Detect changed modules
id: detect
run: |
changed=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | awk -F/ '{print $1}' | sort -u)
modules=""
for d in $changed; do
case "$d" in
AccountService|CartService|CatalogService|OrderService|GatewayService|DiscoveryServer)
modules="$modules $d";;
CommonLibrary)
modules="AccountService CartService CatalogService OrderService";;
docker)
modules="AccountService CartService CatalogService OrderService DiscoveryServer GatewayService";;
esac
done
modules=$(echo $modules | xargs -n1 | sort -u | xargs)
echo "modules=$modules" >> $GITHUB_OUTPUT
services=$(echo $modules | sed 's/AccountService/account-service/g' | sed 's/CartService/cart-service/g' | sed 's/CatalogService/catalog-service/g' | sed 's/OrderService/order-service/g' | sed 's/GatewayService/gateway-service/g' | sed 's/DiscoveryServer/discovery-server/g')
echo "services=$services" >> $GITHUB_OUTPUT
- name: Build and push docker images
if: steps.detect.outputs.services != ''
run: |
for module in ${{ steps.detect.outputs.modules }}; do
service=$(echo $module | sed 's/AccountService/account-service/g' | sed 's/CartService/cart-service/g' | sed 's/CatalogService/catalog-service/g' | sed 's/OrderService/order-service/g' | sed 's/GatewayService/gateway-service/g' | sed 's/DiscoveryServer/discovery-server/g')
image="${{ secrets.DOCKER_USERNAME }}/$service"
docker build -t $image -f $module/Dockerfile .
docker tag $image:latest $image:${{ github.sha }}
docker push $image:latest
docker push $image:${{ github.sha }}
done
- name: Deploy to server
uses: appleboy/ssh-action@v1.2.2
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
services="${{ steps.detect.outputs.services }}"
cd ${{ secrets.DEPLOY_PATH }}
git checkout ${{ secrets.DEPLOY_BRANCH }}
git pull origin ${{ secrets.DEPLOY_BRANCH }}
echo "${{ secrets.COMMON_ENV }}" > docker/prod/common.env
echo "${{ secrets.ACCOUNT_SERVICE_ENV }}" > docker/prod/account_service.env
echo "${{ secrets.CART_SERVICE_ENV }}" > docker/prod/cart_service.env
echo "${{ secrets.CATALOG_SERVICE_ENV }}" > docker/prod/catalog_service.env
echo "${{ secrets.ORDER_SERVICE_ENV }}" > docker/prod/order_service.env
if [ -n "$services" ]; then
docker compose -f docker/prod/docker-compose.yml pull $services
docker compose -f docker/prod/docker-compose.yml up -d $services
docker image prune -f
else
echo "No service changes detected"
fi