6 Commits
v1.2 ... v1.5

Author SHA1 Message Date
af6b41a0ae fix ci script 2019-05-30 14:59:02 +02:00
26a8759919 some fixes 2019-05-30 14:43:07 +02:00
62c3f0e00f adjust info file 2019-05-30 14:36:50 +02:00
dff4090678 add ci script 2019-05-30 14:35:35 +02:00
0c8e75e82e interpreter and x flag 2019-05-30 14:13:11 +02:00
715c984e40 disable forgotten debug output 2019-05-30 13:07:52 +02:00
4 changed files with 54 additions and 15 deletions

28
.gitlab-ci.yml Normal file
View File

@ -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 --max-line-length=120 $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

21
gitlabreleaseuploader.py Normal file → Executable file
View File

@ -1,3 +1,5 @@
#!/usr/bin/python
import requests
import json
import argparse
@ -46,7 +48,6 @@ parser.add_argument('--verbose', '-v',
action='store_true',
default=False)
args = parser.parse_args()
print(args)
privateToken = args.privateToken
projectId = args.projectId
@ -73,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']
@ -108,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,
@ -124,7 +122,8 @@ if createReleaseTag:
"message": "Tag for release %s" % releaseName
}
createReleaseTagResult = requests.post(createReleaseTagUrl, headers=headers,
createReleaseTagResult = requests.post(createReleaseTagUrl,
headers=headers,
data=json.dumps(payloadCreateReleaseTag))
if createReleaseTagResult.status_code != 201:

View File

@ -1,7 +1,7 @@
{
"releaseTag": "v1.2",
"releaseTag": "v1.5",
"createReleaseTag": "true",
"releaseName": "Third release of the uploader",
"description": "Verbose switch integrated to limit output"
"releaseName": "Sixth release of the uploader",
"description": "Now with CI script and automatic release upload (he, eat your own dogfood)"
}

12
readme.md Normal file
View File

@ -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.