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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file g2w-0.3.0.tar.gz.

File metadata

  • Download URL: g2w-0.3.0.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.5

File hashes

Hashes for g2w-0.3.0.tar.gz
Algorithm Hash digest
SHA256 07152622b36ed12b5178cede35d18195c85498699a2a65e6dae8f8281a861fec
MD5 85ad42551c8a422511a9c220b93e2643
BLAKE2b-256 4e214565400c725a4995b6245b685e213265eabaa89c8b15ec3b9ab61bf40ed8

See more details on using hashes here.

File details

Details for the file g2w-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: g2w-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.5

File hashes

Hashes for g2w-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 26775838b0e0e6bd88cf46e49c9b7c1a19c31addc414daebd0e5fc90635bfa01
MD5 7a227b654faa231c06d2bca3257f28d2
BLAKE2b-256 3850a5fef5e578c61889ab6d401eba83f59eebb0337e034fbc3ea7a57853ea40

See more details on using hashes here.

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