Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE] 무중단 배포 스크립트 변경 #816

Merged
merged 2 commits into from
Oct 17, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 10 additions & 19 deletions .github/workflows/be_cd-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,34 +109,25 @@ jobs:
# 실행중인 서버 확인
- name: Determine Active and Inactive Ports (Blue/Green)
id: determine-ports
run: |
ports=(8080 8081)
ip="127.0.0.1"
for port in "${ports[@]}"; do
RESPONSE=$(curl -s http://$ip:$port/api/actuator/health)
IS_ACTIVE=$(echo "$RESPONSE" | grep 'UP' | wc -l)
if [ $IS_ACTIVE -eq 1 ] && [ $port -eq 8080 ]; then
echo "BLUE_PORT=8080" >> $GITHUB_ENV
echo "GREEN_PORT=8081" >> $GITHUB_ENV
elif [ $IS_ACTIVE -eq 1 ] && [ $port -eq 8081 ]; then
echo "BLUE_PORT=8081" >> $GITHUB_ENV
echo "GREEN_PORT=8080" >> $GITHUB_ENV
fi
done

run: |
chmod +x ./deploy.sh # 스크립트에 실행 권한 부여
OUTPUT=$(./deploy.sh) # 스크립트 실행 후 결과를 변수에 저장
source ./deploy.sh
echo "BLUE_PORT=$BLUE_PORT" >> $GITHUB_ENV
echo "GREEN_PORT=$GREEN_PORT" >> $GITHUB_ENV

- name: Start the new (green/blue) environment
run: |
sudo docker-compose --env-file ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/be_app-docker-compose.yml -p ${{ env.GREEN_PORT }} up -d
sudo docker-compose --env-file ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/be_app-docker-compose.yml -p $GREEN_PORT up -d

- name: Wait for new environment to be healthy
run: |
until sudo docker inspect --format '{{json .State.Health.Status}}' ${env.GREEN_PORT}_springboot-app | grep "healthy"; do sleep 5; done
until sudo docker inspect --format '{{json .State.Health.Status}}' $GREEN_PORT_springboot-app | grep "healthy"; do sleep 5; done

- name: Switch traffic to new environment
run: |
sudo docker-compose --env-file ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/be_app-docker-compose.yml -p ${{ env.GREEN_PORT }} up -d --scale springboot-app=1
sudo docker-compose --env-file ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/be_app-docker-compose.yml -p $GREEN_PORT up -d --scale springboot-app=1

- name: Stop and remove the old environment
run: |
sudo docker-compose --env-file ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/be_app-docker-compose.yml -p ${{ env.BLUE_PORT }} down
sudo docker-compose --env-file ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/be_app-docker-compose.yml -p $BLUE_PORT down
Loading