Skip to content

mokhs00 is testing out GitHub Actions 🚀 #18

mokhs00 is testing out GitHub Actions 🚀

mokhs00 is testing out GitHub Actions 🚀 #18

Workflow file for this run

name: Build and Deploy Dittodining-Server to ECS
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
# Github Actsion가 Trigger 되는 조건
on:
push:
#Test용으로 해당 브랜치에서 바뀐 게 있으면 Deploy 하게끔 진행
branches:
- feat/cd-pipeline-with-github-actions
jobs:
deploy:
name: Deploy to ECS
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-2
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Build, tag, and push image to Amazon ECR
id: build-image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: dittodining
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
- name: Fill in the new image ID in the Amazon ECS task definition
id: task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: task-definition.json
container-name: dittodining
image: ${{ steps.build-image.outputs.image }}
- name: Save task definition output to a file
run: echo "${{ steps.task-def.outputs.task-definition }}" | jq . > task-definition-updated.json
- name: Register Task Definition with ECS
run: aws ecs register-task-definition --cli-input-json file://task-definition-updated.json
# - name: Register Task Definition with ECS
# run: |
# aws ecs register-task-definition \
# --cli-input-json '${{ steps.task-def.outputs.task-definition }}'
# 아래 명령어를 실행하면 ECS Cluster에 EC2 Instance에 Service로 올라가려고 함. 근데 기존 꺼랑 충돌나서 계속 Pending 인 상태만 유지
# Task Definition을 AWS ECS에 정식으로 등록하려면 반드시 작업을 끝내고 결과를 ECS 서비스에 적용해야 합니다.
# 그런데 주석 처리만 하면 그 결과가 AWS ECS에 반영되지 않습니다.
# - name: Deploy Amazon ECS task definition
# uses: aws-actions/amazon-ecs-deploy-task-definition@v1
# with:
# task-definition: ${{ steps.task-def.outputs.task-definition }}
# service: dittodining
# cluster: dittodining
# wait-for-service-stability: true