Skip to main content

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

Project description

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: "xxx.worksection.bot@gmail.com"         # 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": "john@example.com",
  "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":"git@example.com: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":"git@example.com:mike/diaspora.git",
    "ssh_url":"git@example.com:mike/diaspora.git",
    "http_url":"https://example.com/mike/diaspora.git"
  },
  "repository":{
    "name": "Diaspora",
    "url": "git@example.com:mike/diaspora.git",
    "description": "",
    "homepage": "http://example.com/mike/diaspora",
    "git_http_url":"https://example.com/mike/diaspora.git",
    "git_ssh_url":"git@example.com: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": "jordi@softcatala.org"
      },
      "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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

g2w-0.3.0.tar.gz (24.7 kB view hashes)

Uploaded Source

Built Distribution

g2w-0.3.0-py3-none-any.whl (11.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page