Merge pull request #18 from NIPA-AWS-Developer-2nd/refactor/ts-lint-e… #15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Deploy Only to Amazon ECS | |
| on: | |
| push: | |
| branches: | |
| - dev | |
| env: | |
| AWS_REGION: ap-northeast-2 | |
| AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID}} | |
| ECR_REPOSITORY: halsaram/backend | |
| ECS_CLUSTER: halsaram-cluster | |
| ECS_SERVICE: backend | |
| ECS_TASK_DEFINITION: .aws/task-definition.dev.json | |
| CONTAINER_NAME: backend-container | |
| IMAGE_TAG: latest | |
| permissions: | |
| contents: read | |
| id-token: write | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Make envfile | |
| uses: SpicyPizza/create-envfile@v2.0 | |
| with: | |
| envkey_NODE_ENV: 'development' | |
| envkey_FRONTEND_URL: 'https://halsaram.site' | |
| envkey_DB_HOST: ${{ secrets.DB_HOST}} | |
| envkey_DB_PORT: ${{ secrets.DB_PORT}} | |
| envkey_DB_USERNAME: ${{ secrets.DB_USERNAME}} | |
| envkey_DB_PASSWORD: ${{ secrets.DB_PASSWORD}} | |
| envkey_DB_NAME: ${{ secrets.DB_NAME}} | |
| envkey_KAKAO_CLIENT_ID: ${{ secrets.KAKAO_CLIENT_ID }} | |
| envkey_KAKAO_CLIENT_SECRET: ${{ secrets.KAKAO_CLIENT_SECRET }} | |
| envkey_KAKAO_REDIRECT_URI: ${{ secrets.KAKAO_REDIRECT_URI}} | |
| envkey_NAVER_CLIENT_ID: ${{ secrets.NAVER_CLIENT_ID}} | |
| envkey_NAVER_CLIENT_SECRET: ${{ secrets.NAVER_CLIENT_SECRET}} | |
| envkey_NAVER_REDIRECT_URI: ${{ secrets.NAVER_REDIRECT_URI}} | |
| envkey_GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} | |
| envkey_GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} | |
| envkey_GOOGLE_REDIRECT_URI: ${{ secrets.GOOGLE_REDIRECT_URI}} | |
| envkey_JWT_SECRET: ${{ secrets.JWT_SECRET}} | |
| envkey_JWT_ACCESS_TOKEN_EXPIRES_IN: ${{ secrets.JWT_ACCESS_TOKEN_EXPIRES_IN}} | |
| envkey_JWT_REFRESH_TOKEN_EXPIRES_IN: ${{ secrets.JWT_REFRESH_TOKEN_EXPIRES_IN}} | |
| envkey_AWS_REGION: ${{ secrets.AWS_REGION}} | |
| envkey_AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID}} | |
| envkey_AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY}} | |
| envkey_AWS_S3_BUCKET_NAME: ${{ secrets.AWS_S3_BUCKET_NAME}} | |
| envkey_AWS_CLOUDFRONT_DOMAIN: ${{ secrets.AWS_CLOUDFRONT_DOMAIN}} | |
| envkey_NAVER_MAP_CLIENT_ID: ${{ secrets.NAVER_MAP_CLIENT_ID }} | |
| envkey_NAVER_MAP_CLIENT_SECRET: ${{ secrets.NAVER_MAP_CLIENT_SECRET }} | |
| envkey_COOLSMS_API_KEY: ${{ secrets.COOLSMS_API_KEY }} | |
| envkey_COOLSMS_API_SECRET: ${{ secrets.COOLSMS_API_SECRET }} | |
| envkey_COOLSMS_FROM_NUMBER: ${{ secrets.COOLSMS_FROM_NUMBER }} | |
| envkey_VAPID_PUBLIC_KEY: ${{ secrets.VAPID_PUBLIC_KEY }} | |
| envkey_VAPID_PRIVATE_KEY: ${{ secrets.VAPID_PRIVATE_KEY }} | |
| envkey_VAPID_SUBJECT: ${{ secrets.VAPID_SUBJECT }} | |
| file_name: .env.development | |
| fail_on_empty: false | |
| sort_keys: false | |
| - id: commit | |
| uses: pr-mpt/actions-commit-hash@v3 | |
| - name: Build and Push to ECR | |
| uses: mr-smithers-excellent/docker-build-push@v6 | |
| with: | |
| image: halsaram/backend | |
| tags: ${{ steps.commit.outputs.short }}, latest | |
| registry: ${{ secrets.AWS_ECR_REGISTRY }} | |
| dockerfile: Dockerfile | |
| env: | |
| AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID_ACTIONS }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY_ACTIONS }} | |
| deploy: | |
| name: Deploy | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Configure AWS credentials | |
| uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| role-to-assume: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/GitHubActions-Deploy-Role | |
| aws-region: ${{ env.AWS_REGION }} | |
| - 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: ${{ env.ECS_TASK_DEFINITION }} | |
| container-name: ${{ env.CONTAINER_NAME }} | |
| image: ${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} | |
| environment-variables: | | |
| NODE_ENV=development | |
| FRONTEND_URL=https://halsaram.site | |
| DB_HOST=${{ secrets.DB_HOST }} | |
| DB_PORT=${{ secrets.DB_PORT }} | |
| DB_USERNAME=${{ secrets.DB_USERNAME }} | |
| DB_PASSWORD=${{ secrets.DB_PASSWORD }} | |
| DB_NAME=${{ secrets.DB_NAME }} | |
| KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }} | |
| KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }} | |
| KAKAO_REDIRECT_URI=${{ secrets.KAKAO_REDIRECT_URI }} | |
| NAVER_CLIENT_ID=${{ secrets.NAVER_CLIENT_ID }} | |
| NAVER_CLIENT_SECRET=${{ secrets.NAVER_CLIENT_SECRET }} | |
| NAVER_REDIRECT_URI=${{ secrets.NAVER_REDIRECT_URI }} | |
| GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }} | |
| GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }} | |
| GOOGLE_REDIRECT_URI=${{ secrets.GOOGLE_REDIRECT_URI }} | |
| JWT_SECRET=${{ secrets.JWT_SECRET }} | |
| JWT_ACCESS_TOKEN_EXPIRES_IN=${{ secrets.JWT_ACCESS_TOKEN_EXPIRES_IN }} | |
| JWT_REFRESH_TOKEN_EXPIRES_IN=${{ secrets.JWT_REFRESH_TOKEN_EXPIRES_IN }} | |
| AWS_REGION=${{ secrets.AWS_REGION }} | |
| AWS_S3_BUCKET_NAME=${{ secrets.AWS_S3_BUCKET_NAME }} | |
| AWS_CLOUDFRONT_DOMAIN=${{ secrets.AWS_CLOUDFRONT_DOMAIN }} | |
| NAVER_MAP_CLIENT_ID=${{ secrets.NAVER_MAP_CLIENT_ID }} | |
| NAVER_MAP_CLIENT_SECRET=${{ secrets.NAVER_MAP_CLIENT_SECRET }} | |
| COOLSMS_API_KEY=${{ secrets.COOLSMS_API_KEY }} | |
| COOLSMS_API_SECRET=${{ secrets.COOLSMS_API_SECRET }} | |
| COOLSMS_FROM_NUMBER=${{ secrets.COOLSMS_FROM_NUMBER }} | |
| VAPID_PUBLIC_KEY=${{ secrets.VAPID_PUBLIC_KEY }} | |
| VAPID_PRIVATE_KEY=${{ secrets.VAPID_PRIVATE_KEY }} | |
| VAPID_SUBJECT=${{ secrets.VAPID_SUBJECT }} | |
| - name: Deploy Amazon ECS task definition | |
| uses: aws-actions/amazon-ecs-deploy-task-definition@v2 | |
| with: | |
| task-definition: ${{ steps.task-def.outputs.task-definition }} | |
| service: ${{ env.ECS_SERVICE }} | |
| cluster: ${{ env.ECS_CLUSTER }} | |
| wait-for-service-stability: true |