From d09b17585d31dd88066ebb696f98faab189bae87 Mon Sep 17 00:00:00 2001 From: NamJihyun99 <87467801+NamJihyun99@users.noreply.github.com> Date: Wed, 8 May 2024 06:15:07 +0900 Subject: [PATCH] [Deploy] Github action script --- .github/workflows/main.yml | 70 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..9707c25 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,70 @@ +name: Passionate Pro Deployment + +on: + push: + branches: [ "main" ] + +permissions: + contents: read + +jobs: + deploy: + name: Deploy + runs-on: ubuntu-latest + env: + AWS_REGION: ap-northeast-2 + working-directory: ./pro + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Java JDK + uses: actions/setup-java@v4.2.1 + with: + java-version: '17' + distribution: 'temurin' + + - name: make application.yml + if: true + run: | + touch ./src/main/resources/application.yml + echo "${{ secrets.PROPERTIES }}" > ./src/main/resources/application.yml + shell: bash + working-directory: ${{ env.working-directory }} + + - name: Gradle execute permission for gradlew + run: chmod +x gradlew + shell: bash + working-directory: ${{ env.working-directory }} + + - name: Build with Gradle + run: ./gradlew bootjar + shell: bash + working-directory: ${{ env.working-directory }} + + - name: DockerHub Login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Docker Image Build + run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }} . + + - name: DockerHub Push + run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }} + + - name: Application Run + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USERNAME }} + key: ${{ secrets.EC2_KEY }} + + script: | + sudo docker kill ${{ secrets.PROJECT_NAME }} + sudo docker rm -f ${{ secrets.PROJECT_NAME }} + sudo docker rmi ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }} + sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }} + sudo docker run -p 8080:8080 --name ${{ secrets.PROJECT_NAME }}