All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 7m3s
Mirrors the LichessStatTgWeb pipeline: build all 7 service images, push to the Gitea registry, transfer to the prod host via docker save/load (registry isn't reachable from the external VPS), and redeploy with docker-compose.prod.yml.
58 lines
2.3 KiB
YAML
58 lines
2.3 KiB
YAML
name: CI/CD Pipeline
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
build-and-deploy:
|
|
runs-on: shell
|
|
steps:
|
|
- name: Clone repository
|
|
run: git clone --depth 1 "http://192.168.8.174:3000/${GITHUB_REPOSITORY}.git" .
|
|
env:
|
|
GIT_TERMINAL_PROMPT: '0'
|
|
|
|
- name: Ensure Docker CLI
|
|
run: |
|
|
apk add --no-cache docker-cli docker-cli-compose openssh-client || true
|
|
grep -q '^vrubel:' /etc/passwd || echo 'vrubel:x:1000:1000::/data:/bin/sh' >> /etc/passwd
|
|
|
|
- name: Setup .env for CI/CD
|
|
run: cp .env.example .env
|
|
|
|
- name: Build Docker images
|
|
run: docker-compose build
|
|
|
|
- name: Login to Gitea Container Registry
|
|
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login http://192.168.8.174:3000 -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
|
|
|
- name: Push images to registry
|
|
run: |
|
|
docker push 192.168.8.174:3000/vrubel/video-bot:latest
|
|
docker push 192.168.8.174:3000/vrubel/video-admin-bot:latest
|
|
docker push 192.168.8.174:3000/vrubel/video-youtube:latest
|
|
docker push 192.168.8.174:3000/vrubel/video-instagram:latest
|
|
docker push 192.168.8.174:3000/vrubel/video-vk:latest
|
|
docker push 192.168.8.174:3000/vrubel/video-yapfiles:latest
|
|
docker push 192.168.8.174:3000/vrubel/video-tiktok:latest
|
|
|
|
- name: Transfer images to prod
|
|
run: |
|
|
docker save \
|
|
192.168.8.174:3000/vrubel/video-bot:latest \
|
|
192.168.8.174:3000/vrubel/video-admin-bot:latest \
|
|
192.168.8.174:3000/vrubel/video-youtube:latest \
|
|
192.168.8.174:3000/vrubel/video-instagram:latest \
|
|
192.168.8.174:3000/vrubel/video-vk:latest \
|
|
192.168.8.174:3000/vrubel/video-yapfiles:latest \
|
|
192.168.8.174:3000/vrubel/video-tiktok:latest \
|
|
| ssh -i /data/.ssh/id_ed25519 -o StrictHostKeyChecking=no root@130.17.6.76 docker load
|
|
|
|
- name: Deploy on prod host
|
|
run: |
|
|
cat docker-compose.prod.yml | ssh -i /data/.ssh/id_ed25519 -o StrictHostKeyChecking=no root@130.17.6.76 \
|
|
"cat > ~/services/videoDownloadTGbot/docker-compose.yml"
|
|
ssh -i /data/.ssh/id_ed25519 -o StrictHostKeyChecking=no root@130.17.6.76 \
|
|
"cd ~/services/videoDownloadTGbot && docker compose up -d --remove-orphans"
|