No Description

Girish M 4e15c8720c more useful message 5 months ago
.github b857359d78 no more of that 5 months ago
.idea 9958ccf662 removed workspace.xml 3 years ago
resource 4e15c8720c more useful message 5 months ago
test c81eadc207 1. Copyright years updated 2. Subscribe OpenProject doc 1 year ago
.dockerignore 81bf6021dc modified permissions and README description 3 years ago
.gitignore 94b5582e04 1. added link to OP integration mention 2. updated .gitignore 1 year ago
.npmrc e7d241edc9 npm publishing 1 year ago
CONTRIBUTING.md e1b4a6d002 removed spurious instruction 11 months ago
COPYING 81bf6021dc modified permissions and README description 3 years ago
Dockerfile c81eadc207 1. Copyright years updated 2. Subscribe OpenProject doc 1 year ago
Procfile 81bf6021dc modified permissions and README description 3 years ago
README.md 94860b4151 Update README.md 8 months ago
configure.sh c81eadc207 1. Copyright years updated 2. Subscribe OpenProject doc 1 year ago
docker-compose.yml c81eadc207 1. Copyright years updated 2. Subscribe OpenProject doc 1 year ago
index.js c81eadc207 1. Copyright years updated 2. Subscribe OpenProject doc 1 year ago
package-lock.json 2b2551f44e Bump axios from 0.21.4 to 1.6.0 6 months ago
package.json 2b2551f44e Bump axios from 0.21.4 to 1.6.0 6 months ago
wait_for_it.sh 395af5e371 fixing docker-compose 3 years ago

README.md

op-mattermost Node.js CI

OpenProject integration for Mattermost. Currently, supports following operations using a slash command -

  • Create time entry for a work package
  • Create work package for a project
  • Delete work package
  • View time logs
  • Delete time log
  • Subscribe to OpenProject notifications in Mattermost channel

Demo

Demo video recorded using Peek.

Dependencies

  • OpenProject community edition
  • Mattermost preview
  • docker
  • Node js and npm modules

Installing dependencies

  • Docker
  • OpenProject
    • Quick install
    • docker run -it -p 8080:80 -e SECRET_KEY_BASE=secret openproject/community:11 or
    • Recommended install
    • sudo mkdir -p /var/lib/openproject/{pgdata, static}
    • docker run -d -p 8080:80 --name openproject -e SECRET_KEY_BASE=secret -v /var/lib/openproject/pgdata:/var/openproject/pgdata -v /var/lib/openproject/static:/var/openproject/assets openproject/community:11
    • docker stop openproject
    • docker start openproject
    • For up to date info on OpenProject installation refer their official docs.
  • Mattermost
    • docker run --name mattermost-preview -d --publish 8065:8065 --add-host dockerhost:127.0.0.1 mattermost/mattermost-preview
  • Node js

Setup

  • Fork and git clone the repo using HTTPS
  • Install and launch all the dependencies as mentioned above and open the cloned directory in an editor or IDE of your choice
  • Run sh configure.sh to create .env using bash command line. Alternatively, create a .env file using a text editor with the following entries:
    • OP_URL=http://<your host or ip address>:8080/api/v3/ (needed for pointing to OpenProject installation)
    • INT_URL=http://<your host or ip address>:3000/ (needed for exposing the integration running on port 3000)
    • MM_URL=http://<your host or ip address>:8065/api/v4/ (needed for pointing to Mattermost installation)
    • MATTERMOST_SLASH_TOKEN=<use the mattermost slash command token for logtime> (needed for slash command validation)
    • MATTERMOST_BOT_TOKEN=<use the mattermost bot access token> (needed for validation for posting messages as bot)
    • OP_ACCESS_TOKEN=<openproject access token (a.k.a apikey) obtained from user account page>
  • In the project root directory do npm init to generate (or update existing) package.json file
  • Then run npm install to download and install the node modules from npm
  • Run op-mattermost in the console using npm start (usually launches on port 3000)
  • Create a custom Mattermost slash command /op as described here and provide localhost or IP address (with port 3000) as the request URL and method as POST
  • Create a bot account with System Admin access as described here
  • In OpenProject, create a custom field billable hours for all work packages in a project
  • Test the integration by trying /op in the message bar.
  • In case of error while invoking /op command:
    • Check the Developer console for errors
    • If the error is related AllowedUntrustedInternalConnections for the integration then
    • Go to System Console of Mattermost
    • Provide the integration URL in Allow untrusted internal connections to
    • Save it and retry.

Slash Command list

  • /op - Displays the general menu
  • /op lt - Log time for a work package
  • /op cwp - Create a work package for a project
  • /op tl - View time logs of the current user
  • /op dwp - Delete work package
  • /op dtl - Delete time log entry
  • /op sub - Subscribe to OpenProject notifications in Mattermost channel

Wiki

Development wiki is available here. It contains the workflows, file description and miscellaneous information necessary for development.

Plugin

A Mattermost plugin with limited features mentioned in this project is available here.

Mirror repositories

This project is also available on following repositories (as an alternative to GitHub) on:

Sponsors

This project was sponsored by OpenProject Foundation (OPF) and mentioned in OpenProject integrations.

COPYING

GPLv3 or later

Copyright (C) 2019 to present, Girish M

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.