-
Notifications
You must be signed in to change notification settings - Fork 0
105 lines (87 loc) · 3.78 KB
/
Copy pathcd-api-dev.yml
File metadata and controls
105 lines (87 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
name: CD API DEV
on:
push:
branches: [ develop ]
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: .
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: '17'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Grant execute permission for run-test-mysql-redis.sh
run: chmod +x run-test-mysql-redis.sh
- name: Start MySQL for testing
run: ./run-test-mysql-redis.sh
- name: Test & Build
run: ./gradlew build
- name: Sign in Dockerhub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build the Docker image
run: docker build -f ./Dockerfile --platform linux/amd64 --no-cache -t samhap/kokomen-interview-api:dev .
- name: Push the Docker Image to Dockerhub
run: docker push samhap/kokomen-interview-api:dev
deploy:
needs: build
runs-on: [ self-hosted, dev, org, new ] # 규칙대로는 dev-api가 더 자연스럽지만, 기존 runner 사용하기 위해 dev 유지
steps:
- name: Create dev-kokomen-net Docker network
run: |
NETWORK_NAME="dev-kokomen-net"
if ! sudo docker network inspect "$NETWORK_NAME" >/dev/null 2>&1; then
echo "Creating Docker network: $NETWORK_NAME"
sudo docker network create --driver bridge "$NETWORK_NAME"
else
echo "Docker network '$NETWORK_NAME' already exists. Skipping."
fi
- name: pull docker compose yaml files
working-directory: /home/ubuntu
run: |
[ -d kokomen-backend ] || git clone --filter=blob:none --no-checkout https://github.com/samhap-soft/kokomen-backend.git
cd kokomen-backend
git sparse-checkout init --cone
git fetch origin develop
git checkout develop
git sparse-checkout set docker/dev
git pull origin develop
- name: Stop existing container
run: sudo docker rm -f kokomen-interview-api-dev
- name: Remove old API Docker image
run: |
if sudo docker images samhap/kokomen-interview-api:dev -q | grep -q .; then
sudo docker rmi -f samhap/kokomen-interview-api:dev || true
fi
- name: Docker Image pull
run: sudo docker pull samhap/kokomen-interview-api:dev
- name: Docker run
working-directory: /home/ubuntu
env:
SPRING_DATASOURCE_URL_DEV: ${{ secrets.SPRING_DATASOURCE_URL_DEV }}
SPRING_DATASOURCE_USERNAME_DEV: ${{ secrets.SPRING_DATASOURCE_USERNAME_DEV }}
SPRING_DATASOURCE_PASSWORD_DEV: ${{ secrets.SPRING_DATASOURCE_PASSWORD_DEV }}
OPEN_AI_API_KEY: ${{ secrets.OPEN_AI_API_KEY }}
KAKAO_CLIENT_ID_DEV: ${{ secrets.KAKAO_CLIENT_ID_DEV }}
KAKAO_CLIENT_SECRET_DEV: ${{ secrets.KAKAO_CLIENT_SECRET_DEV }}
KAKAO_ADMIN_KEY_DEV: ${{ secrets.KAKAO_ADMIN_KEY_DEV }}
MYSQL_ROOT_PASSWORD_DEV: ${{ secrets.MYSQL_ROOT_PASSWORD_DEV }} # docker-compose-dev.yml에서 kokomen-mysql-dev를 실행시킬 때 필요
SUPERTONE_API_TOKEN: ${{ secrets.SUPERTONE_API_TOKEN }}
GOOGLE_CLIENT_ID_DEV: ${{ secrets.GOOGLE_CLIENT_ID_DEV }}
GOOGLE_CLIENT_SECRET_DEV: ${{ secrets.GOOGLE_CLIENT_SECRET_DEV }}
WIDGET_SECRET_KEY_DEV: ${{ secrets.WIDGET_SECRET_KEY_DEV }}
SLACK_WEBHOOK_URL_DEV: ${{ secrets.SLACK_WEBHOOK_URL_DEV }}
run: |
export HOSTNAME=$(hostname)
cd kokomen-backend/docker/dev
sudo -E docker compose -f docker-compose-dev.yml up -d