【问题标题】:Trigger an Appveyor build on particular commit在特定提交上触发 Appveyor 构建
【发布时间】:2018-07-04 06:38:08
【问题描述】:

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

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

有什么可以让我同时做这两件事的?我可以使用 build worker API 或 REST API(虽然 REST 更可取,所以我可以在任何地方运行它)。

更广泛的上下文是我希望构建启动一个单独的构建,该构建将运行相同提交的部署脚本(相同的分支不够好 - 分支可能已更新)。它们需要单独构建,因为第一个和第二个构建一起花费的时间太长,超出了 Appveyor 的 60 分钟时间限制。环境变量用于“配置”构建,以便部署而不是执行其他操作。

【问题讨论】:

    标签: appveyor


    【解决方案1】:

    检查此示例(如果您需要我们将超时时间增加到 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
    

    【讨论】:

    • 谢谢你看起来很完美(假设它有效)。看来文档appveyor.com/docs/api/projects-builds 已将他们对调用的“定义”分成两个示例,我认为这两个示例是互斥的。是否有任何文档可以准确指定正文中的所有可能值?
    • 基本上就是这样。唯一错过的是PullRequestId(如here 所述)。由于显而易见的原因,它不能与branchcommitId 一起使用。 PR 只是 GitHub,但 BitBucket 和 GitLab 将在今年夏天推出。再次毫不犹豫地要求 90 分钟超时 :) 我们需要增加您的帐户名称。
    • 从测试看来,branch 键对于这篇文章来说是必要的(仅commitId 是不够的),因为 appveyor 使用 git clone 的机制。它是否正确?这与问题没有直接关系,我只是出于兴趣而问这个问题。
    【解决方案2】:

    使用 curl 你可以在下面使用,分支不是必需的,如果指定,它会给出错误。 git commit 就够了:

    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}' }"`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      相关资源
      最近更新 更多