Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何自动发布C++;使用GitHub的软件?_C++_Github_Deployment_Travis Ci - Fatal编程技术网

C++ 如何自动发布C++;使用GitHub的软件?

C++ 如何自动发布C++;使用GitHub的软件?,c++,github,deployment,travis-ci,C++,Github,Deployment,Travis Ci,我所要寻找的是在每晚或每次提交时构建C++代码的东西,然后,关键是,运行一些命令来创建一个zip或一个包,然后可以将其添加到Github上的一个“发布”上。 我知道有travis CI,它可以自动编译提交,它可以运行例如CMake安装目标,然后运行CPack,这将创建一个zip或安装程序包。但无法将这些文件上传到GitHub或在某处显示它们 我在想,也许还有另外一种与GitHub集成的服务,但是找不到任何Google点击率。最好将其与travis CI分开,因为在travis上您将运行类似调试的

我所要寻找的是在每晚或每次提交时构建C++代码的东西,然后,关键是,运行一些命令来创建一个zip或一个包,然后可以将其添加到Github上的一个“发布”上。 我知道有travis CI,它可以自动编译提交,它可以运行例如CMake安装目标,然后运行CPack,这将创建一个zip或安装程序包。但无法将这些文件上传到GitHub或在某处显示它们

我在想,也许还有另外一种与GitHub集成的服务,但是找不到任何Google点击率。最好将其与travis CI分开,因为在travis上您将运行类似调试的构建(静态分析器等)。而对于您想要部署的发布,您需要放置发布标志、构建文档等

这是一个开源项目,所以我正在寻找一些东西,这样做的开源项目免费,最好不设置自己的服务器基础设施


有一些类似或a的相关帖子,但它们并没有真正回答我的问题。

你可以使用travis CI来解决这个问题,请查看文档中的“构建工件”

在撰写本文时,情况如下:

GitHub发布上传 Travis CI可以自动将资产从
$Travis_BUILD_DIR
上传到GitHub存储库上的git标记

请注意,部署GitHub版本仅适用于标记,而不适用于分支

对于最低配置,请将以下内容添加到
.travis.yml

deploy:
  provider: releases
  api_key: "GITHUB OAUTH TOKEN"
  file: "FILE TO UPLOAD"
  skip_cleanup: true
  on:
    tags: true
基本上,您必须标记每个要上传的提交,这样您就可以制作一个cron作业,定期执行,或者手动执行,只在有趣的工作发生的日子执行


或者,您可以让它将所有构建上传到google云存储帐户或AmazonS3帐户,然后您可以从那里cron job它。例如,请参阅文档。

如果您有专门的资源,您可以使用
cron
和一个很好的shell脚本吗?@user2899162:您的解决方案需要一个面向web的服务器,您需要它来维护自己(并支付费用),对吗?我想避免这种情况。读了Chris的评论后,我也发现了这一点,谢谢!AppVeyor也可以做到这一点:它们甚至支持创建“草稿”版本,因此您可以在发布之前对所有内容进行双重检查。特拉维斯的医生没有说这是否可能。但我真的很想知道这个解决方案是否好:例如,如果travis和appveyor都尝试创建一个发行版,而它已经存在(其中一个是第一个?),会发生什么情况?我也对其他解决方案非常感兴趣<代码>最好将其与travis CI分开,因为在travis上,您将运行类似调试的构建(静态分析器等)。所以,我想现在大多数人并不这么认为travis。许多项目在travis上构建调试和发布,并以两种方式运行测试,因为UB只能在一个构建或另一个构建中显示。我认为您所寻找的只是CI——不会有一种旨在调试的CI服务,也不会有一种旨在发布的CI服务。如果你能构建人们的C++项目,你可以做所有的事情——测试、部署、文档等等。如果你不喜欢特拉维斯支持构建工件/夜,我想你可以看看另一个CI服务,比如CurnCI,或者考虑运行自己的詹金斯服务器,但是你需要把它放在某个地方。我接受这个答案——这可能是最好、最简单的方法。这(和AppVeyor)或Jenkins似乎是唯一可用的解决方案,不幸的是,Jenkins不能免费用于FOSS项目。这一切都不完美,但必须做到。谢谢你的回答!