diff --git a/gitlabreleaseuploader.py b/gitlabreleaseuploader.py index 7b9029b..96111fc 100755 --- a/gitlabreleaseuploader.py +++ b/gitlabreleaseuploader.py @@ -20,6 +20,11 @@ parser.add_argument('--file', '-f', parser.add_argument('--releaseName', '-n', help='Name of the release', required=False, default='') +parser.add_argument('--createRelease', '-C', + help='Shall the release be created here', + required=False, + action='store_true', + default=False) parser.add_argument('--releaseTag', '-t', help='Tag of the release in the repo', required=False, @@ -29,7 +34,7 @@ parser.add_argument('--releaseTagTarget', '-T', required=False, default='') parser.add_argument('--createReleaseTag', '-c', - help='Shall the release be created here', + help='Shall the release tag be created here', required=False, action='store_true', default=False) @@ -47,6 +52,11 @@ parser.add_argument('--instanceUrl', '-I', parser.add_argument('--caBundle', '-B', help='File with the CA certificates to trust', required=False, default='/etc/ssl/certs/ca-certificates.crt') +parser.add_argument('--insecure', + help='insecure ssl connect', + required=False, + action='store_true', + default=False) parser.add_argument('--verbose', '-v', help='verbose output', required=False, @@ -59,6 +69,7 @@ projectId = args.projectId projectUrl = args.projectUrl filesToUpload = args.file releaseName = args.releaseName +createRelease = args.createRelease releaseTag = args.releaseTag releaseTagTarget = args.releaseTagTarget releaseDescription = args.description @@ -67,14 +78,18 @@ createReleaseTag = args.createReleaseTag releaseInfoFilename = args.releaseInfoFile caBundle = args.caBundle verbose = args.verbose -releaseInfo = {} +insecure = args.insecure +releaseInfo = {} if (releaseInfoFilename): with open(releaseInfoFilename, 'r') as releaseInfoFile: releaseInfo = releaseInfoFile.read() releaseInfo = json.loads(releaseInfo) if 'releaseName' in releaseInfo: releaseName = releaseInfo['releaseName'] + if 'createRelease' in releaseInfo: + createRelease = (releaseInfo['createRelease'] in + ('true', 'True')) if 'releaseTag' in releaseInfo: releaseTag = releaseInfo['releaseTag'] if 'releaseTagTarget' in releaseInfo: @@ -89,11 +104,13 @@ if releaseName == '': raise Exception('No release name given') if releaseTag == '': raise Exception('No release tag given') -if releaseTagTarget == '': - raise Exception('No release tag target given') +if (releaseTagTarget == '') and createReleaseTag: + raise Exception('No release tag target given but creation of tag requested') if releaseDescription == '': raise Exception('No release description given') +if insecure: + caBundle = (False) # --- upload the file uploadUrl = "%s/api/v4/projects/%s/uploads" % (instanceUrl, projectId) @@ -150,28 +167,53 @@ if createReleaseTag: # --- create release -createReleaseUrl = "%s/api/v4/projects/%s/releases" % (instanceUrl, projectId) +if createRelease: + createReleaseUrl = "%s/api/v4/projects/%s/releases" % (instanceUrl, projectId) + headers = {"PRIVATE-TOKEN": privateToken, "Content-Type": "application/json"} + + payloadCreateRelease = { + "name": releaseName, + "tag_name": releaseTag, + "description": releaseDescription + } + + createReleaseResult = requests.post(createReleaseUrl, headers=headers, + data=json.dumps(payloadCreateRelease), + verify=caBundle) + + if createReleaseResult.status_code != 201: + print(createReleaseResult) + print(createReleaseResult.text) + raise Exception('Unable to create release') + + if verbose: + print(createReleaseResult) + print(createReleaseResult.text) + print('Release successfully created') + + + +attachAssetsToReleaseUrl = "%s/api/v4/projects/%s/releases" % (instanceUrl, projectId) headers = {"PRIVATE-TOKEN": privateToken, "Content-Type": "application/json"} -payloadCreateRelease = { +payloadAttachAssetsToRelease = { "name": releaseName, "tag_name": releaseTag, - "description": releaseDescription, "assets": { "links": assets } } -createReleaseResult = requests.post(createReleaseUrl, headers=headers, - data=json.dumps(payloadCreateRelease), - verify=caBundle) +attachAssetsToReleaseResult = requests.put(attachAssetsToReleaseUrl, headers=headers, + data=json.dumps(payloadAttachAssetsToRelease), + verify=caBundle) -if createReleaseResult.status_code != 201: - print(createReleaseResult) - print(createReleaseResult.text) - raise Exception('Unable to create release') +if attachAssetsToReleaseResult.status_code != 201: + print(attachAssetsToReleaseResult) + print(attachAssetsToReleaseResult.text) + raise Exception('Unable to assets to release') if verbose: - print(createReleaseResult) - print(createReleaseResult.text) -print('Release successfully created') + print(attachAssetsToReleaseResult) + print(attachAssetsToReleaseResult.text) +print('Assets attached to release successfully')