当前位置: 首页 > 知识库问答 >
问题:

如何在Travis CI中发布神器?

丌官向荣
2023-03-14

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

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

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

共有3个答案

苏嘉歆
2023-03-14

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

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

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

路奇
2023-03-14

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

宦瀚
2023-03-14

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 页面html" target="_blank">部署的问题:如何从 Travis CI 发布到 Github 页面?

  •  类似资料:
    • 我正在尝试设置CI / CD,但没有太多的运气。我的目标是通过 构建一个 .net 网络项目,并将其部署到 应用程序。 我现在在哪里? 创建了< code>vsts-ci.yml文件,如下所示: 我有一个构建定义,如下所示: 有了这个,我的第一步运行正确。顺便说一下代理池是。 然后,我创建了一个如下发布管道: 作为第1阶段的任务(在工件步骤之后运行的部分),我有以下内容: 我已经将构建与主分支提交

    • 问题内容: 我看了以下链接,但似乎没有什么具体的。 Android中的Secure HTTPPost 此功能不再起作用,我已经对其进行了测试,并且有其他人评论说它不起作用。 我也检查了一下:DefaultHttpClient,证书,Https和发布问题!这似乎可行,但Blogger只是让您感到困惑。更多分步说明会有所帮助。我未能通过他的第二步,因此设法获得了证书。 http://www.makeu

    • 下面是我使用的代码 这就是api需要发布的方式 我收到一个错误,指出 另一个。子字段是必需的。 我如何通过restAsaud发布这个?其他API不需要通过嵌套工作发布,所以我假设这就是它失败的原因。

    • 问题内容: 我正在尝试在Django中使用jQuery / AJAX发布数据,并且遇到了麻烦。当我运行下面的代码并单击“测试”按钮时,整个页面将再次重新加载,这不是我想要的(这就是我使用AJAX的原因)。 我也无法确认AJAX请求正在进入Django视图。 编辑:我对return false和进行了编辑。无法加载新页面,但仍无法在该字段中看到更新的文本。我不确定是否正在发送数据。我在控制台中看到:

    • 问题内容: 我试图使用。通过Node.js向Web服务提交xml请求。 这是我的代码。我的问题是,而不是我想将xml发布到服务。 何去做? 问题答案: 返回ClientRequest对象,该对象也是可写流。代替做或

    • 问题内容: 我需要将主机上的端口映射到容器上的端口。我可以通过运行带有该选项的命令来实现。如何通过来实现这一目标?使用以下给出 我还能如何通过dockerfile公开暴露的端口? 问题答案: 你不能 究竟在Docker主机上发布哪些端口是本地管理员应做出的决定,而不是由他们试图运行的映像决定。这将是(a)一个安全问题(嘿,我刚刚打开了对您系统的ssh访问权限!),并且(b)容易出现故障(我的Web