jenkins - 在 openshift 中部署特定的标记图像
问题描述
嗨,我正在开发 Openshift 3.9。下面是一段詹金斯管道代码
stage('Build Image') {
openshift.withCluster() {
openshift.withProject(env.DEV_PROJECT) {
def bcSelector = openshift.selector("bc", "jboss")
def bcExists = bcSelector.exists()
if (!bcExists) {
openshift.newBuild("--name=jboss", "--image-stream=jboss-eap70-openshift:1.5", "--binary=true")
} else {echo "The specified image already exists"}
}}
}
stage('Build Image with app') {
sh "rm -rf oc-build && mkdir -p oc-build/deployments"
sh "cp /var/lib/jenkins/jobs/devpipeline/jobs/devpipeline-tasks-pipeline/workspace/target/hello-1.0.war oc-build/deployments/ROOT.war"
openshift.withCluster() {
openshift.withProject(env.DEV_PROJECT) {
openshift.selector("bc", "jboss").startBuild("--from-dir=oc-build", "--wait=true")
}
}
}
stage('deploy to Dev') {
openshift.withCluster() {
openshift.withProject(env.DEV_PROJECT) {
if (openshift.selector('dc', 'jboss').exists()) {
openshift.selector('dc', 'jboss').delete()
openshift.selector('svc', 'jboss').delete()
openshift.selector('route', 'jboss').delete()
}
def app = openshift.newApp("jboss:latest")
app.narrow("svc").expose();
def dc = openshift.selector("dc", "jboss")
openshift.tag("${env.DEV_PROJECT}/jboss:latest", "${env.DEV_PROJECT}/jboss:${build_number}")
}
}
}
在Build
阶段 iam 正在使用 jboss 容器。在Build Image with app
阶段,我正在获取构建的war文件并使用war文件构建jboss的图像。在deploy to dev
我将应用程序图像部署到dev中并用jenkins构建号标记图像${env.DEV_PROJECT}/jboss:${build_number}
。我正在研究管道中的回滚机制我想将特定的内部版本号映像部署到开发环境中。假设如果我的詹金斯内部版本号是 14 并且我想要部署 10,那么我如何将特定的标记图像部署到开发中。在 openshift 的图像中,我可以看到从 1 到 14 的所有标记图像。现在我想将特定的标记图像部署到开发中。可能吗?
解决方案
您可以做的是使用您正在部署的映像的另一个版本 (:latest) 更改 DeploymentConfig。您可以使用 EDIT 部署在 de Web 控制台中执行此操作,然后从图像流 jboss 中选择另一个 :tag。
或使用 oc patch 命令更改 DC
oc patch dc --patch='{"spec":{"template":{"spec":{"containers":[{"name": "", "image":"image-name:tag"}] }}}}'
推荐阅读
- reactjs - React 中的 JWT 安全路由
- php - 我实施 2 因素授权有什么问题?
- git - Jenkins Polling Ignore 忽略所有构建
- spring-boot - 为什么 Spring Security 防火墙拒绝像“PROPFIND”这样的 WebDav 方法?
- node.js - Firebase 函数 winston 日志记录严重性
- javascript - 如何在行/容器引导程序中设置灵活位置
- autohotkey - 获取 A_LoopFileName 的第一个字符?
- maven - 无法下载 maven-fail-safe-plugin。给我一条错误信息
- microsoft-graph-api - 使用 Microsoft Graph 上传大型附件
- python - 将日期时间天数转换为年数