📝

【Mattermost】Windows10でPluginを開発する

2023/05/17に公開

前提

  • 下記の記事の内容が完了しているとします。

https://zenn.dev/mshrynzw/articles/8d0d44e18222de

  • 関連リポジトリ:テンプレート

https://github.com/mattermost/mattermost-plugin-starter-template

  • 上記リポジトリ内のREADME.mdの内容だけではmakeできないので、本記事は自己流になります。

手順

事前準備(Git関連)

  1. Gitをインストールする。
sudo su
apt install -y git
git --version
#git --version
git version 2.25.1
  1. 関連リポジトリをクローンする。
sudo su
cd ~
git clone -b master https://github.com/mattermost/mattermost-plugin-starter-template.git

事前準備(設定関連)

  1. リポジトリ内に移動する。
sudo su
cd ~/mattermost-plugin-starter-template/
pwd
root@XXXXX:~/mattermost-plugin-starter-template# pwd
/root/mattermost-plugin-starter-template
  1. plugin.jsonを変更する。
vi plugin.json
plugin.json
{
-    "id": "com.example.my-plugin",
+    "id": "com.mattermost.plugin-starter-template",
-    "name": "My Plugin",
+    "name": "Plugin Starter Template",
-    "description": "A plugin to enhance Mattermost."
+    "description": "This plugin serves as a starting point for writing a Mattermost plugin."
}
  1. go.modを変更する。
vi go.mod
go.mod
-module github.com/example/my-plugin
+module github.com/mattermost/mattermost-plugin-starter-template

go 1.16
require (
  1. .golangci.ymlを変更する。
vi .golangci.yml
.golangci.yml
linters-settings:
  gofmt:
    simplify: true
  goimports:
-    local-prefixes: github.com/example/my-plugin
+    local-prefixes: github.com/mattermost/mattermost-starter-template

Plugin開発

  1. Server関連は、serverディレクトリ内での開発をする。(Go言語)
  2. Webapp関連は、webappディレクトリ内での開発をする。(React.js)

ビルド

  1. NPMではなく、Yarnを利用するために以下のコマンドを実行する。
sed -i".org" -e "s/npm/yarn/g" Makefile
sed -i".org" -e "s/NPM/YARN/g" Makefile
diff Makefile Makefile.org
sed -i".org" -e "s/NPM/YARN/g" build/setup.mk
sed -i".org" -e "s/npm/yarn/g" build/setup.mk
diff build/setup.mk build/setup.mk.org
  1. 動作確認としてデプロイする。
make deploy
root@XXXXX:/home/ubuntu/mattermost-plugin-starter-template-master# make deploy
mkdir -p server/dist;
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-linux-amd64;
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-linux-arm64;
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-darwin-amd64;
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-darwin-arm64;
cd server && env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 /usr/local/go/bin/go build   -trimpath -o dist/plugin-windows-amd64.exe;
cd webapp && /usr/bin/yarn run build;
yarn run v1.22.19
$ webpack --mode=production
asset main.js 24.8 KiB [compared for emit] [minimized] (name: main)
orphan modules 992 bytes [orphan] 2 modules
runtime modules 221 bytes 1 module
modules by path ./node_modules/core-js/internals/*.js 58 KiB
  ./node_modules/core-js/internals/export.js 2.61 KiB [built] [code generated]
  ./node_modules/core-js/internals/global.js 592 bytes [built] [code generated]
  ./node_modules/core-js/internals/function-call.js 206 bytes [built] [code generated]
  ./node_modules/core-js/internals/is-object.js 154 bytes [built] [code generated]
  + 97 modules
modules by path ./node_modules/core-js/modules/*.js 14.8 KiB
  ./node_modules/core-js/modules/es.promise.js 332 bytes [built] [code generated]
  ./node_modules/core-js/modules/es.promise.constructor.js 9.54 KiB [built] [code generated]
  ./node_modules/core-js/modules/es.promise.all.js 1.39 KiB [built] [code generated]
  ./node_modules/core-js/modules/es.promise.catch.js 1.14 KiB [built] [code generated]
  + 3 modules
./src/index.tsx + 2 modules 1.34 KiB [built] [code generated]
webpack 5.75.0 compiled successfully in 2328 ms
Done in 3.22s.
rm -rf dist/
mkdir -p dist/com.mattermost.plugin-starter-template
cp plugin.json dist/com.mattermost.plugin-starter-template/
cp -r assets dist/com.mattermost.plugin-starter-template/
cp -r public dist/com.mattermost.plugin-starter-template/
mkdir -p dist/com.mattermost.plugin-starter-template/server
cp -r server/dist dist/com.mattermost.plugin-starter-template/server/
mkdir -p dist/com.mattermost.plugin-starter-template/webapp
cp -r webapp/dist dist/com.mattermost.plugin-starter-template/webapp/
cd dist && tar -cvzf com.mattermost.plugin-starter-template-0.1.0.tar.gz com.mattermost.plugin-starter-template
com.mattermost.plugin-starter-template/
com.mattermost.plugin-starter-template/server/
com.mattermost.plugin-starter-template/server/dist/
com.mattermost.plugin-starter-template/server/dist/plugin-windows-amd64.exe
com.mattermost.plugin-starter-template/server/dist/plugin-darwin-amd64
com.mattermost.plugin-starter-template/server/dist/plugin-darwin-arm64
com.mattermost.plugin-starter-template/server/dist/plugin-linux-amd64
com.mattermost.plugin-starter-template/server/dist/plugin-linux-arm64
com.mattermost.plugin-starter-template/webapp/
com.mattermost.plugin-starter-template/webapp/dist/
com.mattermost.plugin-starter-template/webapp/dist/main.js
com.mattermost.plugin-starter-template/assets/
com.mattermost.plugin-starter-template/assets/.gitkeep
com.mattermost.plugin-starter-template/assets/starter-template-icon.svg
com.mattermost.plugin-starter-template/assets/.gitkeep:Zone.Identifier
com.mattermost.plugin-starter-template/assets/starter-template-icon.svg:Zone.Identifier
com.mattermost.plugin-starter-template/plugin.json
com.mattermost.plugin-starter-template/public/
com.mattermost.plugin-starter-template/public/hello.html
com.mattermost.plugin-starter-template/public/hello.html:Zone.Identifier
plugin built at: dist/com.mattermost.plugin-starter-template-0.1.0.tar.gz
./build/bin/pluginctl deploy com.mattermost.plugin-starter-template dist/com.mattermost.plugin-starter-template-0.1.0.tar.gz
2023/05/18 12:11:17 Authenticating as admin against http://localhost:8065.
2023/05/18 12:11:17 Uploading plugin via API.
2023/05/18 12:11:23 Enabling plugin.
root@DESKTOP-XXXXX:/home/ubuntu/mattermost-plugin-starter-template-master#
  1. プラグインがシステムコンソールで起動中になっているので、動作確認をする。
curl http://localhost:8065/plugins/com.mattermost.plugin-starter-template

  1. 本番環境のためにtar.gzファイルを作成するため、下記コマンドでを実行する。
make dist
  1. distディレクトリにtar.gzファイルがあるので、本番環境ではシステムコンソールからtar.gzファイルをアップロードし、さらに有効にする。
ls -la dist
root@XXXXX:/home/ubuntu/mattermost-plugin-starter-template-master# ls -la dist
total 55500
drwxr-xr-x  3 root   root       4096 May 18 12:17 .
drwxr-xr-x 11 ubuntu ubuntu     4096 May 18 12:17 ..
drwxr-xr-x  6 root   root       4096 May 18 12:17 com.mattermost.plugin-starter-template
-rw-r--r--  1 root   root   56817395 May 18 12:18 com.mattermost.plugin-starter-template-0.1.0.tar.gz

備考

関連記事

https://zenn.dev/mshrynzw/articles/8d0d44e18222de

Discussion