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: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Build Docker image
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
push: false
|
|
load: true
|
|
tags: kekbot:latest
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
|
|
- name: Save Docker image
|
|
run: docker save kekbot:latest -o kekbot.tar
|
|
|
|
- name: Install SSH dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y sshpass
|
|
|
|
- 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 Dockerfile kekbot.tar hllywluis@luis-nas.lan:/mnt/kCloud/Home/hllywluis/kekbot/
|
|
sshpass -p "$SSH_PASSWORD" scp -o StrictHostKeyChecking=no .env hllywluis@luis-nas.lan:/mnt/kCloud/Home/hllywluis/kekbot/
|
|
|
|
# Load Docker image and deploy
|
|
sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no hllywluis@luis-nas.lan << 'EOF'
|
|
cd /mnt/kCloud/Home/hllywluis/kekbot
|
|
docker load -i kekbot.tar
|
|
docker-compose down || true
|
|
docker-compose up -d
|
|
EOF |