在特定提交上触发Appveyor构建

时间:2018-07-04 06:38:08

标签: appveyor

我需要的是一个命令,该命令在Appveyor上使用特定环境变量启动某个提交的构建。在指南中,有:

  • 从构建工作者API中:Start-AppveyorBuild,它允许您传入环境变量,但仅允许您指定分支,而不是提交。
  • 从REST API:POST /api/builds中,您可以选择提交哈希,但不能为随后的构建设置任何环境变量。

有什么可以让我做到这两项的?我可以使用build worker API或REST API(尽管最好使用REST,以便我可以在任何地方运行它)。

更广泛的上下文是我希望一个构建开始一个单独的构建,该构建将运行具有相同提交的部署脚本(同一分支还不够好-分支可能已更新)。由于第一个版本和第二个版本在一起花费的时间超过了Appveyor的60分钟时间限制,因此它们必须是单独的版本。环境变量用于“配置”构建,以便部署而不是其他构建。

2 个答案:

答案 0 :(得分:2)

检查此示例(如果您需要我们将超时时间增加到90分钟,请写信给team at appveyor.com

$token = '<API_Token>'

$headers = @{
  "Authorization" = "Bearer $token"
  "Content-type" = "application/json"
}

$body = @{
    accountName="<Your_account>"
    projectSlug="<Your_project_slug>"
    branch="<Your_branch>"
    commitId="<Your_commit_id>"
}
$body = $body | ConvertTo-Json

Invoke-RestMethod -Uri 'https://ci.appveyor.com/api/builds' -Headers $headers  -Body $body -Method POST

答案 1 :(得分:0)

使用卷曲,您可以在下面使用,不需要分支,如果指定,它将给出错误。 Git提交就足够了:

response=`curl -H "Authorization: Bearer ${APPVEYOR_TOKEN}" -H "Content-Type: application/json" https://ci.appveyor.com/api/builds --data-binary "{ accountName: '${accountName}', projectSlug: '${projectName}', commitId: '${commitId}' }"`
相关问题