使用带有Openshift/jenkins客户端插件的管道从Dockerfile构建映像
我正在尝试设置OpenShift Jenkins管道,以:使用带有Openshift/jenkins客户端插件的管道从Dockerfile构建映像,openshift,Openshift,我正在尝试设置OpenShift Jenkins管道,以: 从git获取源代码。源代码包括一个Dockerfile 运行测试 使用Dockerfile构建映像 将图像推送到Imagestream 我已经用Docker策略创建了一个BuildConfig,它实际上可以在没有管道的情况下工作。问题是我不知道如何运行测试 如果我尝试从管道启动构建,它不会触发构建 我走对了吗?对于这样的项目,最好的方法是什么?我应该继续依赖OpenShift特定的工具吗?还是搬到普通的库伯内特斯 我正在使用一个新的管道
Dockerfile
Docker
策略创建了一个BuildConfig
,它实际上可以在没有管道的情况下工作。问题是我不知道如何运行测试
如果我尝试从管道启动构建,它不会触发构建
我走对了吗?对于这样的项目,最好的方法是什么?我应该继续依赖OpenShift特定的工具吗?还是搬到普通的库伯内特斯
我正在使用一个新的管道
这是我的BuildConfig:
kind: "BuildConfig"
apiVersion: "v1"
metadata:
name: "front-end-build"
spec:
runPolicy: "Serial"
nodeSelector:
hostname: "vhkdld518"
source:
git:
uri: "https://kraporta@bitbucket/scm/~kraporta/test-kube.git"
strategy:
dockerStrategy:
from:
kind: "ImageStreamTag"
name: "nginx:alpine"
dockerfilePath: Dockerfile
output:
to:
kind: "ImageStreamTag"
name: "front-end:latest"
以下是管道:
node {
stage('build') {
openshift.withCluster() {
openshift.withProject() {
echo "Using project: ${openshift.project()}"
def builds = openshift.selector("bc", "front-end-build").related('builds')
builds.describe()
timeout(5) {
builds.untilEach(1) {
it.describe()
echo "Inside loop: ${it}"
return (it.object().status.phase == "Complete")
}
}
}
}
}
}
非常感谢 我知道这是个老问题,但我想把它作为参考 问题: 缺少步骤,您尚未启动构建过程,因此没有构建 解决方案: 我们需要在获取构建之前启动构建过程,如下所示:
def builds = openshift.selector("bc", "front-end-build").related('builds')
要做到(有很多方法可以做到):
检查:所以,您想做什么似乎并不清楚。你想让詹金斯执行Docker构建?然后我想你会想把源代码拉到Jenkins中,然后启动docker build。。然后,您可以对OpenShift注册表进行身份验证,并执行
docker推送操作
。或者,您似乎正在定义构建,让OpenShift执行构建,但使用Jenkins触发它。我在Jenkins管道中没有看到任何触发构建的东西,只列出了它们。您可以完全跳过Jenkins,使用git webhook触发OpenShift的构建。
def buildConfig = openshift.selector("bc", "front-end-build")
openshift.startBuild("front-end-build") # we started the build process
def builds = buildConfig.related('builds')