Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

Gateway to notify Worksection tasks about events from Grafana, Gitlab (e.g commits)

License

Notifications You must be signed in to change notification settings

dgroup/g2w

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

102 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License: MIT Versions PyPI version Downloads Commit activity Hits-of-Code

CI 0pdd Dependency Status Known Vulnerabilities

Maintainability Rating Codebeat badge Codacy Badge Codecov

What is Worksection?

Worksection is a simple, lightweight task tracking system that provides:

  • Project and task management, planning and controlling, team organization
  • Flexible interface, recurring processes, time-tracking
  • Privacy settings, client companies, communication

Check it out.

Worksection task id in Git commit messages

Use commit-msg file to force your developers to have worksection task id during commits. Just copy this file to your git repo as

cp commit-msg <your-git-repo>/.git/hook/commit-msg   # on Git server directly (server-side commit)

Since this moment all commit messages should have the following format #WS-0000: The commit message, where 0000 is worksection task id.

Open API docs

Run it and all endpoints details will be available here: http://localhost:8080/docs

> python g2w
...                                                                                                                                                
INFO:     Started server process [86248]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)

Push notifications

Please note, that GitLab commit messages must have the following format: #WS-0000: The commit message, where 0000 is worksection task id.

  1. Deploy locally g2w
    version: "3.9"
    services:
      g2ws:
        image: dgroup/g2w:0.2.0
        container_name: g2w
        environment:
          # Mandatory environment variables (docker, podman, etc.)
          WS_URL_ALL_USERS: "https://xxx.worksection.com/xxxx"    # https://worksection.com/faq/api-user.html#q1572
          WS_URL_POST_COMMENT: "https://xxx.worksection.com/xxxx" # https://worksection.com/faq/api-comments.html#q1575
          WS_URL_POST_TASK: "https://xxx.worksection.com/xxxx"    # https://worksection.com/faq/api-task.html#q1577
          WS_ADMIN_EMAIL: "[email protected]"         # plain worksection user email
          WS_ADMIN_USER_ID: "370080"                              # plain worksection user id
          WS_PRJ_223728_POST_TASK_HASH: "23e1sdfj2323"            # HASH generated for new task action for a particular project
          WS_PRJ_223728_POST_COMMENT_HASH: "2312jsafajsdf"        # HASH generated for new comment action for a particular project
        build:
          dockerfile: Containerfile
          context: .
        ports:
          - "8080:8080"
        restart: always
  2. Configure webhook with Push events in Gitlab:
    1. Open project > Settings > Webhook
    2. Specify URL http://yourserverwith-g2w:8080/gitlab/push/223728, where 223728 is your worksection project id
    3. Ensure that Push events option is selected
    4. Press [Add webhook]
  3. Configure reference to Worksection tasks from commits in Gitlab:
    1. Open project > Settings > Integrations > Custom issue tracker
    2. Set Project URL like https://xxx.worksection.com/project/223728/, where 223728 is your worksection project id
    3. Set Issue URL like https://xxx.worksection.com/project/223728/:id
    4. Set New issue URL like https://xxx.worksection.com/project/223728/new/
    5. Press [Save changes]
  4. Push commit(s) with following commit message format #WS-0000: The commit message format (0000 is worksection task id) to your Gitlab project.

Simulate push Gitlab event

223728 - worksection project id (read more):

curl --request POST \
  --url http://127.0.0.1:8080/gitlab/push/223728 \
  --header 'Content-Type: application/json' \
  --data '{
  "object_kind": "push",
  "event_name": "push",
  "before": "95790bf891e76fee5e1747ab589903a6a1f80f22",
  "after": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
  "ref": "refs/heads/master",
  "checkout_sha": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
  "user_id": 4,
  "user_name": "John Smith",
  "user_username": "jsmith",
  "user_email": "[email protected]",
  "user_avatar": "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",
  "project_id": 15,
  "project":{
    "id": 15,
    "name":"Diaspora",
    "description":"",
    "web_url":"http://example.com/mike/diaspora",
    "avatar_url":null,
    "git_ssh_url":"[email protected]:mike/diaspora.git",
    "git_http_url":"https://example.com/mike/diaspora.git",
    "namespace":"Mike",
    "visibility_level":0,
    "path_with_namespace":"mike/diaspora",
    "default_branch":"master",
    "homepage":"http://example.com/mike/diaspora",
    "url":"[email protected]:mike/diaspora.git",
    "ssh_url":"[email protected]:mike/diaspora.git",
    "http_url":"https://example.com/mike/diaspora.git"
  },
  "repository":{
    "name": "Diaspora",
    "url": "[email protected]:mike/diaspora.git",
    "description": "",
    "homepage": "http://example.com/mike/diaspora",
    "git_http_url":"https://example.com/mike/diaspora.git",
    "git_ssh_url":"[email protected]:mike/diaspora.git",
    "visibility_level":0
  },
  "commits": [
    {
      "id": "b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327",
      "message": "Update Catalan translation to e38cb41.\n\nSee https://gitlab.com/gitlab-org/gitlab for more information",
      "title": "Update Catalan translation to e38cb41.",
      "timestamp": "2011-12-12T14:27:31+02:00",
      "url": "http://example.com/mike/diaspora/commit/b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327",
      "author": {
        "name": "Jordi Mallach",
        "email": "[email protected]"
      },
      "added": ["CHANGELOG"],
      "modified": ["app/controller/application.rb"],
      "removed": []
    },
    {
      "id": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
      "message": "fixed readme",
      "title": "fixed readme",
      "timestamp": "2012-01-03T23:36:29+02:00",
      "url": "http://example.com/mike/diaspora/commit/da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
      "author": {
        "name": "GitLab dev user",
        "email": "gitlabdev@dv6700.(none)"
      },
      "added": ["CHANGELOG"],
      "modified": ["app/controller/application.rb"],
      "removed": []
    }
  ],
  "total_commits_count": 4
}'

Build

# Using *.sh file on Linux, Unix, OSX
> ./build.sh

# Using make
make virtualenv install test

Install it from PyPI

pip install g2w

Materials & Links

About

Gateway to notify Worksection tasks about events from Grafana, Gitlab (e.g commits)

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 5