64 lines
2.0 KiB
YAML
64 lines
2.0 KiB
YAML
name: Deploy to NAS
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Generate package-lock.json
|
|
run: npm ci --omit=dev
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to Gitea Container Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: tea.kleptonix.com
|
|
username: ${{ secrets.TEA_USERNAME }}
|
|
password: ${{ secrets.TEA_TOKEN }}
|
|
|
|
- name: Build and Push Docker image
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
push: true
|
|
tags: tea.kleptonix.com/hllywluis/kekbot.js:latest
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
|
|
- name: Generate .env file
|
|
run: |
|
|
cat > .env << EOF
|
|
DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }}
|
|
CLIENT_ID=${{ secrets.DISCORD_CLIENT_ID }}
|
|
NANOGPT_API_KEY=${{ secrets.NANOGPT_API_KEY }}
|
|
NODE_ENV=production
|
|
EOF
|
|
|
|
- name: Deploy to NAS
|
|
env:
|
|
SSH_PASSWORD: ${{ secrets.NAS_SSH_PASSWORD }}
|
|
run: |
|
|
# Create app directory on NAS
|
|
sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no hllywluis@luis-nas.lan "mkdir -p /mnt/kCloud/Home/hllywluis/kekbot"
|
|
|
|
# Copy Docker files (without .env, it's generated separately)
|
|
sshpass -p "$SSH_PASSWORD" scp -o StrictHostKeyChecking=no docker-compose.yml .env hllywluis@luis-nas.lan:/mnt/kCloud/Home/hllywluis/kekbot/
|
|
|
|
# Pull Docker image and deploy
|
|
sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no hllywluis@luis-nas.lan << 'EOF'
|
|
cd /mnt/kCloud/Home/hllywluis/kekbot
|
|
docker compose down || true
|
|
docker pull tea.kleptonix.com/_/hllywluis/kekbot.js:latest
|
|
docker compose up -d
|
|
EOF |