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: # джоба проверки изменений в зависимостях. Если requirements.txt был изменен, то будет выполнена сборка и пуш образа runs-on: ubuntu-latest outputs: src_changed: ${{ steps.need-build.outputs.src }} steps: - uses: actions/checkout@v3 - uses: dorny/paths-filter@v2 id: need-build with: filters: | src: - 'requirements.txt' need-deploy: # джоба проверки изменений в файлах. При изменении пулит новые файлы и перезапускает контейнер runs-on: ubuntu-latest outputs: src_changed: ${{ steps.need-deploy.outputs.src }} steps: - uses: actions/checkout@v3 - uses: dorny/paths-filter@v2 id: need-deploy with: filters: | src: - 'docs/*' - 'mkdocs.yml' 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