From a507e5242d9600255b9db86e6ceac4badb0b3041 Mon Sep 17 00:00:00 2001 From: jisubaek <88620009+jisubaek@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:18:37 +0900 Subject: [PATCH] Create deploy_fortest --- .github/workflows/deploy_fortest | 77 ++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .github/workflows/deploy_fortest diff --git a/.github/workflows/deploy_fortest b/.github/workflows/deploy_fortest new file mode 100644 index 0000000..3a32c22 --- /dev/null +++ b/.github/workflows/deploy_fortest @@ -0,0 +1,77 @@ +name: Build & Deploy (crew - deploy-test) + +on: + push: + branches: [ "develop" ] + workflow_dispatch: + +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: { distribution: corretto, java-version: '21' } + - name: Build (skip tests) + run: ./gradlew clean build -x test + + - name: Docker login + run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin + + - name: Build & Push + run: | + REPO=${{ secrets.DOCKER_USERNAME }}/retrip-crew + docker build -t $REPO:deploy-test -t $REPO:deploy-test-${{ github.sha }} . + docker push $REPO:deploy-test + docker push $REPO:deploy-test-${{ github.sha }} + + open-ssh: + runs-on: ubuntu-latest + needs: build-and-push + outputs: { runner_ip: ${{ steps.ip.outputs.ipv4 }} } + steps: + - id: ip + uses: candidob/get-runner-ip@2e5406f1492227920ba96df909e648be5e8b8cb2 + - uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_DEFAULT_REGION }} + - run: | + aws ec2 authorize-security-group-ingress \ + --group-id "${{ secrets.AWS_SECURITY_GROUP_ID }}" \ + --protocol tcp --port 22 \ + --cidr "${{ steps.ip.outputs.ipv4 }}/32" + + deploy: + runs-on: ubuntu-latest + needs: [build-and-push, open-ssh] + steps: + - uses: appleboy/ssh-action@v1.2.0 + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_PRIVATE_KEY }} + script: | + set -e + cd ~/all-in-one + docker compose pull crew + docker compose up -d crew + docker image prune -f + docker compose ps + + close-ssh: + if: always() + runs-on: ubuntu-latest + needs: open-ssh + steps: + - uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_DEFAULT_REGION }} + - run: | + aws ec2 revoke-security-group-ingress \ + --group-id "${{ secrets.AWS_SECURITY_GROUP_ID }}" \ + --protocol tcp --port 22 \ + --cidr "${{ needs.open-ssh.outputs.runner_ip }}/32"