Skip to content

docs: create readme.md #14

docs: create readme.md

docs: create readme.md #14

Workflow file for this run

name: Deploy AI Services to AWS Fargate
on:
workflow_dispatch:
push:
branches:
- master
env:
AWS_REGION: ap-northeast-2
ECR_REGISTRY: 767828735725.dkr.ecr.ap-northeast-2.amazonaws.com
jobs:
changes:
name: Detect Changes
runs-on: ubuntu-latest
outputs:
captioning: ${{ steps.filter.outputs.captioning }}
classifying: ${{ steps.filter.outputs.classifying }}
masking: ${{ steps.filter.outputs.masking }}
steps:
- uses: actions/checkout@v3
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
captioning:
- 'captioning-service/**'
classifying:
- 'classifying-service/**'
masking:
- 'masking-service/**'
deploy-captioning:
name: Deploy Captioning Service
needs: changes
if: needs.changes.outputs.captioning == 'true'
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: ${{ env.AWS_REGION }}
- 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_REPOSITORY: captioning-service
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} ./captioning-service
docker push ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}
echo "::set-output name=image::${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}"
- name: Download task definition
id: task-def
run: |
aws ecs describe-task-definition --task-definition captioning-service --query taskDefinition > task-definition.json
- name: Fill in the new image ID in the Amazon ECS task definition
id: render-task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: task-definition.json
container-name: captioning-service # Task Definition에 정의된 컨테이너 이름
image: ${{ steps.build-image.outputs.image }}
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ steps.render-task-def.outputs.task-definition }}
service: captioning-service # 업데이트할 서비스 이름
cluster: ai-services-cluster # 클러스터 이름
wait-for-service-stability: true # 배포가 안정될 때까지 기다림
deploy-classifying:
name: Deploy Classifying Service
needs: changes
if: needs.changes.outputs.classifying == 'true'
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: ${{ env.AWS_REGION }}
- 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_REPOSITORY: classifying-service
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} ./classifying-service
docker push ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}
echo "::set-output name=image::${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}"
- name: Download task definition
id: task-def
run: |
aws ecs describe-task-definition --task-definition classifying-service --query taskDefinition > task-definition.json
- name: Fill in the new image ID in the Amazon ECS task definition
id: render-task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: task-definition.json
container-name: classifying-service # Task Definition에 정의된 컨테이너 이름
image: ${{ steps.build-image.outputs.image }}
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ steps.render-task-def.outputs.task-definition }}
service: classifying-service # 업데이트할 서비스 이름
cluster: ai-services-cluster # 클러스터 이름
wait-for-service-stability: true # 배포가 안정될 때까지 기다림
deploy-masking:
name: Deploy Masking Service
needs: changes
if: needs.changes.outputs.masking == 'true'
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: ${{ env.AWS_REGION }}
- 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_REPOSITORY: masking-service
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} ./masking-service
docker push ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}
echo "::set-output name=image::${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}"
- name: Download task definition
id: task-def
run: |
aws ecs describe-task-definition --task-definition masking-service --query taskDefinition > task-definition.json
- name: Fill in the new image ID in the Amazon ECS task definition
id: render-task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: task-definition.json
container-name: masking-service # Task Definition에 정의된 컨테이너 이름
image: ${{ steps.build-image.outputs.image }}
environment-variables: |
S3_BUCKET_NAME=${{ secrets.S3_BUCKET_NAME }}
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ steps.render-task-def.outputs.task-definition }}
service: masking-service # 업데이트할 서비스 이름
cluster: ai-services-cluster # 클러스터 이름
wait-for-service-stability: true # 배포가 안정될 때까지 기다림