提问者:小点点

如何在Travis CI中发布神器?


我想在我的开源项目中使用Travis CI。Travis没有提供任何方法来发布生成的工件(尽管,他们在未来的计划中有这一点)。

在某处发布/上传工件有哪些解决方法?我可以在CI机器上执行任何脚本。

简单的上传可以工作,但是有一个安全问题:任何人都可以以同样的方式上传东西,因为所有的资源都是公开的。


共3个答案

匿名用户

GitHub逐步发布

该方法在 https://stackoverflow.com/a/24100779/895245 中提到过,并且在以下位置记录得很差: https://docs.travis-ci.com/user/deployment/releases/ ,因此这里将进行更详细的逐步介绍。

它将工件上传到GitHub版本https://github.com/

>

  • 获取个人访问令牌https://github.com/settings/tokens

    仅对公共存储库启用“public_repo”访问,对私有存储库启用“repo”访问。

    将令牌保存在某个地方,因为您只能看到它一次。

    安装< code>travis宝石:

    gem install travis
    # See: https://stackoverflow.com/a/33119804/895245
    gem update --system
    

    然后< code>cd到您的存储库中,并:

    travis encrypt <api-token>
    

    但最近有人报告说,需要travis encrypt-r githubusername/repositoryname--org,请参见:https://github.com/travis-ci/travis-ci/issues/8128

    这将产生如下输出:

    secure: "<encrypted-token>"
    

    记下大型加密令牌。

    使用 .travis.yml,如下所示:

    script:
      # This command generates a release.zip file.
      - make dist
    deploy:
      provider: releases
      api_key:
        secure: "<encrypted-token>"
      file: 'release.zip'
      skip_cleanup: true
      on:
        tags
    

    发生的情况是Travis替换了每个< code >东西:

    这是安全的,因为只有您授权的push可以解密字符串,所以如果恶意用户试图发出pull请求来获取您的字符串,它应该只显示加密的字符串。

    现在,每当您推送带有标签的提交时,Travis 都会将发布.zip上传到发布:

    git commit -m 1.0
    git tag -m 1.0 1.0
    git push --tags
    

    如果您已经提交了commit和tag,那么您可能需要单击Travis UI上的“Restart build”按钮来上传它。

    https://stackoverflow.com/a/38037626/895245有一些流程的屏幕截图。

    替代方法:环境变量

    >

  • 除了加密的字符串,我们还可以使用隐藏的环境变量。

    关于存储库的Travis设置< code>https://travis-ci.org/

    GITHUB_API_KEY=<token>
    

    确保将“在构建日志中显示值”标记为“关”,并使用:

    api_key: '$GITHUB_API_KEY'
    

    虽然这不会显示在拉请求的日志中,但这种方法风险更大,因为您可能会错误地列出构建的环境。

    好处是这种方法更容易理解。

    我的一个简单示例,将从Gnuplop生成的图像上传到GitHub版本:

    • https://github.com/cirosantilli/gnuplot-examples/blob/b76d5a7c7aa2af973accdc9639220df74c36285e/.travis.yml#L23
    • https://github.com/cirosantilli/gnuplot-cheat/releases

    关于 GitHub 页面部署的问题:如何从 Travis CI 发布到 Github 页面?

  • 匿名用户

    “github发布上传”功能最近宣布。它正式支持所需的一切。请参阅 http://docs.travis-ci.com/user/deployment/releases/

    匿名用户

    如果你的项目是基于GitHub的——很可能是Travis——那么最简单的方法就是在< code>gh-pages分支下检入生成的工件。在GitHub上查看更多信息。

    如何做到这一点在很大程度上取决于使用的构建系统。使用Maven,您可以使用Maven-scm插件-您可以在这里找到一个示例。

    编辑:你可以在这里找到一个完整的例子:https://github.com/tonnymadsen/ui-bindings/blob/master/com.rcpcompany.updatesite/pom.xml