Я хотел бы импортировать логику из сценария внешней оболочки как часть моей конфигурации CircleCI, и я ищу «правильный» (или лучший) способ сделать это.
Давайте предположим, что у меня естьследующие config.yml
для CircleCI:
version: 2.1
jobs:
build:
docker:
- image: circleci/ruby:2.5.3-node-browsers
steps:
- checkout
- run:
name: Compute some value
command: |
SOME_VALUE=$(foo.sh)
- run:
name: Reuse some value
command: |
echo "Hello" > /a/path/${SOME_VALUE}.txt
Общая идея состоит в том, чтобы обернуть эти шаги в Сферу CircleCI, а затем сделать так, чтобы моя конфигурация сборки повторно использовала их из Сферы.Но скрипт foo.sh
нельзя упаковать в сам Orb, поэтому мне нужен какой-то другой способ сделать его доступным внутри конфигурации сборки.
Итак, как я могу включить скрипт foo.sh
(или любой другой скриптили исполняемый файл) в мой процесс сборки?
Что я вижу до сих пор (и почему я не думаю, что это лучший способ сделать это):
- Из документации CircleCI IЯ не вижу способа включить сценарии, такие как
foo.sh
, непосредственно в состав Orb. - Я мог бы создать новый образ Docker на основе
circleci/XXX
, включить мой сценарий в этот образ Docker и вызвать егокаталог.Мне не очень нравится идея, так как скрипт не имеет ничего общего с изображением Docker, на котором он основан - я бы просто использовал Docker здесь как транспорт. - Я мог бы
wget
сценарий из общедоступного места,временно сохраните его и затем вызовите изнутри работающего контейнера, который выполняет сценарий сборки.Но загрузка контента с общедоступного URL-адреса и последующее выполнение не подходят (и опечатка или какая-либо злонамеренная работа могут привести к тому, что я выполню какой-нибудь скрипт внешней оболочки, и бог знает, какой контент).Git-репозиторий со сценарием внутри локальной файловой системы внутри работающего контейнера сборки, а затем выполните сценарий.Чувствуется немного лучше, чем вариант (3).
Какие-нибудь идеи или лучшие практики, о которых я еще не думал?