【问题标题】:Pass information between stages in travis-ci在 travis-ci 中的阶段之间传递信息
【发布时间】:2018-12-26 10:54:17
【问题描述】:

我想使用免费的在线服务transfer.sh 在 travis ci 的各个阶段之间共享构建工件。虽然上传/下载很容易,但问题是生成的 URL 包含不可预测的部分,因此整个 URL 变得不可预测。

在早期阶段上传工件时,我需要将生成的 URL 传递到后期阶段。 AFAIK,多阶段构建中的作业彼此严格隔离。

  • 因此,我正在寻找如何在阶段之间传递 URL 的想法。
  • 也欢迎提出如何通过(注册)免费服务传递工件的想法。

【问题讨论】:

    标签: travis-ci file-sharing


    【解决方案1】:

    我找到了在 Travis-CI 上的构建阶段之间传递工件的解决方案:滥用 github 版本。

    1. 在 github 存储库中创建一个标签,例如“特拉维斯-ci”
    2. 在 .travis.yml 中,设置 TRAVIS_TAG=travis-ci。
    3. 将部署(部署到 github)步骤添加到需要存储工件的阶段。创建并使用加密的 github 令牌进行身份验证。这甚至适用于禁用了秘密环境变量的 Windows 主机。此步骤需要 TRAVIS_TAG,否则它会创建一个我们不想要的新标签。
    4. 在每个文件名中包含当前的 TRAVIS_BUILD_NUMBER
    5. 在稍后阶段,使用 curl 下载工件,因为 URL 现在是可预测的。

    在构建标签时,可以省略覆盖 TRAVIS_TAG 并使用该特定标签来存储中间工件。以后可以手动删除它们。

    [编辑] 我刚刚注意到 Travis 引入了一个名为 workspaces 的功能,这正是我想要的。不需要上述解决方法。

    【讨论】:

    • 你让我朝着正确的方向前进,谢谢!但是我可以问一下使用 github 版本来构建工件吗?您是否必须允许在您的 .gitignore 中构建工件?不知道我对此有何感想
    • 不,发布工件没有存储在 git repo 中,因此,.gitignore 不应该与此有任何关系。但听起来您想滥用 git 存储库本身来存储工件。我还没想到这个,可能值得一试。
    • @DanielCooke,你可能想试试Travis workspaces
    • 是的!所以在这里发布后不久 - 我发现了这个功能。不幸的是,Github Enterprise 尚不支持此功能。我们采用了一个更好的解决方案 - 一个自定义服务器来永久存储构建信息
    猜你喜欢
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    相关资源
    最近更新 更多