Skip to content

docs: README.md 업데이트 #224

docs: README.md 업데이트

docs: README.md 업데이트 #224

Workflow file for this run

name: CI/CD Pipeline
on:
pull_request_target:
branches:
- "develop"
types: [closed]
paths:
- 'monicar-collector/**'
- 'monicar-control-center/**'
- 'monicar-event-hub/**'
workflow_dispatch:
inputs:
tags:
description: 'Test scenario tags'
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'corretto'
- uses: actions/checkout@v3
- name: make collector application-prod.yml
run: |
cd monicar-collector/src/main/resources
touch ./application.yml
echo "${{ secrets.MONICAR_COLLECTOR_YML }}" > ./application.yml
echo "${{ secrets.MONICAR_COLLECTOR_YML }}"
shell: bash
- name: apply control-center application.yml
run: |
cd monicar-control-center/src/main/resources
touch ./application.yml
echo "${{ secrets.MONICAR_CONTROL_CENTER_YML }}" > ./application.yml
echo "${{ secrets.MONICAR_CONTROL_CENTER_YML }}"
shell: bash
- name: make control-center env.properties
run: |
mkdir monicar-control-center/src/main/resources/properties
cd monicar-control-center/src/main/resources/properties
touch ./env.properties
echo "${{ secrets.MONICAR_CONTROL_CENTER_ENV }}" > ./env.properties
echo "${{ secrets.MONICAR_CONTROL_CENTER_ENV }}"
shell: bash
- name: make event-hub application-prod.yml
run: |
cd monicar-event-hub/src/main/resources
touch ./application.yml
echo "${{ secrets.MONICAR_EVENT_HUB_YML }}" > ./application.yml
echo "${{ secrets.MONICAR_EVENT_HUB_YML }}"
shell: bash
- name: Setup Gradle
uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle Wrapper
run: ./gradlew clean build -x test
- name: Build and Image Deploy to DockHub
if: success()
run: |
sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
cd ./monicar-collector
sudo docker build --platform linux/amd64 -t monicar-collector .
IMAGE_TAG=suxxxxhyun/monicar-collector:latest
echo "Image Tag: $IMAGE_TAG"
sudo docker tag monicar-collector $IMAGE_TAG
sudo docker push $IMAGE_TAG
cd ../monicar-control-center
sudo docker build --platform linux/amd64 -t monicar-control-center .
IMAGE_TAG=suxxxxhyun/monicar-control-center:latest
echo "Image Tag: $IMAGE_TAG"
sudo docker tag monicar-control-center $IMAGE_TAG
sudo docker push $IMAGE_TAG
cd ../monicar-event-hub
sudo docker build --platform linux/amd64 -t monicar-event-hub .
IMAGE_TAG=suxxxxhyun/monicar-event-hub:latest
echo "Image Tag: $IMAGE_TAG"
sudo docker tag monicar-event-hub $IMAGE_TAG
sudo docker push $IMAGE_TAG
# - name: Connect to WAS & Execute Application (monicar-collector)
# uses: appleboy/[email protected]
# with:
# host: ${{ secrets.EC2_COLLECTOR_HOST }}
# username: ${{ secrets.EC2_COLLECTOR_USER }}
# key: ${{ secrets.EC2_COLLECTOR_PRIVATE_KEY }}
# script: |
# echo "Pulling and running monicar-collector image on collector EC2..."
# sudo docker stop $(sudo docker ps -a -q)
# sudo docker rm $(sudo docker ps -a -q)
# sudo docker rmi -f $(sudo docker images -q)
# sudo docker pull suxxxxhyun/monicar-collector:latest
# sudo docker run -d --name monicar-collector -p 8080:8080 suxxxxhyun/monicar-collector:latest
- name: Connect to WAS & Execute Application (monicar-control-center)
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_CONTROL_CENTER_HOST }}
username: ${{ secrets.EC2_CONTROL_CENTER_USER }}
key: ${{ secrets.EC2_CONTROL_CENTER_PRIVATE_KEY }}
script: |
echo "=== [배포 시작] Monicar Control Center ==="
# 1️⃣ Redis와 Elasticsearch 컨테이너가 실행 중인지 확인
if [ ! "$(sudo docker ps -q -f name=redis-container)" ]; then
if [ "$(sudo docker ps -aq -f status=exited -f name=redis-container)" ]; then
echo "기존 Redis 컨테이너 제거 중..."
sudo docker rm redis-container
fi
echo "Redis 컨테이너 실행 중이 아님 → 새로 시작합니다..."
sudo docker run -d --name redis-container -p 6379:6379 redis
else
echo "Redis 컨테이너가 이미 실행 중입니다."
fi
if [ ! "$(sudo docker ps -q -f name=monicar-es)" ]; then
if [ "$(sudo docker ps -aq -f status=exited -f name=monicar-es)" ]; then
echo "기존 Elasticsearch 컨테이너 제거 중..."
sudo docker rm monicar-es
fi
echo "Elasticsearch 컨테이너 실행 중이 아님 → 새로 시작합니다..."
sudo docker run -d --name monicar-es -p 9200:9200 -p 9300:9300 bhoonk/monicar-es:latest
else
echo "Elasticsearch 컨테이너가 이미 실행 중입니다."
fi
# 2️⃣ 기존 `monicar-control-center` 컨테이너 중지 및 삭제
echo "기존 monicar-control-center 컨테이너 중지 및 삭제..."
sudo docker stop monicar-control-center || true
sudo docker rm monicar-control-center || true
# 3️⃣ 기존 이미지 삭제
echo "기존 monicar-control-center 이미지 삭제..."
sudo docker rmi -f suxxxxhyun/monicar-control-center:latest || true
# 4️⃣ 최신 이미지 Pull
echo "최신 monicar-control-center 이미지 가져오는 중..."
sudo docker pull suxxxxhyun/monicar-control-center:latest
# 5️⃣ 새로운 컨테이너 실행 (Redis와 같은 네트워크 사용)
echo "새로운 monicar-control-center 컨테이너 실행..."
sudo docker run -d --name monicar-control-center --network host -p 8081:8081 -v /app/logs:/var/log/app-logs suxxxxhyun/monicar-control-center:latest
echo "=== [배포 완료] Monicar Control Center가 실행되었습니다! ==="
#
# - name: Connect to WAS & Execute Application (monicar-event-hub)
# uses: appleboy/[email protected]
# with:
# host: ${{ secrets.EC2_EVENT_HUB_HOST }}
# username: ${{ secrets.EC2_EVENT_HUB_USER }}
# key: ${{ secrets.EC2_EVENT_HUB_PRIVATE_KEY }}
# script: |
# echo "Pulling and running monicar-event-hub image on event-hub EC2..."
# sudo docker stop $(sudo docker ps -a -q)
# sudo docker rm $(sudo docker ps -a -q)
# sudo docker rmi -f $(sudo docker images -q)
# sudo docker pull suxxxxhyun/monicar-event-hub:latest
# sudo docker run -d --name monicar-event-hub -p 8082:8082 suxxxxhyun/monicar-event-hub:latest