使用Travis调用GitHub API来构建标记

使用Travis调用GitHub API来构建标记,github,continuous-integration,travis-ci,Github,Continuous Integration,Travis Ci,我在GitHub存储库中创建了一个TravisCI钩子,它在推送到repo后自动运行构建。我想补充的是,如果构建成功,将自动创建一个标记 我发现有一种方法可以使用GithubAPI创建标记 但是如何控制对存储库的访问?我无法在travis.yml中公开我的登录github凭据,因为每个人都可以阅读存储库中的内容\ 我对自动化部署非常陌生,所以如果没有travis,还有其他解决方案,请让我也知道。我想要实现的是在成功构建之后为用户创建一个可下载的版本 解决方案 好的,我终于找到了正确的travis

我在GitHub存储库中创建了一个TravisCI钩子,它在推送到repo后自动运行构建。我想补充的是,如果构建成功,将自动创建一个标记

我发现有一种方法可以使用GithubAPI创建标记

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

我对自动化部署非常陌生,所以如果没有travis,还有其他解决方案,请让我也知道。我想要实现的是在成功构建之后为用户创建一个可下载的版本

解决方案 好的,我终于找到了正确的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"'
您可以创建将授予对存储库的访问权限的。
public\u repo
范围应该是公共存储库所需的全部内容

git push -q https://<token>@github.com/<user>/<repo>
使用此令牌对GitHub API进行身份验证。将令牌用于

要加密变量(如您的个人令牌)——

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


你就是这样保守秘密的。使用Git或GitHub API创建标记的实现取决于您。一旦你明白了,请与我分享。

非常感谢,我想这就是我需要知道的全部。当我找到答案后,我会在这里发布我的解决方案。我已经在答案中添加了我的工作代码。如果需要,您可以编辑此答案并将其粘贴到中。:)谢谢你的加密建议。难道不能用部署密钥来降低风险吗?
git push -q https://<token>@github.com/<user>/<repo>
gem install travis
travis encrypt SOMEVAR=secretvalue --add