auto-cd(dev) #79
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: auto-cd(dev) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| dev_command: | |
| type: choice | |
| required: true | |
| description: 'dev command' | |
| options: | |
| - yarn dev | |
| env: | |
| SERVER_HOST: ${{ secrets.DEV_SERVER_HOST }} | |
| SERVER_USER: ${{ secrets.DEV_SERVER_USER }} | |
| SERVER_SSH_KEY: ${{ secrets.DEV_SERVER_SSH_KEY }} | |
| SERVER_SSH_PASSPHRASE: ${{ secrets.DEV_SERVER_SSH_PASSPHRASE }} | |
| DEPLOY_PATH: choose-tale/Backend | |
| BRANCH: ${{github.ref_name}} | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: echo env | |
| run: | | |
| echo ${{ env.DEPLOY_PATH }} | |
| echo ${{ env.BRANCH }} | |
| - name: create env | |
| run: | | |
| echo "${{ secrets.DEV_CONFIG }}" > src/config/docker.development.ts | |
| - name: aws login | |
| 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: ${{ secrets.AWS_REGION }} | |
| - name: aws ecr get-login-password | |
| id: login-password | |
| run: | | |
| aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.AWS_ECR_URI }} | |
| - name: aws ecr build | |
| run: | | |
| docker build -f dev.dockerfile -t ${{ secrets.AWS_ECR_URI }}/choosetale:backend . | |
| - name: aws ecr push | |
| run: | | |
| docker push ${{ secrets.AWS_ECR_URI }}/choosetale:backend | |
| - name: Set up SSH key with passphrase | |
| uses: webfactory/[email protected] | |
| with: | |
| ssh-private-key: ${{ env.SERVER_SSH_KEY }} | |
| ssh-passphrase: ${{ env.SERVER_SSH_PASSPHRASE }} | |
| - name: 원격 서버에 배포 | |
| run: | | |
| ssh -o StrictHostKeyChecking=no ${{ env.SERVER_USER }}@${{ env.SERVER_HOST }} << 'EOF' | |
| aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.AWS_ECR_URI }} | |
| docker ps -q --filter "name=choosetale-backend" | grep -q . && docker rm -f choosetale-backend || echo "컨테이너가 없습니다." | |
| docker images ${{ secrets.AWS_ECR_URI }}/choosetale:backend && docker rmi ${{ secrets.AWS_ECR_URI }}/choosetale:backend || echo "이미지가 없습니다." | |
| docker pull ${{ secrets.AWS_ECR_URI }}/choosetale:backend | |
| docker run -d -p 5001:5001 -p 5002:5002 -e NODE_ENV=development --net choosetale-network --name choosetale-backend ${{ secrets.AWS_ECR_URI }}/choosetale:backend | |
| docker-compose -f dev.docker-compose.yml up -d | |
| EOF | |
| - name: 슬랙 메시지 전송 | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CI_CHANNEL_WEBHOOK }} | |
| run: | | |
| curl -X POST -H 'Content-type: application/json' --data '{"text":"백엔드 배포가 완료되었습니다. port: 5001 , branch: ${{ env.BRANCH }}"}' $SLACK_WEBHOOK_URL | |
| - name: SSH 키 정리 | |
| run: rm -rf ~/.ssh |