mattermost-plugin-apps
Proof Of Concept - Mattermost Apps
This plugin is being developed to test some concepts of creating Apps, which do not rely on a Go executable being installed on the Mattermost server/cluster to extend functionality. The Apps will not be able to use Go RPC to communicate with the Mattermost Server, only through the "App Plugin" which acts as a sort of proxy to the server's activity.
Apps will generally be communicating with our REST API and authenticating via OAuth.
This is a precursor to our "Mattermost Apps" and "Mattermost Apps Marketplace" we are currently researching.
Getting Started
Join the "Integrations and Apps" channel to provide thoughts and feedback.
Running the tests
mattermost-plugin-apps has two types of tests: unit tests and end to end tests.
Unit tests
To run the unit tests, you just need to execute:
make testEnd to end tests
To run the end to end test suite, you need to have the Mattermost server project downloaded and configured in your system. Check the Developer Setup guide on how to configure a local server instance. The tests will search for a mattermost-server folder in the same directory where the mattermost-plugin-apps is.
With the mattermost-server folder present, the only thing that needs to be done before running the tests themselves is to start the Mattermost docker development environment. The environment only needs to be started once, and then the tests can run as many times as needed. To start the docker environment, change to the mattermost-server project directory and run:
make start-dockerChange your directory back to mattermost-plugin-apps and run the end to end test suite with:
make test-e2eInstalling AWS Apps
To install an AWS App you need to set APPS_INVOKE_AWS_ACCESS_KEY and APPS_INVOKE_AWS_SECRET_KEY. These credentials should only allow the invocation of lambda function, not the creation.
Provisioning
To provision an App to AWS you first need to store your AWS access key in an environment variable called APPS_PROVISION_AWS_ACCESS_KEY and the secret key in APPS_PROVISION_AWS_SECRET_KEY.
Only once you need to run go run ./cmd/appsctl/ provision bucket to create the s3 bucket.
To provision an app run go run ./cmd/appsctl/ provision app /PATH/TO/YOUR/APP/BUNDLE. Use --update to update the lambda functions if they already exist. This option should not be used in production.
Contacts
Dev: Lev Brouk (@lev.brouk) PM: Aaron Rothschild (@aaron.rothschild)