fix: CD file jdbc connection #138
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: CD | ||
| on: | ||
| push: | ||
| branches: | ||
| - develop | ||
| jobs: | ||
| deploy: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v2 | ||
| - name: Set up JDK 17 | ||
| uses: actions/setup-java@v4 | ||
| with: | ||
| java-version: '17' | ||
| distribution: 'temurin' | ||
| - name: Setup Gradle | ||
| uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 | ||
| - name: Add SSH host key | ||
| run: | | ||
| mkdir -p ~/.ssh | ||
| ssh-keyscan -H ${{ secrets.HOST }} >> ~/.ssh/known_hosts | ||
| chmod 644 ~/.ssh/known_hosts | ||
| - name: Set up SSH private key | ||
| run: | | ||
| echo "${{ secrets.EC2_PRIVATE_KEY }}" > ~/.ssh/private_key.pem | ||
| chmod 600 ~/.ssh/private_key.pem | ||
| - name: Build with Gradle | ||
| run: ./gradlew clean build -x test | ||
| - name: Check JAR File | ||
| run: ls -l build/libs/ | ||
| # - name: Upload JAR to Remote Server | ||
| # run: | | ||
| # echo "${{ secrets.EC2_PRIVATE_KEY }}" > ~/.ssh/private_key.pem | ||
| # chmod 600 ~/.ssh/private_key.pem | ||
| # ssh -i ~/.ssh/private_key.pem ${{ secrets.USERNAME }}@${{ secrets.HOST }} "mkdir -p ${{ secrets.APP_DIR }}" | ||
| # scp -i ~/.ssh/private_key.pem build/libs/moim-0.0.1-SNAPSHOT.jar ${{ secrets.USERNAME }}@${{ secrets.HOST }}:${{ secrets.APP_DIR }} | ||
| # env: | ||
| # EC2_PRIVATE_KEY: ${{ secrets.EC2_PRIVATE_KEY }} | ||
| # | ||
| # - name: Deploy to Remote Server | ||
| # run: | | ||
| # ssh -i ~/.ssh/private_key.pem ${{ secrets.USERNAME }}@${{ secrets.HOST }} ' | ||
| # export APP_DIR="${{ secrets.APP_DIR }}"; | ||
| # export DB="${{ secrets.DB }}"; | ||
| # export DB_PASSWORD="${{ secrets.DB_PASSWORD }}"; | ||
| # export DB_USERNAME="${{ secrets.DB_USERNAME }}"; | ||
| # export HOST="${{ secrets.HOST }}"; | ||
| # bash -s | ||
| # ' < ./deploy.sh | ||
| # env: | ||
| # EC2_PRIVATE_KEY: ${{ secrets.EC2_PRIVATE_KEY }} | ||
| # APP_DIR: ${{ secrets.APP_DIR }} | ||
| # DB: ${{ secrets.DB }} | ||
| # DB_PASSWORD: ${{ secrets.DB_PASSWORD }} | ||
| # DB_USERNAME: ${{ secrets.DB_USERNAME }} | ||
| # HOST: ${{ secrets.HOST }} | ||
| # add docker | ||
| - name: Set AWS credentials | ||
| uses: aws-actions/configure-aws-credentials@v4 | ||
| with: | ||
| aws-region: ap-northeast-2 | ||
| aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }} | ||
| aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }} | ||
| # login to ECR | ||
| - name: Login to ECR | ||
| id: login-ecr | ||
| uses: aws-actions/amazon-ecr-login@v2 | ||
| # create docker image | ||
| - name: Create docker image | ||
| run: docker build -t moim-server . | ||
| # add tag to docker image | ||
| - name: Add tag to docker image | ||
| run: docker tag moim-server ${{ steps.login-ecr.outputs.registry }}/moim-server:latest | ||
| # push docker image to ECR | ||
| - name: Push docker image to ECR | ||
| run: docker push ${{ steps.login-ecr.outputs.registry }}/moim-server:latest | ||
| # access EC2 with SSH | ||
| - name: Deploy container on EC2 | ||
| uses: appleboy/ssh-action@v1.0.3 | ||
| with: | ||
| host: ${{ secrets.HOST }} | ||
| username: ${{ secrets.USERNAME }} | ||
| key: ${{ secrets.EC2_PRIVATE_KEY }} | ||
| script_stop: true | ||
| script: | | ||
| docker stop moim-server || true | ||
| docker rm moim-server || true | ||
| docker pull ${{ steps.login-ecr.outputs.registry }}/moim-server:latest | ||
| # docker run -d \ | ||
| # --name moim-server \ | ||
| # -p 8080:8080 \ | ||
| # -e HOST=${{ secrets.HOST }} \ | ||
| # -e DB_USERNAME=${{ secrets.DB_USERNAME }} \ | ||
| # -e DB_PASSWORD=${{ secrets.DB_PASSWORD }} \ | ||
| # ${{ steps.login-ecr.outputs.registry }}/moim-server:latest | ||
| docker run --add-host=host.docker.internal:host-gateway \ | ||
| -e HOST=host.docker.internal \ | ||
| -e DB_USERNAME=${{ secrets.DB_USERNAME }} \ | ||
| -e DB_PASSWORD=${{ secrets.DB_PASSWORD }} \ | ||
| -p 8080:8080 \ | ||
| --name moim-server \ | ||
| -d ${{ steps.login-ecr.outputs.registry }}/moim-server:latest | ||