通过 Jenkins 中的 Kubernetes 插件部署时的 nullpointer 异常



我们使用Google kubernetes 引擎插件- 0.8.1 for Jenkins 通过 yaml 文件部署应用程序,奇怪的是,当我们的应用程序是使用 python 开发的时,我们遇到了 java 异常。 以下是详细的错误消息:

java.lang.NullPointerException
at com.google.jenkins.plugins.k8sengine.Manifests$ManifestObject.addLabel(Manifests.java:114)
at com.google.jenkins.plugins.k8sengine.KubernetesEngineBuilder.addMetricsLabel(KubernetesEngineBuilder.java:303)
at com.google.jenkins.plugins.k8sengine.KubernetesEngineBuilder.perform(KubernetesEngineBuilder.java:266)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:80)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:67)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

请注意,构建 Docker 镜像步骤并将其推送到 DockerHub 完美无缺,正如在 jenkinsfile 中声明的那样,以下是我的 Jenkinsfile 正在部署到 kubernetes 集群。

stage("Step 3: Deploy BUILT artifacts to K8"){
steps{
step([$class: 'KubernetesEngineBuilder', projectId: env.PROJECT_ID, clusterName: env.CLUSTER_NAME, location: env.LOCATION, manifestPattern: 'configmap-staging.yaml', credentialsId: env.CREDENTIALS_ID, verifyDeployments: true])
step([$class: 'KubernetesEngineBuilder', projectId: env.PROJECT_ID, clusterName: env.CLUSTER_NAME, location: env.LOCATION, manifestPattern: 'deployment.yaml', credentialsId: env.CREDENTIALS_ID, verifyDeployments: true])
}

非常感谢任何帮助,因为这是我们第一次开始实施 CI/CD。

不确定你是否解决了这个问题。我之前遇到过这个问题,请检查您的 YAML 文件。

我在 YAML 文件的末尾留下了一个---,这会导致 Jenkins 出现这种类型的错误。删除最后一个---清除了错误。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
...
spec:
...
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
...
spec:
...
---  # <-- remove it

注意:当您独立执行"kubectl 应用...",将忽略尾随---

最新更新