Перейти к содержанию

Примеры использования


Базовый пример использования 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"]

Успешно выполненный конвейер может выглядеть следующим образом:

example-ci

Пример передачи кода на удалённый сервер через CI/CD

Использование CI/CD с Docker агентом

Описанный ниже пример используется для агента запущенного в режиме Docker. Если вы используете агента в режиме shell, то вы можете предоставить доступ к удалённому серверу через настроенный в агенте приватный ключ. * Для передачи команд и файлов на удаленный сервер потребуются ssh ключи. Создайте новую пару ключей по данной инструкции или используйте уже созданные. Публичный ключ добавьте на удаленный сервер на которой планируется передавать данные/команды. Для этого можно скопировать содержимое файла ~/.ssh/id_ed25519.pub в файл authorized_keys на сервере. В настройках проекта, в разделе CI/CD создайте переменную SSH_KEY с приватным ключом, SSH_PORT с портом для подключения, SERVER_USER с именем пользователя, и переменную SERVER_IP с адресом сервера.

Example * Создайте в корне проекта файл с именем 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.