gpt4 book ai didi

environment-variables - 在单个.travis.yml中定义多个存储库的安全环境变量

转载 作者:行者123 更新时间:2023-12-04 06:37:44 24 4
gpt4 key购买 nike

我正在一个正在使用Travis CI的项目中。我们的某些测试需要在环境变量中定义安全凭据,否则将被跳过。我们正在使用the encrypt command of the Travis CLI gem为我们的主存储库owner/Project定义一个secure environment variable。此变量包含在我们的.travis.yml文件中,如下所示:

单个存储库配置

env:
secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA="
travis encrypt使用我们的 owner/Project的私钥对这些变量进行了加密,并且Travis为该存储库成功运行了凭据测试。

但是,我们还有另一个存储库 contributor/Project,它也用于开发。在该存储库中运行Travis时,安全环境变量不可用,并且凭证测试将被跳过。

我使用 travis encrypt加密了 contributor/Project的一组凭据,并尝试将其添加到 .travis.yml中,如下所示:

导致额外的生成

env:
- secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA="
- secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8="

这导致Travis运行了两个不同版本的构建。一个尝试使用每组安全凭据。由于对于给定的存储库只有一组有效,因此这将导致测试套件运行两次,一次使用凭据,一次使用。 You can see an example build here

这种额外的构建是浪费和不必要的。如果测试在没有安全凭证集可用的环境中运行(例如来自 fork 的拉取请求),则测试套件将在没有凭证的情况下运行两次。添加更多的凭证集将更加糟糕。您将为每个凭证版本拥有多个冗余的非凭证版本。

如何在一个Travis配置中为多个存储库定义安全的环境变量,而又不引起额外的构建?

最佳答案

当我直接在env下定义多个安全值时,它们似乎就像我使用了the matrix key, which defines multiple variations of a build一样被对待。好像我已经写过:

导致额外的生成

env:
matrix:
- secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8="
- secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA="

相反,我需要在 global key 下指定安全凭据,以便将它们全部应用于每个构建:

效果很好

env:
global:
- secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8="
- secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA="

Travis将尝试在单个构建中使用每个安全变量。它只能解码和使用适合于存储库和构建条件的一个(或不使用)。这样,您就可以为单个Travis配置为任意数量的存储库添加安全的环境变量。

关于environment-variables - 在单个.travis.yml中定义多个存储库的安全环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23380369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com