Gitlab CI для доставки файлов на удаленный сервер (rsyn c) - PullRequest
2 голосов
/ 10 июля 2020

Я работаю с SVN, но хотел бы перейти к Git, а точнее к Gitlab.

У меня следующая структура:

MyStructure/
  customer/
    client1/
      delivery.sh
      MyFiletoSend.sh
    client2/
      delivery.sh
      MyFiletoSend2.sh

В настоящее время «delivery. sh» отправит модификации (rsyn c) файла «MyFiletoSend. sh» на сервер «client1».

Могу ли я запустить «delivery. * 1027» * "через Gitlab автоматически после / до git pu sh только для файлов, измененных в этом pu sh?

Пример:

  • У меня есть модификация сделать в файл «MyFiletoSend. sh» из client1 /
  • Я вношу свои изменения
  • commit и pu sh
  • Gitlab is running «доставка. sh "в моем" файле "client1 /".
  • Файл "MyFiletoSend. sh" отправляется на сервер "client1", не касаясь "client2".

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Предполагается, что ваша доставка. sh скрипты содержат все необходимые rsyn c logi c, GitLab имеет встроенный logi c для обнаружения изменений в файлах и выполнения bash команд в ответ. Вы можете создать отдельное задание для каждого клиента, которое может выполняться параллельно на одном этапе. Этот подход также поддается аудиту, поскольку он четко покажет вам, какие клиенты были обновлены и с какой версией файла.

update-client-1:
  stage: update-clients
  only:
    changes:
      # Detect change only in MyFiletoSend.sh:
      - customer/client1/MyFiletoSend.sh
      # Detect any change in the customer folder:
      - customer/client1/*
  script:
      - cd customer/client1
      - delivery.sh

update-client-2:
  stage: update-clients
  only:
    changes:
      - customer/client2/*
  script:
      - cd customer/client2
      - delivery.sh


# repeat for all remaining clients

Для получения дополнительной информации: https://docs.gitlab.com/ee/ci/yaml/#onlychangesexceptchanges

1 голос
/ 10 июля 2020

Да, это возможно

, но для начала вам нужно понять, как работает gitlab ci. Прочтите эту статью https://docs.gitlab.com/ee/ci/yaml/

Вы создадите шаг в своем конвейере, который будет делать то, что вы хотите, после того, как вы sh код (в master или в любой другой ветке / mr )

а по поводу работы? вам нужно создать его, вы можете использовать этот код, чтобы помочь вам https://gist.github.com/hnlq715/6c222ba0fd868bae7e4dfd3af61bf26e

...