【发布时间】:2020-09-09 20:01:22
【问题描述】:
我正在尝试将 OpenShift Jenkins 管道设置为:
- 从 git 获取源代码。来源包括
Dockerfile - 运行测试
- 使用 Dockerfile 构建映像
- 将图像推送到图像流
我创建了一个BuildConfig 和Docker 策略,它实际上可以在没有管道的情况下工作。问题是我不知道如何运行测试
如果我尝试从管道启动构建,它不会触发构建。
我在正确的道路上吗?对于这样的项目,最好的方法是什么?我应该继续依赖 OpenShift 特定工具吗?还是迁移到普通的 Kubernetes?
我正在为管道使用https://github.com/openshift/jenkins-client-plugin。
这是我的 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")
}
}
}
}
}
}
非常感谢!
【问题讨论】:
-
所以,您想要做什么似乎并不清楚。您希望 Jenkins 执行 Docker 构建吗?然后我认为你会想要将源代码拉到 Jenkins 中并启动
docker build .。然后,您可以对 OpenShift 注册表进行身份验证,并执行docker push。或者,您似乎正在做的是定义构建以让 OpenShift 执行构建,但使用 Jenkins 来触发它。而且我在您的 Jenkins 管道中看不到任何真正触发构建的东西,只列出了它们。您可以完全跳过 Jenkins,并使用 git webhook 来触发 OpenShift 的构建。
标签: openshift