Skip to content

Commit fb6e1d2

Browse files
#211 feat:서버 인프라 구축
1 parent ff08a40 commit fb6e1d2

File tree

3 files changed

+192
-91
lines changed

3 files changed

+192
-91
lines changed

.github/workflows/ci-dev.yml

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# github repository Actions 페이지에 나타낼 이름
2+
name: CI/CD
3+
4+
# event trigger
5+
on:
6+
push:
7+
branches:
8+
- develop
9+
10+
permissions:
11+
contents: read
12+
13+
jobs:
14+
CI:
15+
runs-on: ubuntu-latest
16+
17+
## jdk setting
18+
steps:
19+
- uses: actions/checkout@v3
20+
- name: Set up JDK 17
21+
uses: actions/setup-java@v3
22+
with:
23+
java-version: '17'
24+
distribution: 'temurin'
25+
26+
## gradle caching
27+
- name: Gradle Caching
28+
uses: actions/cache@v3
29+
with:
30+
path: |
31+
~/.gradle/caches
32+
~/.gradle/wrapper
33+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
34+
restore-keys: |
35+
${{ runner.os }}-gradle-
36+
37+
## create application-dev.yml
38+
- name: make application-dev.yml
39+
if: contains(github.ref, 'develop')
40+
run: |
41+
cd ./src/main/resources
42+
touch ./application-dev.yml
43+
echo "${{ secrets.PROPERTIES_DEV }}" > ./application-dev.yml
44+
shell: bash
45+
46+
## gradle build
47+
- name: Build with Gradle
48+
run: ./gradlew build -x test
49+
50+
## docker build & push to production
51+
## docker build & push to develop
52+
- name: Docker build & push to dev
53+
if: contains(github.ref, 'develop')
54+
run: |
55+
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
56+
docker build -f Dockerfile-dev -t ${{ secrets.DOCKER_REPO }}/shallwe-dev .
57+
docker push ${{ secrets.DOCKER_REPO }}/shallwe-dev
58+
59+
CD:
60+
runs-on: ubuntu-latest
61+
## deploy to develop
62+
steps:
63+
- name: Deploy to dev
64+
uses: appleboy/ssh-action@master
65+
id: deploy-dev
66+
if: contains(github.ref, 'develop')
67+
with:
68+
host: ${{ secrets.HOST_DEV }}
69+
username: ${{ secrets.USERNAME }}
70+
password: ${{ secrets.PASSWORD }}
71+
port: 22
72+
#key: ${{ secrets.PRIVATE_KEY }}
73+
script: |
74+
# sudo docker rm -f $(docker ps -qa)
75+
# sudo docker pull ${{ secrets.DOCKER_REPO }}/shallwe-dev
76+
# docker-compose up -d
77+
# docker image prune -f
78+
ssh dev sudo docker rm -f $(ssh dev sudo docker ps -qa)
79+
ssh dev sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}/shallwe-dev
80+
ssh dev sudo docker run -dp 8080:8080 ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}
81+
82+
## time ##
83+
current-time:
84+
needs: CI-CD
85+
runs-on: ubuntu-latest
86+
steps:
87+
- name: Get Current Time
88+
uses: 1466587594/get-current-time@v2
89+
id: current-time
90+
with:
91+
format: YYYY-MM-DDTHH:mm:ss
92+
utcOffset: "+09:00" # 기준이 UTC이기 때문에 한국시간인 KST를 맞추기 위해 +9시간 추가
93+
94+
- name: Print Current Time
95+
run: echo "Current Time=${{steps.current-time.outputs.formattedTime}}" # current-time 에서 지정한 포맷대로 현재 시간 출력
96+
shell: bash

.github/workflows/ci-prod.yml

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# github repository Actions 페이지에 나타낼 이름
2+
name: CI/CD
3+
4+
# event trigger
5+
on:
6+
push:
7+
branches:
8+
- main
9+
10+
permissions:
11+
contents: read
12+
13+
jobs:
14+
CI:
15+
runs-on: ubuntu-latest
16+
17+
## jdk setting
18+
steps:
19+
- uses: actions/checkout@v3
20+
- name: Set up JDK 17
21+
uses: actions/setup-java@v3
22+
with:
23+
java-version: '17'
24+
distribution: 'temurin'
25+
26+
## gradle caching
27+
- name: Gradle Caching
28+
uses: actions/cache@v3
29+
with:
30+
path: |
31+
~/.gradle/caches
32+
~/.gradle/wrapper
33+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
34+
restore-keys: |
35+
${{ runner.os }}-gradle-
36+
37+
## create application-dev.yml
38+
- name: make application-dev.yml
39+
if: contains(github.ref, 'develop')
40+
run: |
41+
cd ./src/main/resources
42+
touch ./application-dev.yml
43+
echo "${{ secrets.PROPERTIES_DEV }}" > ./application-dev.yml
44+
shell: bash
45+
46+
## gradle build
47+
- name: Build with Gradle
48+
run: ./gradlew build -x test
49+
50+
## docker build & push to production
51+
## docker build & push to develop
52+
- name: Docker build & push to dev
53+
if: contains(github.ref, 'develop')
54+
run: |
55+
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
56+
docker build -f Dockerfile-dev -t ${{ secrets.DOCKER_REPO }}/shallwe-dev .
57+
docker push ${{ secrets.DOCKER_REPO }}/shallwe-dev
58+
59+
CD:
60+
runs-on: ubuntu-latest
61+
## deploy to develop
62+
steps:
63+
- name: Deploy to dev
64+
uses: appleboy/ssh-action@master
65+
id: deploy-dev
66+
if: contains(github.ref, 'develop')
67+
with:
68+
host: ${{ secrets.HOST_DEV }}
69+
username: ${{ secrets.USERNAME }}
70+
password: ${{ secrets.PASSWORD }}
71+
port: 22
72+
#key: ${{ secrets.PRIVATE_KEY }}
73+
script: |
74+
# sudo docker rm -f $(docker ps -qa)
75+
# sudo docker pull ${{ secrets.DOCKER_REPO }}/shallwe-dev
76+
# docker-compose up -d
77+
# docker image prune -f
78+
ssh main sudo docker rm -f $(ssh spring sudo docker ps -qa)
79+
ssh main sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}/shallwe-main
80+
ssh main sudo docker run -dp 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_DEV_REPO }}
81+
82+
## time ##
83+
current-time:
84+
needs: CI-CD
85+
runs-on: ubuntu-latest
86+
steps:
87+
- name: Get Current Time
88+
uses: 1466587594/get-current-time@v2
89+
id: current-time
90+
with:
91+
format: YYYY-MM-DDTHH:mm:ss
92+
utcOffset: "+09:00" # 기준이 UTC이기 때문에 한국시간인 KST를 맞추기 위해 +9시간 추가
93+
94+
- name: Print Current Time
95+
run: echo "Current Time=${{steps.current-time.outputs.formattedTime}}" # current-time 에서 지정한 포맷대로 현재 시간 출력
96+
shell: bash

.github/workflows/github-actions.yml

Lines changed: 0 additions & 91 deletions
This file was deleted.

0 commit comments

Comments
 (0)