diff --git a/gitlabreleaseuploader.py b/gitlabreleaseuploader.py index 192dcc0..aa45fbd 100755 --- a/gitlabreleaseuploader.py +++ b/gitlabreleaseuploader.py @@ -14,7 +14,9 @@ parser.add_argument('--projectId', '-i', parser.add_argument('--projectUrl', '-u', help='URL of the related project at Gitlab', required=True) parser.add_argument('--file', '-f', - help='File to be released', required=True) + help='File to be released, can appear multiple times', + action='append', + required=True) parser.add_argument('--releaseName', '-n', help='Name of the release', required=False, default='') @@ -55,7 +57,7 @@ args = parser.parse_args() privateToken = args.privateToken projectId = args.projectId projectUrl = args.projectUrl -fileToUpload = args.file +filesToUpload = args.file releaseName = args.releaseName releaseTag = args.releaseTag releaseTagTarget = args.releaseTagTarget @@ -67,6 +69,8 @@ caBundle = args.caBundle verbose = args.verbose releaseInfo = {} + + if (releaseInfoFilename): with open(releaseInfoFilename, 'r') as releaseInfoFile: releaseInfo = releaseInfoFile.read() @@ -96,21 +100,25 @@ if releaseDescription == '': # --- upload the file uploadUrl = "%s/api/v4/projects/%s/uploads" % (instanceUrl, projectId) headers = {"PRIVATE-TOKEN": privateToken} -files = {"file": open(fileToUpload, 'rb')} -uploadResult = requests.post(uploadUrl, files=files, headers=headers, verify=caBundle) +assets = [] +for f in filesToUpload: + files = {"file": open(f, 'rb')} -if uploadResult.status_code != 201: - print(uploadResult) - print(uploadResult.text) - raise Exception('Unable to upload file to Gitlab') + uploadResult = requests.post(uploadUrl, files=files, headers=headers, verify=caBundle) -if verbose: - print(uploadResult) - print(uploadResult.text) -print('File successfully uploaded') + if uploadResult.status_code != 201: + print(uploadResult) + print(uploadResult.text) + raise Exception('Unable to upload file to Gitlab') -uploadResultJson = json.loads(uploadResult.text) + if verbose: + print(uploadResult) + print(uploadResult.text) + print('File {} successfully uploaded'.format(f)) + + url = projectUrl + json.loads(uploadResult.text)['url'] + assets.append({'name': f, 'url': url}) # --- create release tag if createReleaseTag: @@ -145,19 +153,13 @@ if createReleaseTag: # --- create release createReleaseUrl = "%s/api/v4/projects/%s/releases" % (instanceUrl, projectId) headers = {"PRIVATE-TOKEN": privateToken, "Content-Type": "application/json"} -fullUrl = projectUrl + uploadResultJson['url'] payloadCreateRelease = { "name": releaseName, "tag_name": releaseTag, "description": releaseDescription, "assets": { - "links": [ - { - "name": fileToUpload, - "url": fullUrl - } - ] + "links": assets } }