From ae4472ef16281b80b3e8d46a83c179ab3872f6be Mon Sep 17 00:00:00 2001 From: achmad Date: Thu, 28 May 2026 23:53:43 +0700 Subject: [PATCH] ci: add compose.yml and update deploy workflow with SSH to host --- .gitea/workflows/deploy.yml | 41 ++++++++++++++++++++++++++++++++----- Dockerfile | 1 - compose.yml | 15 ++++++++++++++ 3 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 compose.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index fbbb320..702a5bc 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -8,10 +8,41 @@ on: jobs: deploy: runs-on: self-hosted + env: + SSHPASS: ${{ secrets.HOST_SSH_PASS }} steps: - - uses: actions/checkout@v3 - - - name: Build and redeploy + - name: Install SSH tools run: | - docker compose build kotobane - docker compose up -d --no-deps kotobane + if command -v apt-get > /dev/null; then + export DEBIAN_FRONTEND=noninteractive + apt-get update -qq + apt-get install -y -qq openssh-client sshpass + elif command -v apk > /dev/null; then + apk add --no-cache openssh-client sshpass + else + echo "ERROR: No supported package manager found" + exit 1 + fi + + - name: Setup SSH + run: | + mkdir -p ~/.ssh + chmod 700 ~/.ssh + ssh-keyscan -H "${{ secrets.HOST_IP }}" >> ~/.ssh/known_hosts + cat > ~/.ssh/config << 'EOF' + Host vps + HostName ${{ secrets.HOST_IP }} + User ${{ secrets.HOST_USER }} + StrictHostKeyChecking yes + EOF + chmod 600 ~/.ssh/config + + - name: Pull and redeploy + run: | + sshpass -e ssh vps <<'ENDSSH' + set -e + cd /path/to/kotobane + docker compose pull kotobane + docker compose up -d --no-deps kotobane + docker image prune -f + ENDSSH diff --git a/Dockerfile b/Dockerfile index 8139d7c..dad239b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,5 @@ WORKDIR /app ENV NODE_ENV=production COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/static ./.next/static -COPY --from=builder /app/public ./public EXPOSE 3000 CMD ["node", "server.js"] diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..3b65d1a --- /dev/null +++ b/compose.yml @@ -0,0 +1,15 @@ +services: + kotobane: + image: registry.achmad.dev/kotobane:latest + container_name: kotobane + restart: unless-stopped + ports: + - "3000:3000" + environment: + NODE_ENV: production + DIRECTUS_URL: https://cms.achmad.dev + DIRECTUS_TOKEN: ${DIRECTUS_TOKEN} + REVALIDATE_SECRET: ${REVALIDATE_SECRET} + NEXT_PUBLIC_DIRECTUS_URL: https://cms.achmad.dev + NEXT_PUBLIC_DIRECTUS_TOKEN: ${DIRECTUS_TOKEN} + NEXT_PUBLIC_BASE_URL: https://kotobane.achmad.dev