|
37 | 37 | source: ./project.jar
|
38 | 38 | target: "/home/ubuntu/OnTime-back"
|
39 | 39 | debug: true
|
40 |
| - deploy-to-ec2: |
| 40 | + create-config-files: |
41 | 41 | needs: build-and-docker
|
42 | 42 | runs-on: ubuntu-latest
|
43 | 43 | steps:
|
|
49 | 49 | key: ${{ secrets.EC2_SSH_KEY }}
|
50 | 50 | debug: true
|
51 | 51 | script: |
|
52 |
| - CONTAINER_ID=$(sudo docker ps -aq --filter "name=ontime-container") |
53 |
| - if [ ! -z "$CONTAINER_ID" ]; then |
54 |
| - sudo docker stop $CONTAINER_ID |
55 |
| - sudo docker rm $CONTAINER_ID |
56 |
| - fi |
57 |
| - # 기존 컨테이너 중지 및 제거 |
58 |
| - sudo docker-compose down |
59 |
| - # 용량 정리 |
60 |
| - sudo docker container prune |
61 |
| - sudo docker image prune -a |
62 |
| - sudo docker volume prune |
63 |
| - sudo docker network prune |
64 |
| - # 보안이 필요한 파일 생성 |
65 |
| - sudo mkdir -p /home/ubuntu/OnTime-back/ontime-back/src/main/resources |
66 | 52 | sudo mkdir -p /home/ubuntu/OnTime-back/ontime-back/src/main/resources/key
|
67 |
| - cho "spring.application.name=${{ secrets.SPRING_APPLICATION_NAME }}" > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
68 |
| - echo "spring.datasource.url=${{ secrets.SPRING_DATASOURCE_URL }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
69 |
| - echo "spring.datasource.username=${{ secrets.SPRING_DATASOURCE_USERNAME }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
70 |
| - echo "spring.datasource.password=${{ secrets.SPRING_DATASOURCE_PASSWORD }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
71 |
| - echo "spring.datasource.driver-class-name=${{ secrets.SPRING_DATASOURCE_DRIVER_CLASS_NAME }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
72 |
| - echo "spring.jpa.hibernate.ddl-auto=create" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
73 |
| - echo "jwt.secret.key=${{ secrets.JWT_SECRETKEY }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
74 |
| - echo "jwt.access.expiration=${{ secrets.JWT_ACCESS_EXPIRATION }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
75 |
| - echo "jwt.refresh.expiration=${{ secrets.JWT_REFRESH_EXPIRATION }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
76 |
| - echo "jwt.access.header=${{ secrets.JWT_ACCESS_HEADER }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
77 |
| - echo "jwt.refresh.header=${{ secrets.JWT_REFRESH_HEADER }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
78 |
| - echo "spring.security.oauth2.client.registration.google.client-id=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_ID }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
79 |
| - echo "spring.security.oauth2.client.registration.google.client-secret=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_SECRET }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
80 |
| - echo "spring.security.oauth2.client.registration.google.scope=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_SCOPE }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
81 |
| - echo "spring.security.oauth2.client.registration.google.redirect-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_REDIRECT_URI }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
82 |
| - echo "spring.security.oauth2.client.registration.google.authorization-grant-type=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_AUTHORIZATION_GRANT_TYPE }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
83 |
| - echo "spring.security.oauth2.client.registration.google.client-name=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_NAME }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
84 |
| - echo "spring.security.oauth2.client.provider.google.authorization-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_GOOGLE_AUTHORIZATION_URI }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
85 |
| - echo "spring.security.oauth2.client.provider.google.token-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_GOOGLE_TOKEN_URI }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
86 |
| - echo "spring.security.oauth2.client.provider.google.user-info-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_GOOGLE_USER_INFO_URI }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
87 |
| - echo "spring.security.oauth2.client.provider.google.user-name-attribute=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_GOOGLE_USER_NAME_ATTRIBUTE }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
88 |
| - echo "spring.security.oauth2.client.registration.kakao.client-id=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KAKAO_CLIENT_ID }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
89 |
| - echo "spring.security.oauth2.client.registration.kakao.scope=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KAKAO_SCOPE }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
90 |
| - echo "spring.security.oauth2.client.registration.kakao.redirect-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KAKAO_REDIRECT_URI }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
91 |
| - echo "spring.security.oauth2.client.registration.kakao.authorization-grant-type=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KAKAO_AUTHORIZATION_GRANT_TYPE }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
92 |
| - echo "spring.security.oauth2.client.registration.kakao.client-name=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KAKAO_CLIENT_NAME }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
93 |
| - echo "spring.security.oauth2.client.provider.kakao.authorization-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_KAKAO_AUTHORIZATION_URI }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
94 |
| - echo "spring.security.oauth2.client.provider.kakao.token-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_KAKAO_TOKEN_URI }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
95 |
| - echo "spring.security.oauth2.client.provider.kakao.user-info-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_KAKAO_USER_INFO_URI }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
96 |
| - echo "spring.security.oauth2.client.provider.kakao.user-name-attribute=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_KAKAO_USER_NAME_ATTRIBUTE }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
97 |
| - echo "apple.client.id=${{ secrets.APPLE_CLIENT_ID }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
98 |
| - echo "apple.client.secret=${{ secrets.APPLE_CLIENT_SECRET }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
99 |
| - echo "apple.login.key=${{ secrets.APPLE_LOGIN_KEY }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
100 |
| - echo "apple.team.id=${{ secrets.APPLE_TEAM_ID }}" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
101 |
| - echo "management.endpoints.web.exposure.include=health" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
102 |
| - echo "management.endpoint.health.show-details=always" >> /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
103 |
| - |
104 |
| - echo "${{ secrets.ONTIME_PUSH_FIREBASE_ADMINSDK }}" > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/ontime-push-firebase-adminsdk-gnpxs-7d098872ff.json |
105 |
| - |
106 |
| - echo "${{ secrets.AUTHKEY_743M7R5W3W_1 }}" > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/key/AuthKey_743M7R5W3W.p8 |
107 |
| - echo "${{ secrets.AUTHKEY_743M7R5W3W_2 }}" > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/key/AuthKey_743M7R5W3W.p8 |
108 |
| - echo "${{ secrets.AUTHKEY_743M7R5W3W_3 }}" > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/key/AuthKey_743M7R5W3W.p8 |
109 |
| - echo "${{ secrets.AUTHKEY_743M7R5W3W_4 }}" > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/key/AuthKey_743M7R5W3W.p8 |
110 |
| - echo "${{ secrets.AUTHKEY_743M7R5W3W_5 }}" > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/key/AuthKey_743M7R5W3W.p8 |
111 |
| - echo "${{ secrets.AUTHKEY_743M7R5W3W_6 }}" > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/key/AuthKey_743M7R5W3W.p8 |
112 |
| - |
113 | 53 | # .env 파일 생성
|
114 | 54 | cat <<EOT > .env
|
115 | 55 | MYSQL_DATABASE=${{ secrets.MYSQL_DATABASE }}
|
@@ -153,5 +93,87 @@ jobs:
|
153 | 93 | APPLE_LOGIN_KEY=${{ secrets.APPLE_LOGIN_KEY }}
|
154 | 94 | APPLE_TEAM_ID=${{ secrets.APPLE_TEAM_ID }}
|
155 | 95 | EOT
|
| 96 | +
|
| 97 | + # json 파일 생성 |
| 98 | + cat <<EOT > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/ontime-push-firebase-adminsdk-gnpxs-7d098872ff.json |
| 99 | + ${{ secrets.ONTIME_PUSH_FIREBASE_ADMINSDK }} |
| 100 | + EOT |
| 101 | + |
| 102 | + # authkey 생성 |
| 103 | + cat <<EOT > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/key/AuthKey_743M7R5W3W.p8 |
| 104 | + ${{ secrets.AUTHKEY_743M7R5W3W_1 }} |
| 105 | + ${{ secrets.AUTHKEY_743M7R5W3W_2 }} |
| 106 | + ${{ secrets.AUTHKEY_743M7R5W3W_3 }} |
| 107 | + ${{ secrets.AUTHKEY_743M7R5W3W_4 }} |
| 108 | + ${{ secrets.AUTHKEY_743M7R5W3W_5 }} |
| 109 | + ${{ secrets.AUTHKEY_743M7R5W3W_6 }} |
| 110 | + EOT |
| 111 | +
|
| 112 | + # application.properties 생성 |
| 113 | + cat <<EOT > /home/ubuntu/OnTime-back/ontime-back/src/main/resources/application.properties |
| 114 | + spring.application.name=${{ secrets.SPRING_APPLICATION_NAME }} |
| 115 | + spring.datasource.url=${{ secrets.SPRING_DATASOURCE_URL }} |
| 116 | + spring.datasource.username=${{ secrets.SPRING_DATASOURCE_USERNAME }} |
| 117 | + spring.datasource.password=${{ secrets.SPRING_DATASOURCE_PASSWORD }} |
| 118 | + spring.datasource.driver-class-name=${{ secrets.SPRING_DATASOURCE_DRIVER_CLASS_NAME }} |
| 119 | + spring.jpa.hibernate.ddl-auto=create |
| 120 | + jwt.secret.key=${{ secrets.JWT_SECRETKEY }} |
| 121 | + jwt.access.expiration=${{ secrets.JWT_ACCESS_EXPIRATION }} |
| 122 | + jwt.refresh.expiration=${{ secrets.JWT_REFRESH_EXPIRATION }} |
| 123 | + jwt.access.header=${{ secrets.JWT_ACCESS_HEADER }} |
| 124 | + jwt.refresh.header=${{ secrets.JWT_REFRESH_HEADER }} |
| 125 | + spring.security.oauth2.client.registration.google.client-id=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_ID }} |
| 126 | + spring.security.oauth2.client.registration.google.client-secret=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_SECRET }} |
| 127 | + spring.security.oauth2.client.registration.google.scope=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_SCOPE }} |
| 128 | + spring.security.oauth2.client.registration.google.redirect-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_REDIRECT_URI }} |
| 129 | + spring.security.oauth2.client.registration.google.authorization-grant-type=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_AUTHORIZATION_GRANT_TYPE }} |
| 130 | + spring.security.oauth2.client.registration.google.client-name=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_NAME }} |
| 131 | + spring.security.oauth2.client.provider.google.authorization-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_GOOGLE_AUTHORIZATION_URI }} |
| 132 | + spring.security.oauth2.client.provider.google.token-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_GOOGLE_TOKEN_URI }} |
| 133 | + spring.security.oauth2.client.provider.google.user-info-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_GOOGLE_USER_INFO_URI }} |
| 134 | + spring.security.oauth2.client.provider.google.user-name-attribute=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_GOOGLE_USER_NAME_ATTRIBUTE }} |
| 135 | + spring.security.oauth2.client.registration.kakao.client-id=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KAKAO_CLIENT_ID }} |
| 136 | + spring.security.oauth2.client.registration.kakao.scope=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KAKAO_SCOPE }} |
| 137 | + spring.security.oauth2.client.registration.kakao.redirect-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KAKAO_REDIRECT_URI }} |
| 138 | + spring.security.oauth2.client.registration.kakao.authorization-grant-type=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KAKAO_AUTHORIZATION_GRANT_TYPE }} |
| 139 | + spring.security.oauth2.client.registration.kakao.client-name=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KAKAO_CLIENT_NAME }} |
| 140 | + spring.security.oauth2.client.provider.kakao.authorization-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_KAKAO_AUTHORIZATION_URI }} |
| 141 | + spring.security.oauth2.client.provider.kakao.token-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_KAKAO_TOKEN_URI }} |
| 142 | + spring.security.oauth2.client.provider.kakao.user-info-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_KAKAO_USER_INFO_URI }} |
| 143 | + spring.security.oauth2.client.provider.kakao.user-name-attribute=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_KAKAO_USER_NAME_ATTRIBUTE }} |
| 144 | + apple.client.id=${{ secrets.APPLE_CLIENT_ID }} |
| 145 | + apple.client.secret=${{ secrets.APPLE_CLIENT_SECRET }} |
| 146 | + apple.login.key=${{ secrets.APPLE_LOGIN_KEY }} |
| 147 | + apple.team.id=${{ secrets.APPLE_TEAM_ID }} |
| 148 | + management.endpoints.web.exposure.include=health |
| 149 | + management.endpoint.health.show-details=always |
| 150 | +
|
| 151 | + deploy-to-ec2: |
| 152 | + needs: create-config-files |
| 153 | + runs-on: ubuntu-latest |
| 154 | + steps: |
| 155 | + - name: SSH to EC2 & Deploy Docker Containers |
| 156 | + uses: appleboy/ssh-action@master |
| 157 | + with: |
| 158 | + host: ${{ secrets.EC2_HOST }} |
| 159 | + username: ${{ secrets.EC2_USER }} |
| 160 | + key: ${{ secrets.EC2_SSH_KEY }} |
| 161 | + script: | |
| 162 | + # 기존 컨테이너 종료 및 삭제 |
| 163 | + CONTAINER_ID=$(sudo docker ps -aq --filter "name=ontime-container") |
| 164 | + if [ ! -z "$CONTAINER_ID" ]; then |
| 165 | + sudo docker stop $CONTAINER_ID |
| 166 | + sudo docker rm $CONTAINER_ID |
| 167 | + fi |
| 168 | + |
| 169 | + # 기존 컨테이너 및 볼륨 정리 |
| 170 | + sudo docker-compose down |
| 171 | + sudo docker container prune -f |
| 172 | + sudo docker image prune -a -f |
| 173 | + sudo docker volume prune -f |
| 174 | + sudo docker network prune -f |
| 175 | + |
156 | 176 | # Docker Compose 실행
|
| 177 | + cd /home/ubuntu/OnTime-back/ontime-back |
157 | 178 | docker-compose up --build -d
|
| 179 | + |
0 commit comments