【发布时间】:2014-02-07 13:09:32
【问题描述】:
我在 GitHub 存储库中创建了一个 TravisCI Hook,它会在推送到存储库后自动运行构建。我想补充的是,如果构建成功,则会自动创建一个标签。
我发现有一种方法可以使用 GitHub API http://developer.github.com/v3/git/tags/#create-a-tag-object 创建标签
但是如何控制对我的存储库的访问?我无法在 travis.yml 中公开我的登录 github 凭据,因为每个人都可以阅读它,因为它包含在存储库中。\
我对自动部署很陌生,所以如果有任何其他解决方案可以在没有 travis 的情况下执行此操作,请告诉我。我想要实现的是在成功构建后为用户创建一个可下载的版本。
解决方案
好的,我终于找到了正确的 travis.yaml 配置。
它是如何工作的: 推送到存储库后,travis 将运行我的应用程序的测试。如果测试成功,travis 将构建当前构建的预编译版本并将其上传到我在 GitHub 存储库上创建的特殊版本。
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 continuous-integration travis-ci