Примеры использования
Базовый пример использования CI/CD с агентом с типом shell
Создайте в корне проекта конфигурационный .yaml
файл с содержимым:
По умолчанию полное название файла
gitflic-ci.yaml
. С подробным описанием ключевых слов можно ознакомиться в справочнике для gitflic-ci.yaml файла
stages:
- test
- build
- release
test job:
stage: test
scripts:
- echo "Произвожу тестирование для ветки $CI_COMMIT_REF_NAME"
build job:
stage: build
scripts:
- echo "Произвожу сборку проекта с выгрузкой артефактов"
- mkdir artifact/
- echo "Я артефакт" > artifact/artifact.txt
artifacts:
name: artifact
paths:
- artifact/
release job:
stage: release
when: manual
scripts:
- echo "Создаю релиз"
needs: ["test job", "build job"]
Успешно выполненный конвейер может выглядеть следующим образом:
Пример передачи кода на удалённый сервер через CI/CD
Использование CI/CD с Docker агентом
Описанный ниже пример используется для агента запущенного в режиме Docker. Если вы используете агента в режиме shell, то вы можете предоставить доступ к удалённому серверу через настроенный в агенте приватный ключ.
-
Для передачи команд и файлов на удаленный сервер потребуются ssh ключи. Создайте новую пару ключей по данной инструкции или используйте уже созданные. Публичный ключ добавьте на удаленный сервер на которой планируется передавать данные/команды. Для этого можно скопировать содержимое файла
~/.ssh/id_ed25519.pub
в файлauthorized_keys
на сервере. В настройках проекта, в разделе CI/CD создайте переменнуюSSH_KEY
с приватным ключом,SSH_PORT
с портом для подключения,SERVER_USER
с именем пользователя, и переменнуюSERVER_IP
с адресом сервера. - Создайте в корне проекта файл с именем
gitflic-ci.yaml
и содержимым
image: ubuntu:latest
stages:
- build
job 1:
stage: build
tags:
- docker
when: manual
scripts:
- mkdir test
- echo "Hello, world!" > test/text.txt
- apt-get update -y
- apt-get install openssh-client -y
- |
eval $(ssh-agent -s)
echo "$SSH_KEY" | tr -d '\r' | ssh-add -
ssh -o "StrictHostKeyChecking=no" -p $SSH_PORT $SERVER_USER@$SERVER_IP "mkdir -p ~/example/"
scp -o "StrictHostKeyChecking=no" -P $SSH_PORT test/text.txt $SERVER_USER@$SERVER_IP:~/example/
artifacts:
name: file-create
paths:
- test
Описание используемых команд
команда | Описание |
---|---|
apt-get update -y и apt-get install openssh-client -y |
Требуются для установки пакета ssh. Можно не использовать, если в контейнере или в shell агенте уже есть пакет ssh |
eval $(ssh-agent -s) |
Команда для запуска ssh-agent |
echo "$SSH_KEY" \| tr -d '\r' \| ssh-add - |
Команда для добавления ключа через ssh-agent |
ssh -o "StrictHostKeyChecking=no" -p $SSH_PORT -i id_ed25519 $SERVER_USER@$SERVER_IP "mkdir -p ~/example/" |
Команда передаёт на удаленный сервер команду по созданию директории. Параметр -o "StrictHostKeyChecking=no" используется для автоматического принятия RSA ключей. |
scp -o "StrictHostKeyChecking=no" -P $SSH_PORT -i id_ed25519 file/file1.txt $SERVER_USER@$SERVER_IP:~/example/ |
Команда для передачи созданных файлов на удалённый сервер |
Описание используемых переменных
параметр | Описание |
---|---|
$SSH_KEY |
Передайте значение приватного ключа. |
$SSH_PORT |
Передайте порт по которому у вас происходит подключение по ssh к серверу, например 22 . |
$SERVER_USER |
Передайте значение пользователя которое вы используете при подключении по ssh , например ivan . |
SERVER_IP |
Передайте ip адрес сервера, например 158.162.17.149 . |