ci: add compose.yml and update deploy workflow with SSH to host
This commit is contained in:
@@ -8,10 +8,41 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
|
env:
|
||||||
|
SSHPASS: ${{ secrets.HOST_SSH_PASS }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- name: Install SSH tools
|
||||||
|
|
||||||
- name: Build and redeploy
|
|
||||||
run: |
|
run: |
|
||||||
docker compose build kotobane
|
if command -v apt-get > /dev/null; then
|
||||||
docker compose up -d --no-deps kotobane
|
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
|
||||||
|
|||||||
@@ -10,6 +10,5 @@ WORKDIR /app
|
|||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
COPY --from=builder /app/.next/standalone ./
|
COPY --from=builder /app/.next/standalone ./
|
||||||
COPY --from=builder /app/.next/static ./.next/static
|
COPY --from=builder /app/.next/static ./.next/static
|
||||||
COPY --from=builder /app/public ./public
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
CMD ["node", "server.js"]
|
CMD ["node", "server.js"]
|
||||||
|
|||||||
+15
@@ -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
|
||||||
Reference in New Issue
Block a user