在 travis-ci 中的阶段之间传递信息

Pass information between stages in travis-ci

我想使用免费的在线服务 transfer.sh 在 travis ci 的阶段之间共享构建工件。虽然 uploading/downloading 很简单,但问题是结果 URL 包含不可预测的部分,因此整个 URL 变得不可预测。

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

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

  1. 在 github 存储库中创建一个标签,例如"travis-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 的功能,这正是我想要的。无需上述解决方法。