【问题标题】:Jenkins Pipeline gcloud problems in dockerdocker中的Jenkins Pipeline gcloud问题
【发布时间】:2018-01-16 21:25:22
【问题描述】:

我正在尝试根据以下设置 jenkins 管道 this 文章,而是使用 google 容器注册表将 docker 镜像推送到。

问题:让我失望的部分是这个 jenkinsfile 阶段块

stage ('Push Docker Image To Container Registry') {
  docker.image('google/cloud-sdk:alpine').inside {
      sh "echo ${env.GOOGLE_AUTH} > gcp-key.json"
      sh 'gcloud auth activate-service-account --key-file ./service-account-creds.json'
  }
}

错误:

Please verify that you have permissions to write to the parent directory.)

ERROR: (gcloud.components.update) Could not create directory [/.config/gcloud]: Permission denied.

我无法运行任何与 gcloud 相关的命令,因为上面的错误是我一直得到的。

我尝试创建手动登录到 aws 实例的“/.config”目录并向所有人开放该文件夹的权限,但这也无济于事。

我也找不到任何地方如何使用 docker 为 jenkins 管道正确设置谷歌云。

非常感谢任何建议:)

【问题讨论】:

  • 您好,为了更好地了解您的设置,请问您是在 Compute Engine 实例上运行 Jenkins 吗?如果是这样,如果您通过 SSH 连接到机器并手动运行 gcloud 命令,是否会产生同样的错误?
  • 感谢您的回复!我在 aws ec2 实例上运行 jenkins,并且我没有在实例本身上安装 gcloud sdk,但我正在尝试使用 google cloud sdk 的 docker 映像来允许我执行管道的这一部分

标签: docker jenkins jenkins-pipeline google-authentication google-container-registry


【解决方案1】:

看起来它正在尝试将数据直接写入您的根文件系统目录。 gcloud 的 .config 目录通常位于用户名和/或 root 用户的以下位置:

/home/yourusername/.config/gcloud
/root/.config/gcloud

看起来,出于某种原因,jenkins 认为父目录应该在 / 中。

我会尝试检查你的云 sdk 配置目录在你运行它的机器上的位置(对于用户来说,脚本运行的身份):

$ sudo find / -iname "gcloud"

并寻找与上面打印的位置相似的位置。

会不会是Cloud SDK安装在机器上的非标准位置?

【讨论】:

  • 感谢您的回复 - 我没有在 ec2 实例本身上安装 gcloud,因为我正在为 google cloud sdk 拉下一个 docker 映像并试图让它以这种方式工作。
猜你喜欢
  • 2021-06-10
  • 2017-09-17
  • 2022-06-27
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 2019-04-06
  • 2019-03-04
相关资源
最近更新 更多