bash - 如何自动化 helm 包 -- 在 bash 中以非交互方式签名
问题描述
我在没有期望的机器上编写 bash 脚本。该脚本自动构建 helm (v2.9.1) 图表。
我必须在脚本中运行它的部分
helm package --sign --key 'mykey' --keyring 'path/to/keyring' -d chartdir chart
并且因为 helm 提示输入我为使用出处文件而创建的 gpg 密钥的密码(要求),所以我无法围绕密码的请求编写脚本,我想单独提示,因为脚本是 CI 的一部分/CD 构建链。
我试过使用
yes $promptedPassPhrase | helm package --sign...
我得到了
xrealloc: cannot allocate 18446744071562067968 bytes (237568 bytes allocated)
我也试过普通的
echo $promptedPassPhrase | helm package --sign...
我得到了
Error: inappropriate ioctl for device
我也试过script
,得到了同样的回应。由于我对服务器没有期望,因此我无法expect
绕过它,所以我对如何自动化 helm package 命令感到困惑,并且不会使用没有密码的密钥,因为这是不好的做法。
解决方案
我不知道这种情况持续了多长时间,也不知道它适用于哪些版本,但这个文档页面说:
如果您的 PGP 私钥有密码,[...] 您可以将
HELM_KEY_PASSPHRASE
环境变量设置为该密码,以防您不希望被提示输入密码。
这对我有用v2.13.1
。看起来它是在2018 年 10 月添加的,所以我的猜测是它首先在v2.12.0-rc.1中可用。
尽管这并不能直接回答 OP 的问题(因为他们询问了关于v2.9.1
),但它有望帮助任何最终来到这里的人,因为他们(像我第一次一样)错过了文档中的那一行。
推荐阅读
- r - 使用 .csv 文件将标签分配给 R 中的因子
- apache-spark - Spark 上下文 Hadoop 配置 aws 密钥更新
- reactjs - tsconfig.json 中“jsx”属性的用途是什么
- javascript - AWS Amplify Authenticator React Native Tab Bar Navigation 白屏而不是渲染我的应用程序
- html - 使用无序列表时锚链接不起作用
- replace - VBS如何用新值替换任何颜色字符串(#******)
- sql - SQL 需要值部分中的表名
- c - 更改给定代码以匹配时间复杂度 O(n*log(n))
- javascript - 如何在 vue.js 中显示缓冲区
- python - 关系实例没有附加成员 pylint :VS Code