在特定提交上触发 Appveyor 构建
Trigger an Appveyor build on particular commit
我需要的是一个命令,它可以使用特定的环境变量在 Appveyor 上开始构建某个提交。从指南中,有:
- 来自 build worker API:
Start-AppveyorBuild
允许您传入环境变量但只允许您指定分支,而不是提交。
- 来自 REST API:
POST /api/builds
允许您选择提交哈希,但不能为随后的构建设置任何环境变量。
有什么可以让我同时做到这两点?我可以使用 build worker API 或 REST API(尽管 REST 更可取,所以我可以在任何地方 运行)。
更广泛的上下文是我希望构建启动一个单独的构建,该构建将 运行 同一提交的部署脚本(同一分支不够好 - 分支可能已更新)。它们需要单独构建,因为第一次和第二次构建一起花费的时间对于 Appveyor 的 60 分钟时间限制来说太长了。环境变量用于 "configure" 构建,以便它部署而不是其他东西。
检查此示例(如果您需要我们将超时增加到 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
使用 curl 你可以在下面使用,不需要分支,如果指定它会给出错误。 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}' }"`
我需要的是一个命令,它可以使用特定的环境变量在 Appveyor 上开始构建某个提交。从指南中,有:
- 来自 build worker API:
Start-AppveyorBuild
允许您传入环境变量但只允许您指定分支,而不是提交。 - 来自 REST API:
POST /api/builds
允许您选择提交哈希,但不能为随后的构建设置任何环境变量。
有什么可以让我同时做到这两点?我可以使用 build worker API 或 REST API(尽管 REST 更可取,所以我可以在任何地方 运行)。
更广泛的上下文是我希望构建启动一个单独的构建,该构建将 运行 同一提交的部署脚本(同一分支不够好 - 分支可能已更新)。它们需要单独构建,因为第一次和第二次构建一起花费的时间对于 Appveyor 的 60 分钟时间限制来说太长了。环境变量用于 "configure" 构建,以便它部署而不是其他东西。
检查此示例(如果您需要我们将超时增加到 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
使用 curl 你可以在下面使用,不需要分支,如果指定它会给出错误。 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}' }"`