diff --git a/CHANGELOG.md b/CHANGELOG.md index 9953c8a..90f4357 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## v1.1.0 + +* Use of `python-gitlab` library +* New action `epic.create` + ## v1.0.1 * Small bug fixes regarding Python 3 support diff --git a/README.md b/README.md index 4b72898..5778d56 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,10 @@ verify_ssl: False ## Actions +### Epics + +* `epic.create` - Create new Epic + ### Projects * `project.info` - Returns project information @@ -24,4 +28,3 @@ verify_ssl: False * `pipeline.list` - List all pipelines in a project * `pipeline.trigger` - Create a new pipeline - diff --git a/actions/epic_create.py b/actions/epic_create.py new file mode 100644 index 0000000..183f24f --- /dev/null +++ b/actions/epic_create.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python + +from st2common.runners.base_action import Action +import gitlab + + +class GitlabEpicCreate(Action): + + # Retrieve config information + def __init__(self, config): + super(GitlabEpicCreate, self).__init__(config=config) + self.url = self.config.get('url') + self.token = self.config.get('token') + + def run(self, group_id, title, labels, description, start_date, due_date, token): + + # Use user token if given + token = token or self.token + + # Initiate GitLab instance + gl = gitlab.Gitlab(self.url, token) + + # Get the group with id == group_id + group = gl.groups.get(group_id) + + # If start/due date is given, tell gitlab it is fixed + due_date_is_fixed = True if due_date else False + start_date_is_fixed = True if start_date else False + + # Create new epic + epic = group.epics.create({'title': title, 'description': description, 'labels': labels, 'start_date_fixed': start_date, 'start_date_is_fixed': start_date_is_fixed, 'due_date_fixed': due_date, 'due_date_is_fixed': due_date_is_fixed}) + return (True, epic) diff --git a/actions/epic_create.yaml b/actions/epic_create.yaml new file mode 100644 index 0000000..01b893f --- /dev/null +++ b/actions/epic_create.yaml @@ -0,0 +1,40 @@ +--- + +name: epic.create +description: "Create new Epic" + +runner_type: python-script +entry_point: epic_create.py + +# Taken from https://docs.gitlab.com/ee/api/epics.html#new-epic +parameters: + group_id: + description: "The ID of the group in which to create the epic" + type: integer + default: 117 + required: true + position: 0 + title: + description: "The title of the epic" + type: string + required: true + position: 1 + labels: + description: "The comma-separated list of labels" + type: string + position: 2 + description: + description: "The description of the epic. Limited to 1,048,576 characters." + type: string + position: 3 + start_date: + description: "The fixed start date of an epic" + type: string + position: 4 + due_date: + description: "The fixed due date of an epic" + type: string + position: 5 + token: + description: "Gitlab token" + type: string diff --git a/actions/issue_info.py b/actions/issue_info.py index 7f386b4..480c055 100755 --- a/actions/issue_info.py +++ b/actions/issue_info.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -from lib.gitlab import GitlabIssuesAPI +from lib.gitlabLib import GitlabIssuesAPI class GitlabIssue(GitlabIssuesAPI): diff --git a/actions/lib/gitlab.py b/actions/lib/gitlabLib.py similarity index 100% rename from actions/lib/gitlab.py rename to actions/lib/gitlabLib.py diff --git a/actions/pipeline_list.py b/actions/pipeline_list.py index b44939c..67d8c32 100644 --- a/actions/pipeline_list.py +++ b/actions/pipeline_list.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -from lib.gitlab import GitlabPipelineAPI +from lib.gitlabLib import GitlabPipelineAPI class GitlabPipeline(GitlabPipelineAPI): diff --git a/actions/pipeline_trigger.py b/actions/pipeline_trigger.py index decae33..a72e7ab 100644 --- a/actions/pipeline_trigger.py +++ b/actions/pipeline_trigger.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -from lib.gitlab import GitlabPipelineAPI +from lib.gitlabLib import GitlabPipelineAPI class GitlabPipelineTrigger(GitlabPipelineAPI): diff --git a/actions/project_info.py b/actions/project_info.py index 53f1cff..ae74d34 100644 --- a/actions/project_info.py +++ b/actions/project_info.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -from lib.gitlab import GitlabProjectsAPI +from lib.gitlabLib import GitlabProjectsAPI class GitlabProject(GitlabProjectsAPI): diff --git a/pack.yaml b/pack.yaml index 324c372..96f7284 100644 --- a/pack.yaml +++ b/pack.yaml @@ -3,7 +3,7 @@ name: gitlab description: GitLab Rest API keywords: - gitlab -version: 1.0.1 +version: 1.1.0 author: Daniel Chamot email: daniel@nullkarma.com python_versions: diff --git a/requirements.txt b/requirements.txt index f229360..720b544 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ requests +python-gitlab