From 66285753f584d798ce335cbf9e16e7e9776c17ab Mon Sep 17 00:00:00 2001 From: osdoonhyun Date: Wed, 17 Jan 2024 18:52:46 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=B0=B0=ED=8F=AC=20=EC=9E=90=EB=8F=99?= =?UTF-8?q?=ED=99=94=20github=20actions=20workflow=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/code-update.yml | 26 +++++++++++ .github/workflows/docker-ci-cd.yml | 69 ++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 .github/workflows/code-update.yml create mode 100644 .github/workflows/docker-ci-cd.yml diff --git a/.github/workflows/code-update.yml b/.github/workflows/code-update.yml new file mode 100644 index 0000000..a9f7f1d --- /dev/null +++ b/.github/workflows/code-update.yml @@ -0,0 +1,26 @@ +name: EC2 Update + +on: + push: + branches: ['main'] + pull_request: + branches: ['main'] + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + + - name: ssh to ec2 + uses: appleboy/ssh-action@master + with: + key: ${{ secrets.SSH_PRIVATE_KEY }} + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USERNAME }} + password: ${{ secrets.EC2_PASSWORD}} + script: | # 인스턴스 코드 업데이트 + cd Sel-Q + git pull https://osdoonhyun:${{ secrets.GIT_TOKEN }}@github.com/osdoonhyun/SEL-Q.git diff --git a/.github/workflows/docker-ci-cd.yml b/.github/workflows/docker-ci-cd.yml new file mode 100644 index 0000000..b494a93 --- /dev/null +++ b/.github/workflows/docker-ci-cd.yml @@ -0,0 +1,69 @@ +name: CI/CD Docker + +on: + push: + branches: ['main'] + pull_request: + branches: ['main'] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_PASSWORD }} + + # Nginx + - name: Build and push Nginx + uses: docker/build-push-action@v2 + with: + context: ./nginx + push: true + tags: osdoonhyun/sel-q:nginx-latest + + # Client + - name: Build and push Client + uses: docker/build-push-action@v2 + with: + context: ./selq-client + push: true + tags: osdoonhyun/sel-q:client-latest + + # Server + - name: Build and push Server + uses: docker/build-push-action@v2 + with: + context: ./selq-server + push: true + tags: osdoonhyun/sel-q:server-latest + + deploy: + needs: build + runs-on: ubuntu-latest + + steps: + - name: ssh connect & production + uses: appleboy/ssh-action@master + with: + key: ${{ secrets.SSH_PRIVATE_KEY }} + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USERNAME }} + password: ${{ secrets.EC2_PASSWORD}} + port: ${{ secrets.EC2_SSH_PORT }} + script: | # 이미지 최신화, 서비스 업데이트 + cd Sel-Q + docker compose down + docker system prune -a --volumes -f + docker compose pull -q + docker compose up --force-recreate --build -d --quiet-pull 2>log.out + cat log.out