pypi 包装和秘密:为啥 github--intended .travis.yml 保存密码?

Posted

技术标签:

【中文标题】pypi 包装和秘密:为啥 github--intended .travis.yml 保存密码?【英文标题】:pypi packaging and secrets: why does a github--intended .travis.yml hold a password?pypi 包装和秘密:为什么 github--intended .travis.yml 保存密码? 【发布时间】:2019-12-21 10:17:35 【问题描述】:

我一直明白秘密的第一条规则是你要让它们不受公共源代码控制。

所以,我正准备将一个新包上传到 pypi。

.travis.yml 我看到了:

deploy:
  provider: pypi
  distributions: sdist bdist_wheel
  user: mysuser
    password:
    secure: PLEASE_REPLACE_ME
  on:
    tags: true
    repo: myuser/pynoorm
    condition: $TOXENV == py27

还不错,我想我忘了替换它。

但是...真正令人费解的部分是当我在 github 上选择 random .travis.yml 时,它有:

ANzomjrVPkzLO7MG9Zekl1Tz/Gxxx ... HmSQ3GRNPHMIRqf1xle+8/0IwDBuC/eTsOkit7WU1j9lgurCj8snXuTLUVEqf/SecAcLpmLrelRFvz//ZcOopIbwD66RJWT8pYGBH/L3MMIDFj1bIf0UIpXdBXgeTJhxW054+BhdFPGI66IvWU/kOlOcE606wqRqI9bdvop34OewJFnOQ9El...71dROWO4ETzz1wGXmO0dTVfCWMbqk7dT8OPft+tHsWWJqqeCEL3wj1uYEIYpCwLo9oSyVXwrhzRW0dysZfTCx/XfDaws3eFA6iMg6dUoBt12kwGZ5vCbgjBwPOmQrRMUEmYoyZz8n20HKojoxzUpwueFN/nbLv76arJbN8bLeb/GyE6r1Rw0DEzs8f0fBtv5agUnIpMh6EPOFYN4rwHMxt52HU7BB/Kg=

向您上传到 github 的文件添加 安全密码 有什么意义?它有什么作用?我认为通常的过程是登录 github,然后将您的帐户链接到 travis。在这种情况下,两个服务都应该知道如何对您进行身份验证,如果您登录其中之一,则无需通过公共设置文件中的密码。

github travis 配置的这个特定部分有多危险/敏感?

我可以不用它吗?

最初的 pypi 包文件是使用 CookieCutter cookiecutter-pypackage 生成的。

【问题讨论】:

【参考方案1】:

存储库的 .travis.yml 文件可以具有“加密值”,例如环境变量、通知设置和部署 API 密钥。任何人都可以添加这些加密值,但只能由 Travis CI 读取。

这就是secure: 字段名称所指示的内容。将这些加密值包含在您的 .travis.yml 中是安全的,也可以安全地将它们上传到 Github。

您可以通过安装 travis gem 并运行它来生成安全值:

$ gem install travis
$ travis encrypt "secretvalue"
<encrypted string>

【讨论】:

啊,啊。这就说得通了。虽然仍然不确定它的作用,但我觉得问这个问题有点?-ish。你有关于这个位的用途的信息吗?我可以省略吗? 这是你的 PyPI 密码。 Travis 需要它代表您上传一个包。

以上是关于pypi 包装和秘密:为啥 github--intended .travis.yml 保存密码?的主要内容,如果未能解决你的问题,请参考以下文章

为啥以及如何将秘密放入 Node.js 的环境变量中?

为啥pypy3比python慢

模式的秘密-适配器模式和代理模式的区别

如果 PyPy 快 6.3 倍,为啥我不应该使用 PyPy 而不是 CPython?

为啥 PyPi 不再显示下载统计信息? [关闭]

为啥 PyPI 被称为奶酪店?