如何停止 Jenkins 控制台上的服务帐户凭据打印?
How to stop service account credential printing on Jenkins console?
我有构建项目的 Jenkins 服务器,构建 docker 图像并将其推送到 Google Container Registry。
我正在使用服务帐户使用命令 docker login -u _json_key -p "$(cat ${service-account.json})" https://gcr.io
登录 GCR,如所述 here
执行此行时,服务内容-account.json 文件会打印在 Jenkins 管道的控制台上。
如何停止在控制台上打印凭据?
如果您将 JSON 密钥文件和与之关联的用户名存储为 Jenkins 中的凭据,然后您可以在 withCredentials 步骤中引用密钥文件 (https://jenkins.io/doc/pipeline/steps/credentials-binding/)
在 withCredentials 步骤中使用的任何凭据都将自动屏蔽
诀窍是使用 --password-stdin 标志。
cat ${service-account.json} | docker login -u _json_key --password-stdin https://gcr.io
Provide a password using STDIN. To run the docker login command non-interactively, you can set the --password-stdin flag to provide a password through STDIN. Using STDIN prevents the password from ending up in the shell’s history, or log-files.
见https://docs.docker.com/engine/reference/commandline/login/
注意:密码文件应仅包含密码,不应进行 json 编码。
我有构建项目的 Jenkins 服务器,构建 docker 图像并将其推送到 Google Container Registry。
我正在使用服务帐户使用命令 docker login -u _json_key -p "$(cat ${service-account.json})" https://gcr.io
登录 GCR,如所述 here
执行此行时,服务内容-account.json 文件会打印在 Jenkins 管道的控制台上。
如何停止在控制台上打印凭据?
如果您将 JSON 密钥文件和与之关联的用户名存储为 Jenkins 中的凭据,然后您可以在 withCredentials 步骤中引用密钥文件 (https://jenkins.io/doc/pipeline/steps/credentials-binding/)
在 withCredentials 步骤中使用的任何凭据都将自动屏蔽
诀窍是使用 --password-stdin 标志。
cat ${service-account.json} | docker login -u _json_key --password-stdin https://gcr.io
Provide a password using STDIN. To run the docker login command non-interactively, you can set the --password-stdin flag to provide a password through STDIN. Using STDIN prevents the password from ending up in the shell’s history, or log-files.
见https://docs.docker.com/engine/reference/commandline/login/
注意:密码文件应仅包含密码,不应进行 json 编码。