В этой статье мы расскажем, как установить GitLab Runner с исполнителем shell на хостинг для автоматического обновления файлов сайта.
1) Подключитесь к серверу хостинга по SSH (инструкция) и перейдите в каталог bin
в вашем контейнере.
cd ~/bin
2) Скачайте бинарный файл GitLab Runner и назначьте права на исполнение:
curl -L --output gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
chmod +x gitlab-runner
3) Зарегистрируйте runner с помощью команды:
./gitlab-runner register --url https://gitlab.com --token XXXXXXXX --executor shell --non-interactive
Токен для регистрации можно получить в GitLab:
Перейдите в репозиторий
Откройте “Settings” → “CI/CD” → “Runners”
Нажмите “New project runner” и укажите тег для нового runner
Подробнее об этом можно прочитать в официальной документации.
4) Откйроте файл файл config.toml
комадной:
nano ~/.gitlab-runner/config.toml
Измените строку check_interval = 0
на check_interval = 120
.
5) Настройте автозапуск gitlab-runner.
Для этого перейдите на страницу любого вашего сайта, в личном кабинете и откройте раздел “Фоновые процессы”
Добавьте новый фоновый процесс и вставьте команду
cd ~/bin && ./gitlab-runner run
6) Настройте очистку временных файлов.
Для этого откройте раздел “Cron”, нажмите кнопку “Создать задачу” и выберите пункт “Задать вручную”
Вставьте туда команду
0 * * * * rm -rf ~/bin/builds
и сохраните задание.
Настройка завершена. Теперь GitLab Runner готов к работе с CI/CD-задачами.
Для работы с gitlab-runner нужно написать CI/CD конфигурацию.
Мы покажем содерижмое файла .gitlab-ci.yml
, который можно использовать для настройки CI/CD в Gitlab. При изменении любого файла в ветке main
будет запускаться скачивание файлов на хостинг и их изменение.
Подробнее об этом можно прочитать в официальной документации.
stages:
- deploy
deploy_job:
stage: deploy
before_script:
- echo "Деплой на сервер..."
script:
- export DEPLOY_DIR="/home/cXXXXX/sitename.ru/app"
- export REPO_URL="http://gitlab.com/my_name/my_repository"
- cd "$DEPLOY_DIR"
- git config --local --add safe.directory "$DEPLOY_DIR"
- git remote set-url origin "$REPO_URL"
- git pull origin main
after_script:
- echo "Деплой завершён!"
Вместо /home/cXXXXX/sitename.ru/app
укажите папку, куда нужно загружать файлы из репозитория.
Вместо https://gitlab.ru/my_name/my_repository
укажите адрес Вашего репозитория.
Важно отметить! Данный пример будет работать, если в файлах сайта уже создана папка .git и она настроена на работу с удаленным репозиторием.
Если git не настроен для файлов сайта, тогда зайтите в папку с файлами сайта и выполните команды
git init
git remote add origin http://gitlab.com/my_name/my_repository
git pull origin main
Вместо https://gitlab.ru/my_name/my_repository
укажите адрес Вашего репозитория.
Для приватных репозиторев обновление файлов нужно скачивать не по http, а по ssh протоколу. Для этого выполните следующие настройки:
1) Подключитесь к серверу хостинга по SSH (инструкция) и сгенерируйте ssh-ключи командой:
ssh-keygen
Выведите публичный ssh-ключ командой
cat ~/.ssh/id_rsa.pub
2) Загрузите сгенерированный публичный ssh-ключ в gitlab для Вашего пользователя по официальной документации
3) Вместо https://gitlab.ru/my_name/my_repository
используйте строку git@itlab.ru:my_name/my_repository.git
в файле .gitlab-ci.yml
Также при настройке git в папке сайта нужно использовать git@itlab.ru:my_name/my_repository.git
вместо https://gitlab.ru/my_name/my_repository