Есть ли способ загрузить артефакты CI GitLab в контейнер Openshift? - PullRequest
0 голосов
/ 28 марта 2019

У меня есть конвейер GitLab CI, который создает несколько артефактов. Например:

train:job:
  stage: train
  script: python script.py
  artifacts:
    paths:
      - artifact.csv
    expire_in: 1 week

Теперь я развернул хранилище в OpenShift, используя следующий шаг в моем конвейере GitLab. Это вытянет мой репозиторий GitLab внутри OpenShift. Он не включает артефакты от «тестирования».

deploy:app:
  stage: deploy
  image: ayufan/openshift-cli
  before_script:
    - oc login $OPENSHIFT_DOMAIN --token=$OPENSHIFT_TOKEN
  script:
    - oc start-build my_app

Как я могу позволить OpenShift использовать этот репозиторий, а также артефакты, созданные в моем конвейере?

1 Ответ

0 голосов
/ 28 марта 2019

В общем случае OpenShift конвейеры сборки полагаются на процесс сборки s2i для сборки приложений.

Наилучшим способом повторного использования артефактов между сборками s2i будет либо использование инкрементные сборки или объединение нескольких определений BuildConfig (выходное изображение одного BuildConfig, передаваемое как исходное изображение в другой BuildConfig) вместе через конфигурацию spec.source.images или spec.source.git в определении BuildConfig .

В вашем случае, поскольку вы используете конвейер Jenkins для генерации артефактов вместо процесса сборки OpenShift, вам действительно нужно только объединить свои артефакты с исходным кодом и образом контейнера времени выполнения.

Для этого вы можете создать образ контейнера компоновщика, который извлекает эти артефакты из внешнего источника во время фазы сборка (с помощью curl, wget и т. Д.) Рабочего процесса s2i.Затем вы можете настроить свой BuildConfig так, чтобы он указывал на ваш исходный репозиторий.Во время сборки BuildConfig свернет ваш исходный код, а скрипт сборки уничтожит ваши артефакты.

...