Содержание
Тестовая схема:
- Gitlab Runner с запущенным и запущенным Docker исполнителем (может быть локально)
- Cервер для развертывания (тоже может быть локально, он должен быть доступен для раннера).
- У вас есть сервер Gitlab, и вы уже создали репозиторий своего проекта с файлом .gitlab-ci.yml.
Необходимые шаги
Подключитесь по ssh к раннеру:
ssh root@runner-ip
Создайте пару ключей SSH:
Получите закрытый ключ раннера:
cat ~/.ssh/id_rsa
Добавьте этот закрытый ключ в качестве переменной в свой проект на Gitlab:
Перейдите: Settings > CI/CD > Variables
Выполните вход по SSH к серверу:
ssh root@server-ip
Скопируйте открытый ключ раннера( cat id_rsa.pub ) внутрь ~/.ssh/authorized_keys сервера.
Измените свой .gitlab-ci.yml. согласно следующему примеру.
Предполагается образ на основе ubuntu.
Отредактируйте CI скрипт свои задачи:
"SSH DEPLOY":
stage: deploy
image: ubuntu-cd:0.0.2
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- mkdir -p ~/.ssh
- eval $(ssh-agent -s)
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- chmod 700 ~/.ssh
artifacts:
when: always
paths:
- ./src/file.txt
expire_in: 1 day
script:
- pwd
- ls -a
- ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 --decode)
- scp ./src/file.txt root@172.2.16.50:/tmp/
Сделайте коммит .gitlab-ci.yml, запустится пайплайн и отправит по ssh на ваш сервер необходимых файл!
Спасибо за гайд, мне помогло!
Но мне пришлось изменить image, вместо “ubuntu-cd:0.0.2 ” я оставил значение “ubuntu-cd:0.0.2 “
Ошибка в прошлом комментарии :
* я оставил значение “ubuntu“
Спасибо за гайд, мне помогло!
Но мне пришлось изменить image, вместо “ubuntu-cd:0.0.2 ” я оставил значение “ubuntu “
Ну образа меняются, это нормально! Рад, что помогло!
Для выполнения команд по SSH мне помогла только такая конфигурация:
“SSH DEPLOY”:
stage: deploy
image: tetraweb/php
before_script:
– ‘which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )’
– mkdir -p ~/.ssh
– eval $(ssh-agent -s)
– ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 –decode)
– chmod 700 ~/.ssh
script:
– ssh -o StrictHostKeyChecking=no root@172.2.16.50 " touch testfile && exit"
only:
– master
Если поменять на другой image, то не запускается уже из-за ошибка: Error loading key "/dev/fd/63": invalid format