From 02f40e9cc3cf88f308b7169762d674c047e88a5d Mon Sep 17 00:00:00 2001 From: Lectom C Han Date: Wed, 4 Feb 2026 14:54:43 +0900 Subject: [PATCH] Split build-on-server and registry deploy workflows --- .gitea/workflows/deploy-registry.yml | 54 ++++++++++++++++++++++ .gitea/workflows/deploy.yml | 67 ++++++++++------------------ 2 files changed, 78 insertions(+), 43 deletions(-) create mode 100644 .gitea/workflows/deploy-registry.yml diff --git a/.gitea/workflows/deploy-registry.yml b/.gitea/workflows/deploy-registry.yml new file mode 100644 index 0000000..459fac5 --- /dev/null +++ b/.gitea/workflows/deploy-registry.yml @@ -0,0 +1,54 @@ +name: Deploy (registry) + +on: + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to registry + uses: docker/login-action@v3 + with: + registry: ${{ vars.HARBOR_ENDPOINT }} + username: ${{ vars.HARBOR_ROBOT_ACCOUNT }} + password: ${{ secrets.HARBOR_ROBOT_KEY }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: | + ${{ vars.HARBOR_ENDPOINT }}/${{ vars.IMAGE_NAME }}:latest + ${{ vars.HARBOR_ENDPOINT }}/${{ vars.IMAGE_NAME }}:${{ github.sha }} + + - name: Deploy via SSH + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ vars.SSH_HOST }} + username: ${{ vars.SSH_USER }} + key: ${{ secrets.SSH_KEY }} + port: ${{ vars.SSH_PORT }} + script: | + cd ${{ secrets.DEPLOY_PATH }} + cat << 'ENVEOF' > .env + ${{ secrets.DEPLOY_ENV_FILE }} + ENVEOF + + # Export variables from .env file + set -a + source .env + set +a + + docker compose --env-file .env pull + docker compose --env-file .env up -d diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index daab41d..633a86a 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,56 +1,37 @@ -name: Deploy (main) +name: Deploy (build on server) on: - push: - branches: ["main"] - workflow_dispatch: + push: + branches: [ "main" ] + workflow_dispatch: jobs: - build-and-deploy: - runs-on: ubuntu-latest - permissions: - contents: read + deploy: + runs-on: ubuntu-latest + permissions: + contents: read - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to registry - uses: docker/login-action@v3 - with: - registry: ${{ secrets.REGISTRY }} - username: ${{ secrets.REGISTRY_USER }} - password: ${{ secrets.REGISTRY_PASSWORD }} - - - name: Build and push - uses: docker/build-push-action@v5 - with: - context: . - push: true - tags: | - ${{ secrets.REGISTRY }}/${{ secrets.IMAGE_NAME }}:latest - ${{ secrets.REGISTRY }}/${{ secrets.IMAGE_NAME }}:${{ github.sha }} - - - name: Deploy via SSH - uses: appleboy/ssh-action@v1.0.3 - with: - host: ${{ secrets.SSH_HOST }} - username: ${{ secrets.SSH_USER }} - key: ${{ secrets.SSH_KEY }} - port: ${{ secrets.SSH_PORT }} - script: | + steps: + - name: Deploy via SSH + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ vars.SSH_HOST }} + username: ${{ vars.SSH_USER }} + key: ${{ secrets.SSH_KEY }} + port: ${{ vars.SSH_PORT }} + script: | cd ${{ secrets.DEPLOY_PATH }} - cat << 'EOF' > .env + cat << 'ENVEOF' > .env ${{ secrets.DEPLOY_ENV_FILE }} - EOF + ENVEOF # Export variables from .env file set -a source .env set +a - docker compose --env-file .env pull - docker compose --env-file .env up -d + git fetch origin main + git checkout main + git pull --ff-only + + docker compose --env-file .env up -d --build