zkt26/sk1/.github/workflows/deploy-web.yml
2026-05-13 21:49:47 +02:00

82 lines
2.7 KiB
YAML

name: Deploy Web
on:
push:
branches: [main]
paths:
- 'web/**'
- '.github/workflows/deploy-web.yml'
workflow_dispatch:
env:
REGISTRY: ghcr.io
NGINX_IMAGE: ghcr.io/${{ github.repository_owner }}/readitlater-nginx
API_IMAGE: ghcr.io/${{ github.repository_owner }}/readitlater-api
jobs:
build-and-deploy:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v6
- uses: docker/login-action@v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v7
with:
context: web/nginx
push: true
tags: ${{ env.NGINX_IMAGE }}:latest,${{ env.NGINX_IMAGE }}:${{ github.sha }}
- uses: docker/build-push-action@v7
with:
context: web/api
push: true
tags: ${{ env.API_IMAGE }}:latest,${{ env.API_IMAGE }}:${{ github.sha }}
- name: Deploy to instance
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.WEB_HOST }}
username: ec2-user
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
sudo chown -R ec2-user:ec2-user /opt/app
echo "GITHUB_OWNER=${{ github.repository_owner }}" > /opt/app/.env
echo "DB_HOST=${{ secrets.DB_HOST }}" >> /opt/app/.env
echo "DB_PORT=5432" >> /opt/app/.env
echo "DB_NAME=${{ secrets.DB_NAME }}" >> /opt/app/.env
echo "DB_USER=${{ secrets.DB_USER }}" >> /opt/app/.env
echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> /opt/app/.env
echo "SUMMARIZER_URL=http://${{ secrets.SUMMARIZER_HOST }}:8000" >> /opt/app/.env
echo '${{ secrets.GITHUB_TOKEN }}' | sudo docker login ghcr.io -u ${{ github.actor }} --password-stdin
sudo docker pull ${{ env.NGINX_IMAGE }}:latest
sudo docker pull ${{ env.API_IMAGE }}:latest
cd /opt/app
cat > docker-compose.yml << 'COMPOSE'
services:
nginx:
image: ghcr.io/${{ github.repository_owner }}/readitlater-nginx:latest
ports:
- "80:80"
- "443:443"
environment:
- CERTBOT_EMAIL=pavelyman76@gmail.com
depends_on:
- api
restart: always
api:
image: ghcr.io/${{ github.repository_owner }}/readitlater-api:latest
env_file: .env
restart: always
COMPOSE
sudo /usr/local/bin/docker-compose down || true
sudo /usr/local/bin/docker-compose up -d