-
Notifications
You must be signed in to change notification settings - Fork 0
177 lines (159 loc) · 5.67 KB
/
devcd.yml
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
on:
push:
branches: ["develop"]
workflow_dispatch:
env:
VERSION: ${{github.sha}}
ECR_URI: 381491925979.dkr.ecr.ap-northeast-2.amazonaws.com/jabiseo-front # docker ecr 주소
NAME: jabiseo-web # docker service name
jobs:
docker-build:
runs-on: ubuntu-20.04
outputs:
COMMIT_MESSAGE: ${{steps.valueSetting.outputs.COMMIT_MESSAGE}}
AUTHOR: ${{steps.valueSetting.outputs.AUTHOR}}
DOCKER_TAG: ${{steps.setUpDockerTag.outputs.DOCKER_TAG}}
steps:
- uses: actions/checkout@v3
- name: set environtment
id: valueSetting
run: |
COMMIT_MESSAGE=$(git log -1 --format='%s' ${{ github.sha }})
AUTHOR=$(git log -1 --format='%an' ${{ github.sha }})
echo "COMMIT_MESSAGE=${COMMIT_MESSAGE}" >> $GITHUB_ENV
echo "AUTHOR=${AUTHOR}" >> $GITHUB_ENV
echo "COMMIT_MESSAGE=${COMMIT_MESSAGE}" >> $GITHUB_OUTPUT
echo "AUTHOR=${AUTHOR}" >> $GITHUB_OUTPUT
- name: Deploy start send message
uses: jabiseo/slack-custom-bot@main
with:
mode: DEPLOY
channelId: "${{ secrets.NOTI_CHANNEL_ID }}"
text: "개발서버 Deploy 시작"
statusColor: "#ebe834"
env:
SLACK_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SHA: ${{env.VERSION}}
COMMIT_MESSAGE: ${{env.COMMIT_MESSAGE}}
AUTHOR: ${{env.AUTHOR}}
DOCKER_IMAGE: "Before build"
- name: save into application.properties
env:
DEV_VARIABLES: ${{ toJson(secrets) }}
run: |
echo "$DEV_VARIABLES" | jq -r 'to_entries |
map(select(.key | startswith("DEV_")))[] | "\(.key | sub("^DEV_"; ""))=\(.value)"' > .env
- name: setup dockerImage name
id: setUpDockerTag
run: |
git fetch --tags
GIT_TAG=$(git tag --sort=committerdate | tail -1 )
if [ -z "$GIT_TAG" ]; then
GIT_TAG="v0.0.0"
fi
DATE=$(date +'%Y%m%d')
COMMIT_SHA=$(git rev-parse --short HEAD)
DOCKER_TAG="${GIT_TAG}-${DATE}-${COMMIT_SHA}"
DOCKER_IMAGE="${{env.ECR_URI}}:${DOCKER_TAG}"
echo "dockerTag=${DOCKER_TAG}"
echo "DOCKER_IMAGE=${DOCKER_IMAGE}"
echo "DOCKER_TAG=${DOCKER_TAG}" >> $GITHUB_ENV
echo "DOCKER_TAG=${DOCKER_TAG}" >> $GITHUB_OUTPUT
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ECR_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_ECR_SECRET_KEY }}
aws-region: ap-northeast-2
- name: Set Up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker Layer
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache # cache의 대상을 정한다.
key: "${{runner.os}}-buildx-${{env.version}}"
restore-keys: |
${{ runner.os }}-buildx-
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: build and push
uses: docker/build-push-action@v4
with:
context: .
builder: ${{steps.buildx.outputs.name}}
push: true
tags: "${{env.ECR_URI}}:${{env.DOCKER_TAG}}"
deploy:
needs:
- docker-build
name: Deploy
runs-on: [self-hosted, fe-dev]
env:
DOCKER_TAG: ${{needs.docker-build.outputs.DOCKER_TAG}}
steps:
- name: checkout
uses: actions/checkout@v3
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ECR_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_ECR_SECRET_KEY }}
aws-region: ap-northeast-2
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: Execute
id: execute
run: |
docker stop ${{env.NAME}} && docker rm ${{env.NAME}}
docker run -d -p 3000:3000 --name ${{env.NAME}} --network jabiseo-dev "${{env.ECR_URI}}:${{env.DOCKER_TAG}}"
result-send-sucess:
needs:
- docker-build
- deploy
runs-on: ubuntu-20.04
env:
DOCKER_TAG: ${{needs.docker-build.outputs.DOCKER_TAG}}
AUTHOR: ${{needs.docker-build.outputs.AUTHOR}}
COMMIT_MESSAGE: ${{needs.docker-build.outputs.COMMIT_MESSAGE}}
if: success()
steps:
- name: send result when success
uses: jabiseo/slack-custom-bot@main
with:
mode: DEPLOY
channelId: "${{ secrets.NOTI_CHANNEL_ID }}"
text: "개발서버 FE 배포 성공"
statusColor: "#6eeb34"
env:
SLACK_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SHA: ${{env.VERSION}}
COMMIT_MESSAGE: ${{env.COMMIT_MESSAGE}}
AUTHOR: ${{env.AUTHOR}}
DOCKER_IMAGE: ${{env.DOCKER_TAG}}
result-send-failure:
needs:
- docker-build
- deploy
runs-on: ubuntu-20.04
env:
DOCKER_TAG: ${{needs.docker-build.outputs.DOCKER_TAG}}
AUTHOR: ${{needs.docker-build.outputs.AUTHOR}}
COMMIT_MESSAGE: ${{needs.docker-build.outputs.COMMIT_MESSAGE}}
if: failure()
steps:
- name: send result when failure
uses: jabiseo/slack-custom-bot@main
with:
mode: DEPLOY
channelId: "${{ secrets.NOTI_CHANNEL_ID }}"
text: "개발서버 FE 배포 실패"
statusColor: "#eb3434"
env:
SLACK_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SHA: ${{env.VERSION}}
COMMIT_MESSAGE: ${{env.COMMIT_MESSAGE}}
AUTHOR: ${{env.AUTHOR}}
DOCKER_IMAGE: ${{env.DOCKER_TAG}}