From 13117f330fb747e28de94dcc1ae5b8084f68674a Mon Sep 17 00:00:00 2001 From: adorableco Date: Fri, 11 Oct 2024 13:25:30 +0900 Subject: [PATCH] =?UTF-8?q?Feat:=20production=20=EC=9A=A9=20cd=20workflow?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/production-cd.yml | 71 +++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .github/workflows/production-cd.yml diff --git a/.github/workflows/production-cd.yml b/.github/workflows/production-cd.yml new file mode 100644 index 0000000..6d4ca61 --- /dev/null +++ b/.github/workflows/production-cd.yml @@ -0,0 +1,71 @@ +name: production-cd + +on: + push: + branches: [ 'release' ] + +permissions: + contents: read + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + + - name: Set up properties + run: | + cd src/main + mkdir resources + cd resources + touch application.properties + echo "${{ secrets.PROD_APPLICATION }}" > application.properties + cat application.properties + + shell: bash + + + - name: Set up newrelic.yml + run: | + cd newrelic + touch newrelic.yml + echo "${{ secrets.PROD_NEW_RELIC_FILE }}" | base64 --decode > newrelic.yml + + shell: bash + + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew build -x test -x ktlintMainSourceSetCheck + + - name: Docker build + run: | + docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + docker build --no-cache -t app . + docker tag app ${{ secrets.DOCKER_USERNAME }}/prod-phote:latest + docker push ${{ secrets.DOCKER_USERNAME }}/prod-phote:latest + + - name: Deploy + uses: appleboy/ssh-action@v0.1.4 + env: + COMPOSE: "/home/ubuntu/compose/docker-compose-dev.yml" + with: + host: ${{ secrets.PROD_HOST }} + username: ${{ secrets.USERNAME }} + key: ${{ secrets.PROD_PRIVATE_KEY }} + port: ${{ secrets.DEV_PORT }} + envs: COMPOSE + script: | + sudo docker-compose -f $COMPOSE down --rmi all + sudo docker pull ${{ secrets.DOCKER_USERNAME }}/prod-phote:latest + sudo docker-compose -f $COMPOSE up -d