Как включить файл сценария PowerShell в файл GitLab CI YAML - PullRequest
4 голосов
/ 18 января 2020

В настоящее время у меня есть большой Bash скрипт в моем файле GitLab CI YAML. Пример ниже показывает, как я группирую свои функции, чтобы я мог использовать их во время процесса CI.

.test-functions: &test-functions |
   function write_one() { echo "Function 1" }
   function write_two() { echo "Function 2"}
   function write_three() { echo "Function 3"}


.plugin-nuget:
   tags:
      - test-es
      - kubernetes
   image: mygitlab-url.com:4567/containers/dotnet-sdk-2.2:latest

   script:
      - *test-functions
      - write_one
      - write_two
      - write_three

Пример ниже показывает, как мы можем включить файл YAML в другой файл:

include:
   - project: MyGroup/GitlabCiPlugins/Dotnet
     file: plugin-test.yml
     ref: JayCiTest

Я хотел бы сделать то же самое с моим сценарием. Вместо того, чтобы скрипт находился в том же файле, что и мой YAML, я хотел бы включить этот файл, чтобы у моего YAML был доступ к функциям моего скрипта. Я также хотел бы использовать PowerShell вместо Bash, если это возможно.

Как я могу это сделать?

1 Ответ

1 голос
/ 18 января 2020

Сплит-сценарии оболочки и синтаксис GitLab CI

  • В GitLab CI нет функции «включать содержимое файла в блок сценария».
  • Функция GitLab CI include не импортирует якоря YAML.
  • GitLab CI не может объединять массивы. Таким образом, вы не можете записать before_script в один файл .gitlab-ci.yml, а затем использовать его в before_script в другом. Вы можете только переписать его, но не использовать.

Все эти проблемы не позволяют управлять вашими сценариями, разбивать их и делать другие полезные вещи для декомпозиции разработчика.

Возможные обходные пути с общей идеей - храните ваши скрипты где-нибудь еще, где gitlab runner мог бы их достать, а затем внедрили их в вашу текущую рабочую среду через source /ci-scripts/my-script.sh в before_script блоке.

Возможные места для хранения скриптов ci:

  1. Специальный docker образ со всеми вашими утилитами build / test / deploy и сценариями ci
  2. Тот же, но выделенный сервер сборки
  3. Вы можете развернуть простую веб-страницу содержащий ваши скрипты и скачайте и импортируйте затем в before_script. На всякий случай, убедитесь, что никто, кроме gitlab runner, не может получить к нему доступ.

Использование powershell

Вы можете использовать powershell, только если вы установили GitLab Runner на Windows. Вы не можете использовать что-либо еще в этом случае.

...