You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Fastlane调用REST API 轮询检测构建任务是否取消

Fastlane调用REST API轮询检测构建状态的实现方案

方案1:使用sh动作结合curl实现(无额外依赖)

无需安装额外组件,直接复用Fastlane内置的sh动作调用系统curl命令即可实现请求,示例代码如下:

# 封装API查询方法
def query_api(url)
  # 调用curl同时获取响应状态码和返回内容
  sh_result = sh("curl -s -w '%{http_code}' -o /tmp/api_response.json #{url.shellescape}", log: false)
  status_code = sh_result[-3..-1].to_i
  response_body = File.read("/tmp/api_response.json")
  return { status_code: status_code, body: response_body }
end

# 业务逻辑实现,和你提供的伪代码逻辑对齐
api_query_result = query_api("https://api.mysite.com")
if api_query_result[:status_code] == 200
  upload_to_testflight
end

如果需要轮询检测,可以直接扩展循环逻辑:

max_poll_count = 12 # 最大轮询次数
poll_interval = 10 # 轮询间隔,单位秒
current_count = 0

while current_count < max_poll_count
  api_query_result = query_api("https://api.mysite.com")
  # 假设接口返回410代表构建任务已被取消
  if api_query_result[:status_code] == 410
    UI.user_error!("构建任务已被取消,流程终止")
  elsif api_query_result[:status_code] == 200
    upload_to_testflight
    break
  end
  current_count += 1
  sleep(poll_interval)
end

# 轮询超时处理
if current_count >= max_poll_count
  UI.user_error!("轮询检测超时,流程终止")
end

方案2:使用Ruby内置Net::HTTP实现(更稳定,不依赖系统curl)

Fastlane本身基于Ruby开发,可以直接调用Ruby标准库的HTTP客户端实现请求,跨平台兼容性更好,也更方便自定义请求参数:

require 'net/http'
require 'uri'

def query_api(url)
  uri = URI.parse(url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true if uri.scheme == 'https'
  # 有请求超时需求可以添加如下配置
  # http.open_timeout = 5
  # http.read_timeout = 5
  request = Net::HTTP::Get.new(uri.request_uri)
  # 有鉴权需求可以添加请求头,示例:
  # request['Authorization'] = 'Bearer 你的接口鉴权token'
  response = http.request(request)
  return { status_code: response.code.to_i, body: response.body }
end

# 后续的业务判断、轮询逻辑和方案1完全一致,可直接复用

实现注意点

  • 可以根据你的API实际规则调整状态码、返回体的判断逻辑,比如解析返回JSON的特定字段确认构建状态
  • 如果需要在多个不同的Fastlane动作之间穿插检测,可以将query_api方法封装为公共方法放在Fastfile头部,在每个动作执行前调用一次检测即可
  • 建议根据你的实际构建时长调整轮询间隔和最大重试次数,避免短时间大量请求占用API资源
  • 可以在query_api方法中添加网络异常捕获逻辑,避免网络波动导致整个Fastlane流程意外中断

内容的提问来源于stack exchange,提问作者CarlJogenburg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 10:54:04