diff --git a/.gitlab/releaser/releaselinks.py b/.gitlab/releaser/releaselinks.py new file mode 100644 index 0000000000000000000000000000000000000000..a161a4ac98db1cdc08867e40e96e3f6bdf67d120 --- /dev/null +++ b/.gitlab/releaser/releaselinks.py @@ -0,0 +1,28 @@ +import json +import os +import urllib.request + +from projectapi import ProjectApi + +class ReleaseLinks(ProjectApi): + ''' + Release links API. + ''' + def __init__(self): + ProjectApi.__init__(self, 'releases/{}/assets/links'.format(os.environ['CI_COMMIT_TAG'])) + + def create_artifact(self, artifact): + ''' + Create the link for the given artifact. + :param artifact: The artifact data. + :type artifact: dict + ''' + send_data = { + 'name': artifact['name'], + 'filepath': 'binaries/{}'.format(artifact['name']), + 'url': artifact['url'] + } + send_data_serialized = json.dumps(send_data).encode('utf-8') + request = self.build_request(data=send_data_serialized, method='POST') + request.add_header('Content-Type', 'application/json') + urllib.request.urlopen(request) diff --git a/.gitlab/releaser/releaser.py b/.gitlab/releaser/releaser.py index dca04456186c0c187cdb899c67ee6f8dd58c5429..79f7bfd7c24a7325ff0723e3fcaa6f2447f58306 100644 --- a/.gitlab/releaser/releaser.py +++ b/.gitlab/releaser/releaser.py @@ -6,6 +6,7 @@ import os from binartifact import BinArtifact from job import Job from placeholder import PlaceHolder +from releaselinks import ReleaseLinks from releasenote import ReleaseNote from releasewikipage import ReleaseWikiPage from sourceartifact import SourceArtifact @@ -45,12 +46,18 @@ class Releaser: ''' Main job to publish a pre-release. ''' + releaseLinks = ReleaseLinks() releaseNote = ReleaseNote() current_message = releaseNote.get_message() artifacts_list = [] + binArtifacts = self._get_bin_artifacts() + + # Publish binaries as links + for binArtifact in binArtifacts: + releaseLinks.create_artifact(binArtifact.to_dict()) # Get releases - artifacts_list += self._get_bin_artifacts() + artifacts_list += binArtifacts artifacts_list.sort() artifacts_list += list(map(lambda e: SourceArtifact(e), self.source_ext))