使用 Travis 调用 GitHub API 构建 Tag

2023-11-21

我在 GitHub 存储库中创建了一个 TravisCI Hook,它在推送到存储库后自动运行构建。我想补充的是,如果构建成功,则会自动创建一个标签。

我发现有一种方法可以使用 GitHub API 创建标签http://developer.github.com/v3/git/tags/#create-a-tag-object

但是我如何控制对我的存储库的访问?我无法在 travis.yml 中公开我的登录 github 凭据,因为每个人都可以阅读它,因为它是在存储库中创建的。\

我对自动化部署还很陌生,所以如果有任何其他解决方案可以在没有 travis 的情况下完成此任务,请也告诉我。我想要实现的是在成功构建后为用户创建一个可下载版本。

Solution

好吧,我终于找到了正确的 travis.yaml 配置。

它是如何工作的: 推送到存储库后,travis 将运行我的应用程序的测试。如果测试成功,travis 将构建当前版本的预编译版本,并将其上传到我在 GitHub Repo 上创建的特殊版本。

    language: scala
    env:
      global:
        - PLAY_VERSION=2.2.1
        - secure: "HD1x0S9ad/3+G9YUkyT/uTw9lEr+tUQEV4QO+M2Ro1JFSVOzLNZiNoh6FrNb06a0TbencTkftyHYmYjp1/CCyTpF9CMCQ4ddB7TVF9hibH1y9ONVrPJIm5BCEpjGDa4fND8bkcChrpcZDQKIO0ZwArEsl2+IRocnbBT+oYqIFNo="
    before_script:
      - wget http://downloads.typesafe.com/play/${PLAY_VERSION}/play-${PLAY_VERSION}.zip
      - unzip -q play-${PLAY_VERSION}.zip
      - sudo apt-get install jq
    script: play-${PLAY_VERSION}/play test
    notifications:
      email: false
    after_success: 
      - play-${PLAY_VERSION}/play dist
      - cd target/universal/
      - 'ASSETID=$(curl -s -H "Authorization: token ${BUILD_KEY}" "https://api.github.com/repos/meisign/fillable/releases/204198/assets" | jq ".[0].id")'
      - 'curl -XDELETE -s -H "Authorization: token ${BUILD_KEY}" "https://api.github.com/repos/meisign/fillable/releases/assets/$ASSETID"'
      - 'curl -XPOST -s -H "Authorization: token ${BUILD_KEY}" -H "Content-Type: application/zip" --data-binary @./Fillable-1.0-SNAPSHOT.zip "https://uploads.github.com/repos/meisign/fillable/releases/204198/assets?name=Fillable.zip"'

您可以创建一个GitHub 个人 API 令牌这将授予对您的存储库的访问权限。这public_repo范围应该是公共存储库所需的全部。

使用此令牌对 GitHub API 进行身份验证。要将令牌与API 将其包含在授权标头中.

curl -H "Authorization: token <YOUR_TOKEN>" https://api.github.com/user

您还可以使用此令牌推送到您的存储库。

git push -q https://<token>@github.com/<user>/<repo>

现在,有趣的部分是,您需要对该令牌保密。公开它相当于公开您的用户名和密码。


您需要确保通读文档引用并关注您的 Travis-CI 日志。这些命令在 bash 中运行,具体取决于您的编写方式或者是否存在任何错误不小心泄露了您的令牌.

为了保持该令牌的秘密,Travis-CI 有一个用于生成公钥和私钥的系统。这加密密钥特定于您的存储库。

The link拥有所有相关文件;您需要安装 Travis 命令行界面工具,它以 Ruby Gem 形式提供。

gem install travis

加密变量(例如您的个人令牌)-

travis encrypt SOMEVAR=secretvalue --add

Travis 假设该命令正在项目目录中运行,并将根据您的存储库提供唯一的公钥来加密您的数据。这--add标志会自动将受保护的数据放入您的.travis.yml file.

这就是你保守秘密的方式。使用 Git 或 GitHub API 创建标签的实现由您决定。一旦你弄清楚了,请分享。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Travis 调用 GitHub API 构建 Tag 的相关文章

  • git config --global user.email 重新安装后不会让我更改电子邮件

    嘿 我完全重新安装了 Github 删除了所有文件 现在我再次安装了它 但是当我尝试设置它时 我遇到了一些问题 git config global user email 电子邮件受保护 cdn cgi l email protection
  • 无法从 Sourcetree 拉取 Git 远程存储库

    我生成了 ssh 密钥并配置了我的 git 和 SourceTree 我可以 git pull 并从 Git bash 执行其他操作 注意 我在 bashrc 中添加了以下内容以使其正常工作 eval ssh agent ssh add 然
  • github - 启用分支锁

    作为 GitHub 管理员 我想为所有用户锁定 GitHub 中的特定分支 例如如果我不希望任何人推送到主 生产或项目分支 我该怎么做 有没有办法直接锁定 GitHub 服务器上的分支 而不是使用任何客户端挂钩 是否有任何第三方工具 API
  • Composer 无法获取 github

    今天 我尝试通过运行来安装 Laravelcomposer create project laravel laravel 5 1 myproject prefer dist我收到此错误 Could not fetch https api g
  • Github - 上传文件

    我正在尝试将文件夹添加到 github 存储库 该文件在 github 上显示为空 并有一个绿色箭头 有谁知道如何解决这个问题 我将不胜感激你的帮助 谢谢 这看起来类似于 Git 如何跟踪未跟踪的内容 https stackoverflow
  • Git:从 master 以外的分支克隆

    我正在尝试从 Github 的存储库中提取数据 但我不想克隆主分支 我想克隆其他一些分支 当我尝试时git clone
  • git 2.32 git push -u origin master 没有任何反应

    I ve starting to use git github and I m stucked on how to push my codes to github I m following some tutorials and when
  • Travis CI 可以在同一存储库的不同分支中使用加密文件吗?

    我正在尝试让 Travis CI 构建在我自己的私人分支和我组织的存储库中工作 我使用以下方法加密了配置文件travis encrypt file命令 它似乎在我自己的 fork 的 travis 设置中创建了两个环境变量 如下所示 加密
  • 从 GitHub 读取代码作为网页中的文本(原始)

    我正在尝试从我的 GitHub 存储库读取一些源代码 C 语言 以在我的网页中显示为文本 我可以通过以下方式访问原始模式下的代码https raw github com https raw github com 我正在使用 jQuery G
  • 如何从 GitHub 上彻底删除问题?

    是否可以从 GitHub 问题跟踪器中完全删除问题 不可以 github API 只允许您打开 关闭 重新打开问题 这是问题 API 文档 http developer github com v3 issues
  • 尝试克隆一个 git 存储库,但它卡在克隆到中

    我使用的是 Windows 10版本 10 0 19042 内部版本 19042 GIT Ver 2 32当尝试使用 git bash 执行以下命令时git clone depth 1 b carla https github com Ca
  • 如果 git 凭证管理器显示令牌,它如何安全

    I have credential helper manager core 这是 Windows 凭据管理器的新助手 我不明白如果你可以让 git 显示你的凭据 它如何安全git credential fill 重现步骤 通过执行命令确认凭
  • 在我的 gemfile 中指定来自 Github 的 gem 的分叉版本时出现“无法找到 gem”错误

    我正在尝试使用这个分叉版本 http github com railsdog searchlogicsearchlogic gem 的 在我的 gemfile 中 我有 gem searchlogic git gt http github
  • Gitlab CI服务端口是如何暴露的?

    我有一个 gitlab ci yml file integration test services name registry gitlab com group project testmailserver 1 1 alias mail e
  • jbehave 与 jenkins 的集成

    我必须将 jbehave 与 jenkins 集成 但我不知道该怎么做 我看到我必须在 Jenkins 中创建一个任务 但我不知道应该在哪里连接 jbehave 与此任务 有人可以帮助我吗 Thanks Sarang 所以我假设您已将 JB
  • Git 会删除空文件夹吗? [复制]

    这个问题在这里已经有答案了 我已提交一个项目并将其推送到我的 GitHub 帐户 该项目包含以下部分文件结构 server conf some files java lib java 和 lib 文件夹为空 从 GitHub 下载我的项目时
  • Git Push 远程:致命:包超出允许的最大大小

    我接到了一个大项目 客户想将其添加到github 我是一点一点添加的 然后发生的事情是我太贪心了 一次添加了太多文件 现在 无论我尝试什么 我都会不断收到此错误 我怎样才能解决这个问题 我试图回滚 但也许我做错了 git push Ente
  • 自动部署资源

    我足够了解我们需要通过单个用户操作来部署我们的应用程序 但是 我don t know 在 NET 商店中可以使用哪些好工具 您如何管理每个环境的配置更改 有人可以给我指出一些用于持续集成的好资源吗 我希望看到一些理论以及逐步的实践指南 Ed
  • travis-ci 安装程序使用 --github-token 发布

    我在使用带有 github 令牌的安装版本时遇到问题 我喜欢 travis ci 但我不愿意透露我的 github 密码 我需要使用令牌并且我阅读了文档 因为这应该可以通过这种方式实现 不幸的是它仍然要求输入密码 travis login
  • 使用 SourceTree 克隆存储库

    有人可以给我一个简单的使用 SourceTree 克隆存储库的快速演练吗 在书签中 我单击克隆存储库 对于源路径 我粘贴如下所示的 URL 电子邮件受保护 cdn cgi l email protection 客户端 应用程序名称 ios

随机推荐

  • 使用 jQuery 将 XML 转换为 javascript 数组

    我是 XML 和 AJAX 的新手 也是 Javascript 和 jQuery 的新手 除其他工作职责外 我还设计我们的网站 截止日期已经临近 我能想到的做好这个项目的唯一方法就是使用 AJAX 我有一份充满 XML 对象的文档 例如下面
  • 如何删除MySQL表中的重复项?

    我需要DELETE指定 sid 的重复行MySQL table 我如何使用 SQL 查询来做到这一点 DELETE DUPLICATED TITLES FROM table WHERE SID 1 类似这样的事情 但我不知道该怎么做 这会就
  • 作曲家包测试引导程序

    我已经编写了一个包 作为开发过程的一部分 我想对其运行单元测试 这基本上意味着我需要一个引导文件来为我的包注册自动加载器 我看到的任何包都没有特定的引导文件 因此我不太了解开发人员如何测试他们自己的包 这是我的目录结构 src Compan
  • 如何在 PHP 中创建指定数量且全部等于指定数字的随机值?

    例如 假设我输入 10 作为值的数量 输入 10000 作为总金额 该脚本需要随机化 10 个不同的数字 全部等于 10000 不多也不少 但它也需要是动态的 例如 有时我可能会输入 5 或 6 甚至 99 作为值的数量 并输入任何数字 最
  • 如何在 Windows 上从 ffmpeg 获取实时视频帧和时间戳到 python

    寻找替代方案 因为 OpenCV 不会提供时间戳live相机流 在 Windows 上 这是我的计算机视觉算法所必需的 我找到了 ffmpeg 和这篇优秀的文章https zulko github io blog 2013 09 27 re
  • RequestDispatcher.forward() 与 HttpServletResponse.sendRedirect()

    之间有什么概念区别forward and sendRedirect 在 Web 开发领域 术语 重定向 是指向客户端发送一个空的 HTTP 响应 其中仅包含一个Location标头包含客户端必须向其发送全新 GET 请求的新 URL 所以基
  • (function (classes, fdef, mtable) 中的错误:无法找到签名“spec_tbl_df”的函数“select”的继承方法

    我的项目中出现此错误代码 奇怪的是 我今天早些时候使用的这段代码运行得很好 然而 由于我安装了 R 的更新 我现在在运行它时收到此消息 df1 lt df gt select Month Longitude Latitude Type Er
  • Gradle 构建期间序言中不允许出现内容

    我尝试了不同的方法 但问题没有解决 我什至重新安装了 android studio 但仍然遇到同样的问题 Fatal Error annotations 26 1 1 pom 2 1 Content is not allowed in pr
  • Vue - 深度观察对象数组并计算变化?

    我有一个名为people包含如下对象 Before id 0 name Bob age 27 id 1 name Frank age 32 id 2 name Joe age 38 它可以改变 After id 0 name Bob age
  • 此双重检查锁定修复有什么问题?

    所以我现在看到很多文章声称在 C 上双重检查锁定 通常用于防止多个线程尝试初始化延迟创建的单例 已被破坏 正常的双重检查锁定代码如下所示 class singleton private singleton private construct
  • numpy 中 itertools.combinations 的 N 维版本

    我想实施itertools combinations对于 numpy 基于这次讨论 我有一个适用于一维输入的函数 def combs a r Return successive r length combinations of elemen
  • 有没有一种简单的方法可以在 Visual Studio 中编写 UTF-8 八位字节?

    我有一个问题 我需要在 C 源代码中的标准 char 类型上使用 UTF 8 编码的字符串 如下所示 char twochars xe6 x97 xa5 xd1 x88 通常 如果我想编写 UTF 8 字符 我需要使用如上所述的八位字节 V
  • 非规范化数据

    我使用以下 R 代码将数据标准化为最小值和最大值 normalize lt function x return x min x max x min x mydata lt as data frame lapply mydata normal
  • .NET 类及其源代码

    当我编写 C 或任何 NET 程序 时 我使用方法和类 我使用的大部分代码都是从 NET 类调用方法 是否可以 纯粹出于好奇 查看这些类的实际源代码 我知道 MSDN 有完整的类 它们的属性和方法的列表 但我想看看代码 是的 浏览 NET框
  • Django 按点赞数最高的顺序排序

    我正在尝试创建一个页面 人们可以在其中看到评分最高的文章 但存在一个问题 当我过滤另一用户也喜欢的文章的点赞数时 它会创建已投票文章的副本 我想要的是按照点赞数最高的顺序对博客的文章进行排序 模型 py class Article mode
  • 使用 Realm.io 存储货币值

    我开始在我正在编写的 Android 应用程序中使用 Realm io 在我的一个数据对象中 我需要存储货币值 以前 我在内部将该值存储为 BigDecimal 值 然后在移入和移出数据库时也将其转换为双精度值 我总是被告知 由于处理货币值
  • TCP套接字客户端通过nodejs上的代理

    我需要与 smtp 服务器建立 tcp 套接字连接 是否可以通过nodejs上的代理服务器连接 有可用的 npm 模块吗 我根本找不到任何东西 var net require net var HOST 127 0 0 1 var PORT
  • Python 3 中的 Concurrent.futures 与多重处理

    Python 3 2 推出并发期货 这似乎是旧线程的一些高级组合多重处理模块 与旧的多处理模块相比 将其用于 CPU 密集型任务有哪些优点和缺点 本文表明他们更容易合作 是这样吗 我不会打电话concurrent futures更 先进 这
  • iOS 8.1.3 - 企业分发 - 应用程序缺少应用程序标识符权利

    我在 iOS 8 1 3 上使用 Enterprise Distribution 时遇到很多问题 我设法修复了大部分出现此错误的安装 Ignore manifest download already have bundleID 有了这个答案
  • 使用 Travis 调用 GitHub API 构建 Tag

    我在 GitHub 存储库中创建了一个 TravisCI Hook 它在推送到存储库后自动运行构建 我想补充的是 如果构建成功 则会自动创建一个标签 我发现有一种方法可以使用 GitHub API 创建标签http developer gi