【问题标题】:Jenkinsfile pipeline stage error in gcloudgcloud中的Jenkinsfile管道阶段错误
【发布时间】:2020-05-29 03:19:07
【问题描述】:

我有以下管道。

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 activate-service-account --key-file=**** 警告:无法在 /.config/gcloud/logs 中设置日志文件,(错误:无法创建目录 [/.config/gcloud/logs/2020.02.05]:权限被拒绝。

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

我不明白这个命令要在哪里创建目录、docker 容器或在主机中? 你有没有类似的问题?

【问题讨论】:

    标签: jenkins kubernetes jenkins-pipeline kubectl


    【解决方案1】:

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

    这有几个优点,包括 Kubernetes RBAC 支持、在您的凭据被泄露时控制爆炸半径等。您可以在此处阅读有关 using RBAC Authorization 的更多信息。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2021-07-14
        • 2019-01-08
        • 2021-07-30
        • 2018-01-28
        • 1970-01-01
        • 1970-01-01
        • 2020-10-16
        • 1970-01-01
        • 2023-03-21
        相关资源
        最近更新 更多