Skip to content

Commit

Permalink
chore: Update deployment
Browse files Browse the repository at this point in the history
  • Loading branch information
LordLuceus committed Jun 9, 2024
1 parent 9c59e3e commit 43ec406
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 20 deletions.
72 changes: 62 additions & 10 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,73 @@
name: Deploy to Server
name: Deploy to Production

on:
push:
branches:
- master

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build-and-push:
name: Build and Push Docker Image
runs-on: ubuntu-latest

permissions:
contents: read
packages: write
attestations: write
id-token: write

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Log in to GitHub Container Registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

- name: Build and push Docker image
id: push
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
with:
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true

deploy:
name: Deploy to Production
runs-on: ubuntu-latest
needs: build-and-push

steps:
- name: Deploy to Server
env:
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
SERVER_IP: ${{ secrets.SERVER_IP }}
run: |
echo "$DEPLOY_KEY" > deploy_key
chmod 600 deploy_key
ssh -i deploy_key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$SERVER_IP "/home/luceus/melvin/deploy.sh"
rm -f deploy_key
- name: SSH into Production Server and Deploy
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_IP }}
port: ${{ secrets.SSH_PORT }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.DEPLOY_KEY }}
script_stop: true
script: |
docker login ${{ env.REGISTRY }} -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }}
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
sudo systemctl restart melvin
9 changes: 3 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,14 @@ RUN npm run build

FROM node:20-alpine

WORKDIR /app

# Install dependencies
RUN apk add --no-cache ffmpeg

ENV NODE_ENV=production

COPY --from=builder /app/assets ./assets
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/run.sh ./run.sh
COPY --from=builder /app ./

# Start the bot
CMD ["./run.sh"]
25 changes: 25 additions & 0 deletions docker-compose.development.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
services:
melvin:
build:
context: .
dockerfile: Dockerfile
depends_on:
- db
restart: on-failure
container_name: melvin
env_file:
- .env

db:
image: postgres:16-alpine
container_name: melvin_db
hostname: postgres
ports:
- 5432:5432
volumes:
- pgdata:/var/lib/postgresql/data
env_file:
- .env

volumes:
pgdata:
6 changes: 2 additions & 4 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
services:
melvin:
build:
context: .
dockerfile: Dockerfile
image: ghcr.io/lordluceus/melvin:latest
depends_on:
- db
restart: on-failure
Expand All @@ -11,7 +9,7 @@ services:
- .env

db:
image: postgres:13
image: postgres:16-alpine
container_name: melvin_db
hostname: postgres
ports:
Expand Down

0 comments on commit 43ec406

Please sign in to comment.