Skip to content

Commit 9cac821

Browse files
committed
CI: deploy workflow 수정
1 parent 9fb2875 commit 9cac821

2 files changed

Lines changed: 114 additions & 30 deletions

File tree

.github/workflows/dev-deploy.yml

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
name: Dev Deploy to Elastic Beanstalk
1+
name: Dev Deploy to Amazon ECS
22

33
on:
44
push:
5-
branches: [ "feature/#143" ]
5+
branches: [ "develop" ]
66

77
env:
88
AWS_REGION: ap-northeast-2
99
ECR_REPOSITORY: routebox-dev
10-
EB_APP_NAME: routebox
11-
EB_ENV_NAME: Routebox-dev-env
12-
DOCKER_IMAGE_TAG: ${{ github.sha }}
10+
ECS_SERVICE: routebox-service-dev
11+
ECS_CLUSTER: routebox-dev-cluster
12+
ECS_TASK_DEFINITION: routebox-task-definition-dev.json
13+
CONTAINER_NAME: routebox-dev
1314

1415
permissions:
1516
contents: read
@@ -35,7 +36,7 @@ jobs:
3536

3637
- name: Copy Secret
3738
env:
38-
CREATE_SECRET: ${{ secrets.ENV_DEV }}
39+
CREATE_SECRET: ${{secrets.ENV_DEV}}
3940
CREATE_SECRET_DIR: src/main/resources
4041
CREATE_SECRET_DIR_FILE_NAME: env.properties
4142
run: echo $CREATE_SECRET | base64 --decode > $CREATE_SECRET_DIR/$CREATE_SECRET_DIR_FILE_NAME
@@ -44,38 +45,40 @@ jobs:
4445
run: ./gradlew build
4546

4647
- name: Configure AWS credentials
47-
uses: aws-actions/configure-aws-credentials@v2
48+
uses: aws-actions/configure-aws-credentials@v1
4849
with:
4950
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
5051
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
5152
aws-region: ${{ env.AWS_REGION }}
5253

53-
- name: Copy dev compose file
54-
run: cp docker-compose.dev.yml docker-compose.yml
55-
5654
- name: Login to Amazon ECR
5755
id: login-ecr
58-
run: |
59-
aws ecr get-login-password --region $AWS_REGION | \
60-
docker login --username AWS --password-stdin ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com
56+
uses: aws-actions/amazon-ecr-login@v1
6157

62-
- name: Build, tag, and push Docker image to Amazon ECR
58+
- name: Build, tag, and push image to Amazon ECR
6359
id: build-image
60+
env:
61+
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
62+
IMAGE_TAG: ${{ github.sha }}
6463
run: |
65-
IMAGE_URI=${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY:$DOCKER_IMAGE_TAG
66-
docker build -t $IMAGE_URI .
67-
docker push $IMAGE_URI
68-
echo "image=$IMAGE_URI" >> $GITHUB_OUTPUT
69-
70-
- name: Install EB CLI
71-
run: |
72-
pip install --upgrade --user awsebcli
73-
echo "$HOME/.local/bin" >> $GITHUB_PATH
74-
75-
- name: EB Init
76-
run: |
77-
eb init ${{ env.EB_APP_NAME }} --platform "Docker running on 64bit Amazon Linux 2023" --region ${{ env.AWS_REGION }}
78-
eb use ${{ env.EB_ENV_NAME }}
64+
# Build a docker container and
65+
# push it to ECR so that it can
66+
# be deployed to ECS.
67+
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
68+
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
69+
echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
70+
- name: Fill in the new image ID in the Amazon ECS task definition
71+
id: task-def
72+
uses: aws-actions/amazon-ecs-render-task-definition@v1
73+
with:
74+
task-definition: ${{ env.ECS_TASK_DEFINITION }}
75+
container-name: ${{ env.CONTAINER_NAME }}
76+
image: ${{ steps.build-image.outputs.image }}
7977

80-
- name: Deploy to Elastic Beanstalk
81-
run: eb deploy --staged --verbose
78+
- name: Deploy Amazon ECS task definition
79+
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
80+
with:
81+
task-definition: ${{ steps.task-def.outputs.task-definition }}
82+
service: ${{ env.ECS_SERVICE }}
83+
cluster: ${{ env.ECS_CLUSTER }}
84+
wait-for-service-stability: true

.github/workflows/test-deploy.yml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
name: Dev Deploy to Elastic Beanstalk
2+
3+
on:
4+
push:
5+
branches: [ "feature/#143" ]
6+
7+
env:
8+
AWS_REGION: ap-northeast-2
9+
ECR_REPOSITORY: routebox-dev
10+
EB_APP_NAME: routebox
11+
EB_ENV_NAME: Routebox-dev-env
12+
DOCKER_IMAGE_TAG: ${{ github.sha }}
13+
14+
permissions:
15+
contents: read
16+
17+
jobs:
18+
deploy:
19+
name: Deploy
20+
runs-on: ubuntu-latest
21+
environment: production
22+
23+
steps:
24+
- name: Checkout
25+
uses: actions/checkout@v4
26+
27+
- name: Set up JDK 17
28+
uses: actions/setup-java@v3
29+
with:
30+
java-version: '17'
31+
distribution: 'adopt'
32+
33+
- name: Grant execute permission for gradlew
34+
run: chmod +x gradlew
35+
36+
- name: Copy Secret
37+
env:
38+
CREATE_SECRET: ${{ secrets.ENV_DEV }}
39+
CREATE_SECRET_DIR: src/main/resources
40+
CREATE_SECRET_DIR_FILE_NAME: env.properties
41+
run: echo $CREATE_SECRET | base64 --decode > $CREATE_SECRET_DIR/$CREATE_SECRET_DIR_FILE_NAME
42+
43+
- name: Build with Gradle
44+
run: ./gradlew build
45+
46+
- name: Configure AWS credentials
47+
uses: aws-actions/configure-aws-credentials@v2
48+
with:
49+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
50+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
51+
aws-region: ${{ env.AWS_REGION }}
52+
53+
- name: Copy dev compose file
54+
run: cp docker-compose.dev.yml docker-compose.yml
55+
56+
- name: Login to Amazon ECR
57+
id: login-ecr
58+
run: |
59+
aws ecr get-login-password --region $AWS_REGION | \
60+
docker login --username AWS --password-stdin ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com
61+
62+
- name: Build, tag, and push Docker image to Amazon ECR
63+
id: build-image
64+
run: |
65+
IMAGE_URI=${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY:$DOCKER_IMAGE_TAG
66+
docker build -t $IMAGE_URI .
67+
docker push $IMAGE_URI
68+
echo "image=$IMAGE_URI" >> $GITHUB_OUTPUT
69+
70+
- name: Install EB CLI
71+
run: |
72+
pip install --upgrade --user awsebcli
73+
echo "$HOME/.local/bin" >> $GITHUB_PATH
74+
75+
- name: EB Init
76+
run: |
77+
eb init ${{ env.EB_APP_NAME }} --platform "Docker running on 64bit Amazon Linux 2023" --region ${{ env.AWS_REGION }}
78+
eb use ${{ env.EB_ENV_NAME }}
79+
80+
- name: Deploy to Elastic Beanstalk
81+
run: eb deploy --staged --verbose

0 commit comments

Comments
 (0)