我有一个GitLab CI管道,可以构建一些工件。例如:
train:job:
stage: train
script: python script.py
artifacts:
paths:
- artifact.csv
expire_in: 1 week
现在,我使用GitLab管道中的以下步骤将存储库部署到OpenShift。这将把我的GitLab repo拉入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使用此存储库,以及在我的管道中创建的工件?
一般来说,OpenShift build pipelines依靠s2i构建过程来构建应用程序。
在s2i构建之间重用工件的最佳实践可能是通过使用incremental builds或将多个BuildConfig定义(一个BuildConfig的输出图像作为源图像输入另一个BuildConfig)链接在一起,通过spec.source.images
中的spec.source.git
或BuildConfig definition配置。
在您的情况下,因为您使用Jenkins管道来生成工件而不是OpenShift构建过程,所以您实际上只需要将工件与源代码和运行时容器映像组合在一起。
为此,您可以创建一个构建器容器图像,该图像在s2i工作流的assemble阶段(通过curl,wget等)期间从外部源中提取这些工件。然后,您可以将BuildConfig配置为指向源存储库。在构建时,BuildConfig将下拉您的源代码,汇编脚本将下拉您的工件。