Skip to content

📝 docs: add CI/CD deployment section to README #18

📝 docs: add CI/CD deployment section to README

📝 docs: add CI/CD deployment section to README #18

Workflow file for this run

name: Deploy to Dev Server
on:
push:
branches: [main]
workflow_dispatch:
jobs:
checks:
uses: ./.github/workflows/python-checks.yml
build-and-push:
needs: checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: |
hendisantika/jvmid-bot:latest
hendisantika/jvmid-bot:${{ github.sha }}
hendisantika/jvmid-bot:${{ github.run_number }}
cache-from: type=gha
cache-to: type=gha,mode=max
deploy:
needs: build-and-push
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEV_SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
echo "${{ secrets.DEV_SSH_KNOWN_HOSTS }}" > ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
- name: Create app directory on server
run: |
ssh deployer@103.31.204.189 'mkdir -p ~/jvmid-bot/data'
- name: Write .env file to server
run: |
ssh deployer@103.31.204.189 "echo '${{ vars.DEV_ENV_FILE }}' > ~/jvmid-bot/.env"
- name: Write groups.json to server
run: |
ssh deployer@103.31.204.189 "echo '${{ vars.DEV_GROUPS_JSON }}' > ~/jvmid-bot/groups.json"
- name: Copy docker-compose.prod.yml to server
run: |
scp docker-compose.prod.yml deployer@103.31.204.189:~/jvmid-bot/docker-compose.prod.yml
- name: Deploy on server
run: |
ssh deployer@103.31.204.189 "cd ~/jvmid-bot && export DOCKER_UID=\$(id -u) DOCKER_GID=\$(id -g) && IMAGE_TAG=${{ github.run_number }} docker compose -f docker-compose.prod.yml pull && IMAGE_TAG=${{ github.run_number }} docker compose -f docker-compose.prod.yml up -d && docker image prune -f && echo 'Deployment complete (tag: ${{ github.run_number }}). Running containers:' && docker ps --filter 'name=jvmid-bot'"