如何利用AppCenter下载URL获取构建包并上传至Headspin仓库?
解决方案
cURL 示例
1. 从AppCenter下载构建包
替换变量为你的实际信息,执行命令即可将构建包下载到本地:
# 替换为你的AppCenter配置信息 APPCENTER_TOKEN="你的AppCenter API令牌" OWNER_NAME="应用所有者名称" APP_NAME="应用名称" BUILD_ID="目标构建ID" DOWNLOAD_PATH="./app_build.ipa" # Android项目替换为 ./app_build.apk # 下载构建包 curl -H "X-API-Token: $APPCENTER_TOKEN" \ -o $DOWNLOAD_PATH \ "https://api.appcenter.ms/v0.1/apps/$OWNER_NAME/$APP_NAME/builds/$BUILD_ID/download"
2. 上传至Headspin仓库
使用已获取的Headspin上传URI,执行PUT请求完成上传:
# 替换为你的上传URI和本地文件路径 UPLOAD_URI="你的Headspin上传URI" LOCAL_FILE="./app_build.ipa" # Android项目替换为 ./app_build.apk # 上传文件 curl -X PUT \ -T $LOCAL_FILE \ $UPLOAD_URI
JavaScript/TypeScript 示例(Node.js环境)
先安装依赖:npm install axios fs-extra,再运行以下代码:
import axios from 'axios'; import fs from 'fs-extra'; // 配置参数,替换为你的实际信息 const config = { appcenter: { token: '你的AppCenter API令牌', owner: '应用所有者名称', appName: '应用名称', buildId: '目标构建ID', downloadPath: './app_build.ipa' // Android项目替换为 ./app_build.apk }, headspin: { uploadUri: '你的Headspin上传URI' } }; // 从AppCenter下载构建包 async function downloadFromAppCenter() { const downloadUrl = `https://api.appcenter.ms/v0.1/apps/${config.appcenter.owner}/${config.appcenter.appName}/builds/${config.appcenter.buildId}/download`; const response = await axios({ method: 'get', url: downloadUrl, headers: { 'X-API-Token': config.appcenter.token }, responseType: 'stream' }); const writer = fs.createWriteStream(config.appcenter.downloadPath); response.data.pipe(writer); return new Promise((resolve, reject) => { writer.on('finish', resolve); writer.on('error', reject); }); } // 上传至Headspin仓库 async function uploadToHeadspin() { const fileData = await fs.readFile(config.appcenter.downloadPath); await axios({ method: 'put', url: config.headspin.uploadUri, data: fileData, headers: { 'Content-Type': 'application/octet-stream' } }); } // 执行完整流程 (async () => { try { await downloadFromAppCenter(); console.log('构建包下载完成'); await uploadToHeadspin(); console.log('成功上传至Headspin仓库'); } catch (error) { console.error('操作失败:', error); } })();
内容的提问来源于stack exchange,提问作者Ashok Dikshit
相关产品推荐
相关产品推荐

