in src/script/management-sdk.ts [252:277]
public async release(appName: string, deploymentName: string, filePath: string, targetBinaryVersion: string, updateMetadata: PackageInfo, uploadProgressCallback?: (progress: number) => void): Promise<Package> {
updateMetadata.appVersion = targetBinaryVersion;
const packageFile: PackageFile = await this.packageFileFromPath(filePath);
const appParams = await this._adapter.parseApiAppName(appName);
const assetJsonResponse: JsonResponse = await this._requestManager.post(urlEncode`/apps/${appParams.appOwner}/${appParams.appName}/deployments/${deploymentName}/uploads`, null, true)
const assets = assetJsonResponse.body as ReleaseUploadAssets;
await this._fileUploadClient.upload({
assetId: assets.id,
assetDomain: assets.upload_domain,
assetToken: assets.token,
file: packageFile.path,
onProgressChanged: (progressData: IProgress) => {
if (uploadProgressCallback) {
uploadProgressCallback(progressData.percentCompleted);
}
},
});
const releaseUploadProperties: UploadReleaseProperties = this._adapter.toReleaseUploadProperties(updateMetadata, assets, deploymentName);
const releaseJsonResponse: JsonResponse = await this._requestManager.post(urlEncode`/apps/${appParams.appOwner}/${appParams.appName}/deployments/${deploymentName}/releases`, JSON.stringify(releaseUploadProperties), true);
const releasePackage: Package = this._adapter.releaseToPackage(releaseJsonResponse.body);
return releasePackage;
}