Thank you for reading this post, don't forget to subscribe!
Тестовая схема:
- Gitlab Runner с запущенным и запущенным Docekr исполнителем (может быть локально)
- Cервер для развертывания (тоже может быть локально, он должен быть доступен для раннера).
- У вас есть сервер Gitlab, и вы уже создали репозиторий своего проекта с файлом .gitlab-ci.yml.
Необходимые шаги
Подключитесь по ssh к раннеру:
1 |
ssh root@runner-ip |
Создайте пару ключей SSH:
Получите закрытый ключ раннера:
cat ~/.ssh/id_rsa
Добавьте этот закрытый ключ в качестве переменной в свой проект на Gitlab:
Перейдите: Settings > CI/CD > Variables
Выполните вход по SSH к серверу:
1 |
ssh root@server-ip |
Скопируйте открытый ключ раннера( cat id_rsa.pub ) внутрь ~/.ssh/authorized_keys сервера.
Измените свой .gitlab-ci.yml. согласно следующему примеру.
Предполагается образ на основе ubuntu.
Отредактируйте CI скрипт свои задачи:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
"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 на ваш сервер необходимых файл!