diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..4d49bb1 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,28 @@ +stages: + - check + - release + +build: + stage: check + image: registry.gitlab.com/wolutator/base-build-env:latest + tags: + - hottis + - linux + - docker + script: + - for I in *.py; do python -m py_compile $I; done + - for I in *.py; do python -m pycodestyle $I; done + +release: + stage: release + image: registry.gitlab.com/wolutator/base-build-env + tags: + - hottis + - linux + - docker + only: + - master + script: + - python gitlabreleaseuploader.py -p $PRIVATE_TOKEN -i $CI_PROJECT_ID -u $CI_PROJECT_URL + -f gitlabreleaseuploader.py -F info.json -T $CI_COMMIT_REF_NAME + diff --git a/gitlabreleaseuploader.py b/gitlabreleaseuploader.py index 1cc56ca..bf39062 100755 --- a/gitlabreleaseuploader.py +++ b/gitlabreleaseuploader.py @@ -74,7 +74,8 @@ if (releaseInfoFilename): if 'releaseTagTarget' in releaseInfo: releaseTagTarget = releaseInfo['releaseTagTarget'] if 'createReleaseTag' in releaseInfo: - createReleaseTag = (releaseInfo['createReleaseTag'] in ('true', 'True')) + createReleaseTag = (releaseInfo['createReleaseTag'] in + ('true', 'True')) if 'description' in releaseInfo: releaseDescription = releaseInfo['description'] @@ -109,14 +110,10 @@ uploadResultJson = json.loads(uploadResult.text) # --- create release tag if createReleaseTag: - createReleaseTagUrl = "%s/api/v4//projects/%s/repository/tags" % (instanceUrl, projectId) - headers = {"PRIVATE-TOKEN": privateToken, "Content-Type": "application/json"} - - # id (required) - The ID or URL-encoded path of the project owned by the authenticated user - # tag_name (required) - The name of a tag - # ref (required) - Create tag using commit SHA, another tag name, or branch name. - # message (optional) - Creates annotated tag. - # release_description (optional) - Add release notes to the git tag and store it in the GitLab database. + createReleaseTagUrl = + "%s/api/v4//projects/%s/repository/tags" % (instanceUrl, projectId) + headers = {"PRIVATE-TOKEN": privateToken, + "Content-Type": "application/json"} payloadCreateReleaseTag = { "tag_name": releaseTag, @@ -125,8 +122,9 @@ if createReleaseTag: "message": "Tag for release %s" % releaseName } - createReleaseTagResult = requests.post(createReleaseTagUrl, headers=headers, - data=json.dumps(payloadCreateReleaseTag)) + createReleaseTagResult = + requests.post(createReleaseTagUrl, headers=headers, + data=json.dumps(payloadCreateReleaseTag)) if createReleaseTagResult.status_code != 201: print(createReleaseTagResult) diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..9b0eda7 --- /dev/null +++ b/readme.md @@ -0,0 +1,12 @@ +Release Uploader for Gitlab +=========================== + +Creating releases on Gitlab seems to work only via the REST API. + +This Python script handles the upload of a release file, the creation of +the required release tag in the repository and the creation of the actual +release referring to both the tag and the file. + +It supports commandline options and an input file, adjusted to be used in +Gitlab CI scripts. +