Skip to content

Commit

Permalink
Add action epic.create using gitlab-python library
Browse files Browse the repository at this point in the history
  • Loading branch information
Manon Delahaye committed Jan 26, 2024
1 parent 77b62e6 commit e6f59e7
Show file tree
Hide file tree
Showing 11 changed files with 87 additions and 6 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ verify_ssl: False
## Actions
### Epics
* `epic.create` - Create new Epic

### Projects

* `project.info` - Returns project information
Expand All @@ -24,4 +28,3 @@ verify_ssl: False

* `pipeline.list` - List all pipelines in a project
* `pipeline.trigger` - Create a new pipeline

32 changes: 32 additions & 0 deletions actions/epic_create.py
Original file line number Diff line number Diff line change
@@ -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)
40 changes: 40 additions & 0 deletions actions/epic_create.yaml
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion actions/issue_info.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env python

from lib.gitlab import GitlabIssuesAPI
from lib.gitlabLib import GitlabIssuesAPI


class GitlabIssue(GitlabIssuesAPI):
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion actions/pipeline_list.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env python

from lib.gitlab import GitlabPipelineAPI
from lib.gitlabLib import GitlabPipelineAPI


class GitlabPipeline(GitlabPipelineAPI):
Expand Down
2 changes: 1 addition & 1 deletion actions/pipeline_trigger.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env python

from lib.gitlab import GitlabPipelineAPI
from lib.gitlabLib import GitlabPipelineAPI


class GitlabPipelineTrigger(GitlabPipelineAPI):
Expand Down
2 changes: 1 addition & 1 deletion actions/project_info.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env python

from lib.gitlab import GitlabProjectsAPI
from lib.gitlabLib import GitlabProjectsAPI


class GitlabProject(GitlabProjectsAPI):
Expand Down
2 changes: 1 addition & 1 deletion pack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: gitlab
description: GitLab Rest API
keywords:
- gitlab
version: 1.0.1
version: 1.1.0
author: Daniel Chamot
email: [email protected]
python_versions:
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
requests
python-gitlab

0 comments on commit e6f59e7

Please sign in to comment.