rel*_*one 5 command-line-interface jenkins build-pipeline openshift openshift-client-tools
我目前正在使用模板构建和部署应用程序
oc new-app -f ./openshift/template.yaml
Run Code Online (Sandbox Code Playgroud)
我使用的是模板,而不是单独的部署、构建等配置,因为我也希望能够传递参数,例如
oc new-app -f ./openshift/template.yaml --p DATABASE_PW=PW
Run Code Online (Sandbox Code Playgroud)
据我所知,这是不可能使用
oc create -f ./openshift/deploymentconfig.yaml --p SOME_PARAM=TEST
Run Code Online (Sandbox Code Playgroud)
现在我也将其集成到了 Jenkins 的构建管道中。我现在的问题是这样的。这在第一次部署时一切正常,但对于重新部署则不起作用。我可以用 Jenkins 重建应用程序,就像
oc start-build my-app
Run Code Online (Sandbox Code Playgroud)
但这会导致我的模板的更改不会被考虑。我也无法使用 new-app,因为它不会替换现有的配置,从而产生与此类似的错误
--> Creating resources ...
error: services "my-app" already exists
....
--> Failed
Run Code Online (Sandbox Code Playgroud)
有办法解决这个问题吗?也许像命令一样new-app replace所有配置都被替换?我目前正在解决这个问题,方法是使用 shell 文件完全终止该应用程序,然后再次启动它;但这总是会导致几分钟的停机时间,这确实让我很烦恼。
正如格雷厄姆指出的,解决这个问题的最好方法是使用
oc process -f openshift/template.yaml -p PARAM1=VALUE1 -p PARAM2=VALUE2
Run Code Online (Sandbox Code Playgroud)
首先用您的参数填充您的模板。然后通过管道将命令传递给 oc apply 以将其应用到应用程序,这将为您留下以下命令
oc process -f openshift/template.yaml -p PARAM1=VALUE1 -p PARAM2=VALUE2 | oc apply -f -
Run Code Online (Sandbox Code Playgroud)
这将创建或更新您的所有配置。它还将检查哪些配置已更改。
如果您想在之后直接开始构建,请使用
oc start-build my-app
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5739 次 |
| 最近记录: |