我想在我的开源项目中使用Travis CI。Travis没有提供任何方法来发布生成的工件(尽管,他们在未来的计划中有这一点)。
在某处发布/上传工件有哪些解决方法?我可以在CI机器上执行任何脚本。
简单的上传可以工作,但是有一个安全问题:任何人都可以以同样的方式上传东西,因为所有的资源都是公开的。
如果你的项目是基于GitHub的——很可能是Travis——那么最简单的方法就是在< code>gh-pages分支下检入生成的工件。在GitHub上查看更多信息。
如何做到这一点在很大程度上取决于使用的构建系统。使用Maven,您可以使用Maven-scm插件
-您可以在这里找到一个示例。
编辑:你可以在这里找到一个完整的例子:https://github.com/tonnymadsen/ui-bindings/blob/master/com.rcpcompany.updatesite/pom.xml
“github发布上传”功能最近宣布。它正式支持所需的一切。请参阅 http://docs.travis-ci.com/user/deployment/releases/
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版本:
关于 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