appcenter-docs icon indicating copy to clipboard operation
appcenter-docs copied to clipboard

How to change version when upload a .apk file

Open masbolgankezderim opened this issue 3 years ago • 1 comments

Hello everyone, I need some help with change versions when i upload a build I use python script for upload a file After upload name of release: 1 v0.0.1 2 v0.0.1 4 v0.0.1 3 v0.0.1 how can i change name (1,2,3,4 and version v0.0.1)

# coding=utf-8
import base64, requests, os, sys, random, subprocess, time

# HTTP Logs
# httplib.HTTPConnection.debuglevel = 2

POLLING_TIMEOUT_MINUTES = 5
POLLING_INTERVAL_SECONDS = 5

artifact_file = sys.argv[1]
organization_name = sys.argv[2]
token = sys.argv[3]
app_name = sys.argv[4]
release_group_id = sys.argv[5]


default_headers = {
    "X-API-Token" : token,
    "Accept" : "application/json",
    "Content-Type" : "application/json"
}

print
print("-------- Prepare Upload Stage --------")
request = "https://api.appcenter.ms/v0.1/apps/%s/%s/uploads/releases" % (organization_name, app_name)
print("POST: %s" % request)
response = requests.post(request, headers = default_headers)
print("Response code: %s" % response.status_code)
print("Response body: %s" % response.content)
release_id = response.json()['id']
package_asset_id = response.json()['package_asset_id']
url_encoded_token = response.json()['url_encoded_token']
upload_domain = response.json()['upload_domain']

print
print("-------- Get Upload Id Stage --------")
apk_size = os.path.getsize(artifact_file)
content_type = "application/vnd.android.package-archive"
file_name = os.path.basename(artifact_file)
request = "https://file.appcenter.ms/upload/set_metadata/%s?file_name=%s&file_size=%s&token=%s&content_type=%s" % (package_asset_id, file_name, apk_size, url_encoded_token, content_type)
print("POST: %s" % request)
response = requests.post(request, headers = default_headers)
print("Response code: %s" % response.status_code)
print("Response body: %s" % response.content)
upload_id = response.json()['id']
chunk_size = response.json()['chunk_size']

print
print("-------- Upload Artifact Chunks Stage --------")
artifact_dir = os.path.dirname(artifact_file)
chunks_dir = artifact_dir + "/chunks"
os.mkdir(chunks_dir)
chunk_name = chunks_dir + "/chunk_"
subprocess.call(['split', '-b', str(chunk_size), artifact_file, chunk_name])

block_number = 0
for chunk_name in sorted(os.listdir(chunks_dir)):
    print
    block_number += 1
    chunk_path = os.path.join(chunks_dir, chunk_name)
    chunk_size = os.path.getsize(chunk_path)
    print("chunk path: %s" % chunk_path)
    print("chunk size: %s" % chunk_size)
    headers = {
        "Content-Length": str(chunk_size),
        "Content-Type": "application/octet-stream"
    }
    request = "%s/upload/upload_chunk/%s?token=%s&block_number=%s" % (upload_domain, package_asset_id, url_encoded_token, block_number)
    print("POST: %s" % request)
    response = requests.post(request, data = open(chunk_path, 'rb'), headers = headers)
    print("Response code: %s" % response.status_code)
    print("Response body: %s" % response.content)

print
print("-------- Upload Complete Stage --------")
request = "https://file.appcenter.ms/upload/finished/%s?token=%s" % (package_asset_id, url_encoded_token)
print("POST: %s" % request)
response = requests.post(request, headers = default_headers)
print("Response code: %s" % response.status_code)
print("Response body: %s" % response.content)

print
print("-------- Commit Upload Stage --------")
request = "https://api.appcenter.ms/v0.1/apps/%s/%s/uploads/releases/%s" % (organization_name, app_name, release_id)
body = {
    "upload_status": "uploadFinished",
    "id": release_id
}
print("PATCH: %s" % request)
response = requests.patch(request, headers = default_headers, json = body)
print("Response code: %s" % response.status_code)
print("Response body: %s" % response.content)

print
print("-------- Get Release Number Stage --------")
request = "https://api.appcenter.ms/v0.1/apps/%s/%s/uploads/releases/%s" % (organization_name, app_name, release_id)
timeout = time.time() + 60 * POLLING_TIMEOUT_MINUTES
print("Starting polling...")
while True:
    print
    print("GET: %s" % request)
    response = requests.get(request, headers = default_headers)
    print("Response code: %s" % response.status_code)
    print("Response body: %s" % response.content)
    if response.json()['upload_status'] == "readyToBePublished":
        release_number = response.json()['release_distinct_id']
        break
    elif time.time() > timeout:
        print("Cannot get release number. Quit...")
        quit()
    else:
        time.sleep(POLLING_INTERVAL_SECONDS)

#print
#print("-------- Distribute Stage --------")
#request = "https://api.appcenter.ms/v0.1/apps/%s/%s/releases/%s/groups" % (organization_name, app_name, release_number)
#print("POST: %s" % request)
#body = {
#    "id": release_group_id,
#    "mandatory_update": False,
#    "notify_testers": False
#}

response = requests.post(request, headers = default_headers, json = body)
print("Response code: %s" % response.status_code)
#print("Response body: %s" % response.content)

masbolgankezderim avatar Apr 29 '21 06:04 masbolgankezderim

Hi @AdilkhanKTR I am trying to upload apk to app center via API using gradle script.I am getting an error while uploading chunk {"error":true,"chunk_num":1,"error_code":"InvalidLength","message":"Invalid chunk length. ChunkNumber: 3 Expected: 4194304 Actual: 978056"}

APK size will change for every project So how can be all the chunk would be same size which is 4194304.

My Actual APK size is 13560968,after spilting into 4 chunks,three chunk size will be 4194304, 4th one will be 978056.But app center expecting 4th one also should be 4194304.How we can resolve this issue?

Vibinreji avatar Apr 23 '23 14:04 Vibinreji