Без рубрики

Деплой 1С-Битрикс через GitLab CI/CD: автоматизация с откатом при ошибке

GitLab CI/CD позволяет автоматически деплоить Битрикс на сервер при каждом коммите. Рассмотрим безопасный подход с откатом при ошибке.

Что хранить в Git

Рекомендуется хранить только публичную часть и /local/. Добавьте в .gitignore:

/bitrix/
/upload/
/bitrix/cache/
.settings.php

SSH-ключи для деплоя

ssh-keygen -t ed25519 -f deploy_key -N ""

Приватный ключ добавьте в GitLab: Settings → CI/CD → Variables → DEPLOY_KEY. Публичный — в ~/.ssh/authorized_keys на сервере.

.gitlab-ci.yml

stages: [deploy]

deploy_production:
  stage: deploy
  only: [main]
  before_script:
    - eval $(ssh-agent -s)
    - echo "$DEPLOY_KEY" | ssh-add -
    - ssh-keyscan $SERVER_HOST >> ~/.ssh/known_hosts
  script:
    - ssh $SERVER_USER@$SERVER_HOST "
        cd /var/www/site &&
        git pull origin main &&
        rm -rf bitrix/cache/* bitrix/managed_cache/*
      "

Файл настроек не хранится в Git — на сервере он хранится отдельно и подключается симлинком:

ln -sf /var/www/configs/.settings.php /var/www/site/bitrix/.settings.php

Откат при ошибке

script:
  - ssh $SERVER_USER@$SERVER_HOST "
      cd /var/www/site &&
      git fetch origin &&
      git reset --hard origin/main || git reset --hard HEAD~1
    "