gcloud中的Jenkinsfile管道阶段错误

时间:2020-02-13 12:04:41

标签: jenkins kubernetes jenkins-pipeline kubectl

我有以下管道。

pipeline {
    agent any

    environment {
        PROJECT_ID = "*****"
        IMAGE = "gcr.io/$PROJECT_ID/node-app"
        BRANCH_NAME_NORMALIZED = "${BRANCH_NAME.toLowerCase().replace(" / ", "
        _ ")}"
    }

    stages {
        stage('Build') {
            steps {
                sh ' docker build -t ${IMAGE}:${BRANCH_NAME_NORMALIZED} . '

            }
        }
        stage('Push') {
            steps {
                withCredentials([file(credentialsId: 'jenkins_secret', variable: 'GC_KEY')]) {
                    sh("gcloud auth activate-service-account --key-file=${GC_KEY}")
                }
                sh ' gcloud auth configure-docker  '
                sh ' docker push $IMAGE:${BRANCH_NAME_NORMALIZED} '
            }
        }
        stage('Deploy') {
            steps {
                withDockerContainer(image: "gcr.io/google.com/cloudsdktool/cloud-sdk", toolName: 'latest') {
                    withCredentials([file(credentialsId: 'jenkins_secret', variable: 'GC_KEY')]) {
                        sh("gcloud auth activate-service-account --key-file=${GC_KEY}")
                        sh("gcloud container clusters get-credentials k8s --region us-central1 --project ${DEV_PROJECT}")
                        sh("kubectl get pods")

                    }
                }
            }
        }
    }
}

在部署阶段,它给出以下错误:

gcloud auth激活服务帐户--key-file = **** 警告:无法在/.config/gcloud/logs中设置日志文件,(错误:无法创建目录[/.config/gcloud/logs/2020.02.05]:权限被拒绝。

请确认您具有写入父目录的权限。) 错误:(gcloud.auth.activate-service-account)无法创建目录[/.config/gcloud]:权限被拒绝。 请确认您具有写入父目录的权限。

我无法理解此命令要在哪里创建目录,泊坞窗容器或在主机中? 你有类似的问题吗?

2 个答案:

答案 0 :(得分:1)

更好的方法是使用Login to GKE via Kubernetes service account with token并使用kubeconfig文件代替激活google服务帐户。

这具有多个优点,包括Kubernetes RBAC支持,如果您的凭据被泄露则控制爆炸半径等。您可以在此处详细了解using RBAC Authorization

答案 1 :(得分:0)

您可以使用环境变量 CLOUDSDK_CONFIG 设置 gcloud 存储其配置的位置

environment {
  CLOUDSDK_CONFIG = "${env.WORKSPACE}"
}

我遇到了同样的问题,这对我有用。