[BE] refactor: api gateway 설정 변경 (#24) #67
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: ECR actions for multiple folders | |
on: | |
push: | |
# 임시 테스트 브랜치 | |
branches: | |
- be/setting/24-ecr | |
env: | |
NAMESPACE_MSA: "msa" | |
NAMESPACE_SERVICE: "service" | |
jobs: | |
# 변경 사항 감지 Job (각 서비스별로 실행) | |
check-folder-change: | |
runs-on: ubuntu-latest | |
outputs: | |
msa_discovery_changed: ${{ steps.check_msa_discovery.outputs.changed }} | |
msa_config_changed: ${{ steps.check_msa_config.outputs.changed }} | |
msa_apigateway_changed: ${{ steps.check_msa_apigateway.outputs.changed }} | |
service_user_changed: ${{ steps.check_service_user.outputs.changed }} | |
service_chat_changed: ${{ steps.check_service_chat.outputs.changed }} | |
service_state_changed: ${{ steps.check_service_state.outputs.changed }} | |
service_guild_changed: ${{ steps.check_service_guild.outputs.changed }} | |
service_notification_changed: ${{ steps.check_service_notification.outputs.changed }} | |
service_signaling_changed: ${{ steps.check_service_signaling.outputs.changed }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 # 모든 브랜치의 전체 히스토리 가져오기 | |
# 브랜치 확인 | |
- name: Debug Git Branches | |
run: | | |
echo "Fetching all branches..." | |
git fetch --all | |
echo "Available remote branches:" | |
git branch -r | |
echo "Current branch:" | |
git branch | |
- name: Check for changes in MSA - Discovery | |
id: check_msa_discovery | |
run: | | |
if git rev-parse --verify origin/main >/dev/null 2>&1; then | |
if git diff --name-only origin/main...HEAD | grep -q "^src/backend/discovery-server/"; then | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "changed=false" >> "$GITHUB_OUTPUT" | |
fi | |
else | |
echo "First PR: marking as changed" | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Check for changes in MSA - Config | |
id: check_msa_config | |
run: | | |
if git rev-parse --verify origin/main >/dev/null 2>&1; then | |
if git diff --name-only origin/main...HEAD | grep -q "^src/backend/config-server/"; then | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "changed=false" >> "$GITHUB_OUTPUT" | |
fi | |
else | |
echo "First PR: marking as changed" | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Check for changes in MSA - API Gateway | |
id: check_msa_apigateway | |
run: | | |
if git rev-parse --verify origin/main >/dev/null 2>&1; then | |
if git diff --name-only origin/main...HEAD | grep -q "^src/backend/apigateway-server/"; then | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "changed=false" >> "$GITHUB_OUTPUT" | |
fi | |
else | |
echo "First PR: marking as changed" | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Check for changes in Service - User | |
id: check_service_user | |
run: | | |
if git rev-parse --verify origin/main >/dev/null 2>&1; then | |
if git diff --name-only origin/main...HEAD | grep -q "^src/backend/user-server/"; then | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "changed=false" >> "$GITHUB_OUTPUT" | |
fi | |
else | |
echo "First PR: marking as changed" | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Check for changes in Service - Chat | |
id: check_service_chat | |
run: | | |
if git rev-parse --verify origin/main >/dev/null 2>&1; then | |
if git diff --name-only origin/main...HEAD | grep -q "^src/backend/chat-server/"; then | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "changed=false" >> "$GITHUB_OUTPUT" | |
fi | |
else | |
echo "First PR: marking as changed" | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Check for changes in Service - State | |
id: check_service_state | |
run: | | |
if git rev-parse --verify origin/main >/dev/null 2>&1; then | |
if git diff --name-only origin/main...HEAD | grep -q "^src/backend/state-server/"; then | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "changed=false" >> "$GITHUB_OUTPUT" | |
fi | |
else | |
echo "First PR: marking as changed" | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Check for changes in Service - Guild | |
id: check_service_guild | |
run: | | |
if git rev-parse --verify origin/main >/dev/null 2>&1; then | |
if git diff --name-only origin/main...HEAD | grep -q "^src/backend/guild-server/"; then | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "changed=false" >> "$GITHUB_OUTPUT" | |
fi | |
else | |
echo "First PR: marking as changed" | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Check for changes in Service - Notification | |
id: check_service_notification | |
run: | | |
if git rev-parse --verify origin/main >/dev/null 2>&1; then | |
if git diff --name-only origin/main...HEAD | grep -q "^src/backend/notification-server/"; then | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "changed=false" >> "$GITHUB_OUTPUT" | |
fi | |
else | |
echo "First PR: marking as changed" | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Check for changes in Service - Signaling | |
id: check_service_signaling | |
run: | | |
if git rev-parse --verify origin/main >/dev/null 2>&1; then | |
if git diff --name-only origin/main...HEAD | grep -q "^src/backend/signaling-server/"; then | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "changed=false" >> "$GITHUB_OUTPUT" | |
fi | |
else | |
echo "First PR: marking as changed" | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
fi | |
# MSA 빌드 및 푸시 | |
build-msa-discovery: | |
needs: check-folder-change | |
if: ${{ needs.check-folder-change.outputs.msa_discovery_changed == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
# 레포 가져오기 | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Build & Push MSA Discovery | |
uses: ./.github/actions/ecr-push | |
with: | |
namespace: ${{ env.NAMESPACE_MSA }} | |
folder: "src/backend/discovery-server" | |
ecr_repo: "discovery" | |
aws_access_key_id: ${{ secrets.AWS_MSA_ACCESS_KEY_ID }} | |
aws_secret_access_key: ${{ secrets.AWS_MSA_SECRET_ACCESS_KEY }} | |
aws_region: ${{ secrets.AWS_ECR_REGION }} | |
ecr_uri: ${{ secrets.AWS_MSA_ECR_URI }} | |
ec2_ip: ${{ secrets.AWS_DISCOVERY_EC2_IP }} | |
ec2_username: ${{ secrets.AWS_EC2_USERNAME }} | |
ec2_ssh_key: ${{ secrets.AWS_MSA_SSH_KEY }} | |
container_name: "discovery-server" | |
container_port: ${{ secrets.DISCOVERY_PORT }} | |
config_private_ip: ${{ secrets.CONFIG_PRIVATE_IP }} | |
config_port: ${{ secrets.CONFIG_PORT }} | |
config_application_yml: "" | |
apigateway_application_yml: "" | |
build-msa-config: | |
needs: check-folder-change | |
if: ${{ needs.check-folder-change.outputs.msa_config_changed == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
# 레포 가져오기 | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Build & Push MSA Config | |
uses: ./.github/actions/ecr-push | |
with: | |
namespace: ${{ env.NAMESPACE_MSA }} | |
folder: "src/backend/config-server" | |
ecr_repo: "config" | |
aws_access_key_id: ${{ secrets.AWS_MSA_ACCESS_KEY_ID }} | |
aws_secret_access_key: ${{ secrets.AWS_MSA_SECRET_ACCESS_KEY }} | |
aws_region: ${{ secrets.AWS_ECR_REGION }} | |
ecr_uri: ${{ secrets.AWS_MSA_ECR_URI }} | |
ec2_ip: ${{ secrets.AWS_CONFIG_EC2_IP }} | |
ec2_username: ${{ secrets.AWS_EC2_USERNAME }} | |
ec2_ssh_key: ${{ secrets.AWS_MSA_SSH_KEY }} | |
container_name: "config-server" | |
container_port: ${{ secrets.CONFIG_PORT }} | |
config_private_ip: ${{ secrets.CONFIG_ENCRYPT_KEY }} | |
config_port: ${{ secrets.CONFIG_PORT }} | |
config_application_yml: ${{ secrets.CONFIG_APPLICATION_YML }} | |
apigateway_application_yml: "" | |
build-msa-apigateway: | |
needs: check-folder-change | |
if: ${{ needs.check-folder-change.outputs.msa_apigateway_changed == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
# 레포 가져오기 | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Build & Push MSA API Gateway | |
uses: ./.github/actions/ecr-push | |
with: | |
namespace: ${{ env.NAMESPACE_MSA }} | |
folder: "src/backend/apigateway-server" | |
ecr_repo: "apigateway" | |
aws_access_key_id: ${{ secrets.AWS_MSA_ACCESS_KEY_ID }} | |
aws_secret_access_key: ${{ secrets.AWS_MSA_SECRET_ACCESS_KEY }} | |
aws_region: ${{ secrets.AWS_ECR_REGION }} | |
ecr_uri: ${{ secrets.AWS_MSA_ECR_URI }} | |
ec2_ip: ${{ secrets.AWS_APIGATEWAY_EC2_IP }} | |
ec2_username: ${{ secrets.AWS_EC2_USERNAME }} | |
ec2_ssh_key: ${{ secrets.AWS_MSA_SSH_KEY }} | |
container_name: "apigateway-server" | |
container_port: ${{ secrets.APIGATEWAY_PORT }} | |
config_private_ip: ${{ secrets.CONFIG_PRIVATE_IP }} | |
config_port: ${{ secrets.CONFIG_PORT }} | |
config_application_yml: "" | |
apigateway_application_yml: ${{ secrets.APIGATEWAY_APPLICATION_YML }} | |
# Service 빌드 및 푸시 | |
build-service-user: | |
needs: check-folder-change | |
if: ${{ needs.check-folder-change.outputs.service_user_changed == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
# 레포 가져오기 | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Build & Push Service User | |
uses: ./.github/actions/ecr-push | |
with: | |
namespace: ${{ env.NAMESPACE_SERVICE }} | |
folder: "src/backend/user-server" | |
ecr_repo: "user" | |
aws_access_key_id: ${{ secrets.AWS_SERVICE_ACCESS_KEY_ID }} | |
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }} | |
aws_region: ${{ secrets.AWS_ECR_REGION }} | |
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }} | |
ec2_ip: ${{ secrets.AWS_USER_EC2_IP }} | |
ec2_username: ${{ secrets.AWS_EC2_USERNAME }} | |
ec2_ssh_key: ${{ secrets.AWS_SERVICE_SSH_KEY }} | |
container_name: "user-server" | |
container_port: 8100 | |
config_private_ip: ${{ secrets.CONFIG_PRIVATE_IP }} | |
config_port: ${{ secrets.CONFIG_PORT }} | |
config_application_yml: "" | |
apigateway_application_yml: "" | |
build-service-chat: | |
needs: check-folder-change | |
if: ${{ needs.check-folder-change.outputs.service_chat_changed == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
# 레포 가져오기 | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Build & Push Service Chat | |
uses: ./.github/actions/ecr-push | |
with: | |
namespace: ${{ env.NAMESPACE_SERVICE }} | |
folder: "src/backend/chat-server" | |
ecr_repo: "chat" | |
aws_access_key_id: ${{ secrets.AWS_CHAT_ACCESS_KEY_ID }} | |
aws_secret_access_key: ${{ secrets.AWS_CHAT_SECRET_ACCESS_KEY }} | |
aws_region: ${{ secrets.AWS_ECR_REGION }} | |
ecr_uri: ${{ secrets.AWS_CHAT_ECR_URI }} | |
ec2_ip: ${{ secrets.AWS_CHAT_EC2_IP }} | |
ec2_username: ${{ secrets.AWS_EC2_USERNAME }} | |
ec2_ssh_key: ${{ secrets.AWS_CHAT_SSH_KEY }} | |
container_name: "chat-server" | |
container_port: 8600 | |
config_private_ip: ${{ secrets.CONFIG_PRIVATE_IP }} | |
config_port: ${{ secrets.CONFIG_PORT }} | |
config_application_yml: "" | |
apigateway_application_yml: "" | |
build-service-state: | |
needs: check-folder-change | |
if: ${{ needs.check-folder-change.outputs.service_state_changed == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
# 레포 가져오기 | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Build & Push Service State | |
uses: ./.github/actions/ecr-push | |
with: | |
namespace: ${{ env.NAMESPACE_SERVICE }} | |
folder: "src/backend/state-server" | |
ecr_repo: "state" | |
aws_access_key_id: ${{ secrets.AWS_SERVICE_ACCESS_KEY_ID }} | |
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }} | |
aws_region: ${{ secrets.AWS_ECR_REGION }} | |
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }} | |
ec2_ip: ${{ secrets.AWS_STATE_EC2_IP }} | |
ec2_username: ${{ secrets.AWS_EC2_USERNAME }} | |
ec2_ssh_key: ${{ secrets.AWS_SERVICE_SSH_KEY }} | |
container_name: "state-server" | |
container_port: 8200 | |
config_private_ip: ${{ secrets.CONFIG_PRIVATE_IP }} | |
config_port: ${{ secrets.CONFIG_PORT }} | |
config_application_yml: "" | |
apigateway_application_yml: "" | |
build-service-guild: | |
needs: check-folder-change | |
if: ${{ needs.check-folder-change.outputs.service_guild_changed == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
# 레포 가져오기 | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Build & Push Service Guild | |
uses: ./.github/actions/ecr-push | |
with: | |
namespace: ${{ env.NAMESPACE_SERVICE }} | |
folder: "src/backend/guild-server" | |
ecr_repo: "guild" | |
aws_access_key_id: ${{ secrets.AWS_SERVICE_ACCESS_KEY_ID }} | |
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }} | |
aws_region: ${{ secrets.AWS_ECR_REGION }} | |
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }} | |
ec2_ip: ${{ secrets.AWS_GUILD_EC2_IP }} | |
ec2_username: ${{ secrets.AWS_EC2_USERNAME }} | |
ec2_ssh_key: ${{ secrets.AWS_SERVICE_SSH_KEY }} | |
container_name: "guild-server" | |
container_port: 8500 | |
config_private_ip: ${{ secrets.CONFIG_PRIVATE_IP }} | |
config_port: ${{ secrets.CONFIG_PORT }} | |
config_application_yml: "" | |
apigateway_application_yml: "" | |
build-service-notification: | |
needs: check-folder-change | |
if: ${{ needs.check-folder-change.outputs.service_notification_changed == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
# 레포 가져오기 | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Build & Push Service Notification | |
uses: ./.github/actions/ecr-push | |
with: | |
namespace: ${{ env.NAMESPACE_SERVICE }} | |
folder: "src/backend/notification-server" | |
ecr_repo: "notification" | |
aws_access_key_id: ${{ secrets.AWS_SERVICE_ACCESS_KEY_ID }} | |
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }} | |
aws_region: ${{ secrets.AWS_ECR_REGION }} | |
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }} | |
ec2_ip: ${{ secrets.AWS_NOTIFICATION_EC2_IP }} | |
ec2_username: ${{ secrets.AWS_EC2_USERNAME }} | |
ec2_ssh_key: ${{ secrets.AWS_SERVICE_SSH_KEY }} | |
container_name: "notification-server" | |
container_port: 8400 | |
config_private_ip: ${{ secrets.CONFIG_PRIVATE_IP }} | |
config_port: ${{ secrets.CONFIG_PORT }} | |
config_application_yml: "" | |
apigateway_application_yml: "" | |
build-service-signaling: | |
needs: check-folder-change | |
if: ${{ needs.check-folder-change.outputs.service_signaling_changed == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
# 레포 가져오기 | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Build & Push Service Signaling | |
uses: ./.github/actions/ecr-push | |
with: | |
namespace: ${{ env.NAMESPACE_SERVICE }} | |
folder: "src/backend/signaling-server" | |
ecr_repo: "media" | |
aws_access_key_id: ${{ secrets.AWS_SERVICE_ACCESS_KEY_ID }} | |
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }} | |
aws_region: ${{ secrets.AWS_ECR_REGION }} | |
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }} | |
ec2_ip: ${{ secrets.AWS_SIGNALING_EC2_IP }} | |
ec2_username: ${{ secrets.AWS_EC2_USERNAME }} | |
ec2_ssh_key: ${{ secrets.AWS_SERVICE_SSH_KEY }} | |
container_name: "signaling-server" | |
container_port: 8300 | |
config_private_ip: ${{ secrets.CONFIG_PRIVATE_IP }} | |
config_port: ${{ secrets.CONFIG_PORT }} | |
config_application_yml: "" | |
apigateway_application_yml: "" |