88 lines
2.9 KiB
YAML
88 lines
2.9 KiB
YAML
name: Docker Build and Push # Имя CI джобы
|
|
|
|
on: # Выполняется если производится push в ветку main
|
|
push:
|
|
branches: [ main ]
|
|
|
|
env: # Переменные окружения
|
|
REGISTRY: gitea.trastinfo.ru
|
|
IMAGE_NAME: sailor/mkdocs
|
|
PLATFORMS: linux/amd64,linux/arm64
|
|
|
|
jobs: # Список выполняемых джоб
|
|
need-build: # джоба проверки изменений в файлах. При изменении пулит новые файлы и перезапускает контейнер
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
src_changed: ${{ steps.filter.outputs.src }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: dorny/paths-filter@v2
|
|
with:
|
|
filters: |
|
|
src:
|
|
- 'docs/*'
|
|
- 'mkdocs.yml'
|
|
|
|
need-deploy: # джоба проверки изменений в зависимостях. Если requirements.txt был изменен, то будет выполнена сборка и пуш образа
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
src_changed: ${{ steps.filter.outputs.src }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: dorny/paths-filter@v2
|
|
with:
|
|
filters: |
|
|
src:
|
|
- 'requirements.txt'
|
|
|
|
build: # джоба сборки и пуша образа. Выполняется если проверка изменений показала что requirements.txt был изменен
|
|
needs: need-build
|
|
if: needs.need-build.outputs.src_changed == 'true'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Login to Gitea Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ secrets.REGISTRY_USERNAME }}
|
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
|
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: main
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Build and push multi-arch image
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
file: ./Dockerfile
|
|
push: true
|
|
tags: |
|
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
needs: need-deploy
|
|
if: needs.need-deploy.outputs.src_changed == 'true'
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Deploy over SSH
|
|
uses: appleboy/ssh-action@v0.1.6
|
|
with:
|
|
host: ${{ secrets.HOST }}
|
|
username: ${{ secrets.USER }}
|
|
key: ${{ secrets.KEY }}
|
|
script: |
|
|
cd /home/ubadmin/mkdocs
|
|
git pull origin main
|
|
sudo docker compose down
|
|
sudo docker compose up -d --build |