在Travis CI中触发依赖项目的构建

时间:2015-08-20 12:17:27

标签: continuous-integration travis-ci

我们在一个存储库中有我们的单页javascript应用程序,在另一个存储库中有我们的后端服务器。有没有办法在后端服务器上传递构建来触发单页应用程序的构建?

我们不希望将它们合并到一个存储库中,但我们确实希望确保对一个存储库的更改不会破坏另一个存储库。

2 个答案:

答案 0 :(得分:7)

是的,可以在第一个Travis作业成功后触发另一个Travis作业。您可以使用trigger-travis.sh脚本。

脚本documentation说明了如何使用它 - 设置环境变量并在.travis.yml文件中添加几行。

答案 1 :(得分:0)

可能是的,也可能等待相关的构建结果。

我从上一个答案中发现了trigger-travis.sh,但在此之前我实现了自己的解决方案(有关完整的工作源代码:cf.待处理的拉取请求PR196live result

参考文献

基于travis API v3文档:

您将需要一个travis令牌,并将此令牌设置为travis门户上的秘密环境变量。

遵循此文档,我能够触发构建并等待他。

1)制作.travis_hook_qa.sh

(提取)-触发新的构建:

REQUEST_RESULT=$(curl -s -X POST \
   -H "Content-Type: application/json" \
   -H "Accept: application/json" \
   -H "Travis-API-Version: 3" \
   -H "Authorization: token ${QA_TOKEN}" \
   -d "$body" \
   https://api.travis-ci.org/repo/${QA_SLUG}/requests)

(等同于trigger-travis.sh,您可以对构建定义进行一些自定义(使用$body

2)制作.travis_wait_build.sh

(提取)-等待刚刚创建的构建,获取构建信息:

    BUILD_INFO=$(curl -s -X GET \
       -H "Content-Type: application/json" \
       -H "Accept: application/json" \
       -H "Travis-API-Version: 3" \
       -H "Authorization: token ${QA_TOKEN}" \
       https://api.travis-ci.org/repo/${QA_SLUG}/builds?include=build.state\&include=build.id\&include=build.started_at\&branch.name=master\&sort_by=started_atdesc\&limit=1 )
    BUILD_STATE=$(echo "${BUILD_INFO}" | grep -Po '"state":.*?[^\\]",'|head -n1| awk -F "\"" '{print $4}')
    BUILD_ID=$(echo "${BUILD_INFO}" | grep '"id": '|head -n1| awk -F'[ ,]' '{print $8}')

您将不得不等到超时或预期的最终状态。

提醒:travis构建状态可能是created | started(然后是passed | failed