一番下にビルドしたバイナリの配布サイトを記載しています。
手っ取り早く使いたい方は、そちらをどうぞ
社内でビジネス向けチャットを導入したいと考え、Mattermostを動かしてみることにしました。
個人的な要件的には、次のような感じ
- FreeBSDで動くこと
- KeycloakでSSOが出来ること
- これはそのうち別記事で書きます。
RocketChatも試したけど、meteorがそもそもFreeBSDで動かないようなので、諦めました。
ちなみに、Mattermost 4系はFreeBSDのpkgにありましたが、どうせ使うなら新しいものを。
FreeBSDで動くようにコンパイルする
環境の準備
- OS
- FreeBSD 11.2R(amd64)
Git/Go/gmake/zipをpkgから導入します。
# pkg install git go gmake zip
Mattermostのビルド
本来は、Webappもgitから落とすのが良いのですが、FreeBSDだとnpmの関係でWebappのビルドに失敗するため、
配布されているパッケージからWebapp部分だけ抜き出します。
パッチはFreeBSD向けのバイナリを作るためのパッチです。
$ mkdir -p ~/go/src/github.com/mattermost
$ cd ~/go/src/github.com/mattermost
$ git clone https://github.com/mattermost/mattermost-server.git
$ cd mattermost-server
$ git checkout remotes/origin/release-5.1
$ fetch https://github.com/tatsuyaueda/mattermost-server/commit/bf98b63c875467e93225c4e5d93417d2db217031.patch
$ patch < bf98b63c875467e93225c4e5d93417d2db217031.patch
$ export BUILD_NUMBER=5.1.0-unofficial
$ gmake build
$ gmake config-reset
$ mkdir -p ~/go/src/github.com/mattermost/mattermost-webapp/
$ mkdir -p ~/temp
$ cd ~/temp
$ fetch https://releases.mattermost.com/5.1.0/mattermost-team-5.1.0-linux-amd64.tar.gz
$ tar xvzf mattermost-team-5.1.0-linux-amd64.tar.gz
$ mkdir -p ~/go/src/github.com/mattermost/mattermost-webapp/dist/
$ cp -Rp ./mattermost/client/* ~/go/src/github.com/mattermost/mattermost-webapp/dist/
$ cd ~/go/src/github.com/mattermost/mattermost-server
$ gmake package
ここまでの操作でバイナリが生成されます。
$ ls ~/go/src/github.com/mattermost/mattermost-server/dist
mattermost mattermost-team-linux-amd64.tar.gz mattermost-team-windows-amd64.zip
mattermost-team-freebsd-amd64.tar.gz mattermost-team-osx-amd64.tar.gz
こんな面倒なことをしなくても、、AWS CodeBuildでビルドする
上記の方法で、とりあえずFreeBSDで動くMattermostがビルドできますが、Mattermostのリリースは
月に1回行われており、それに追従にするにはちょっと面倒なので、AWS CodeBuildを使って、楽をします。
ビルドにUbuntuを利用しているため、Webapp部分もちゃんとビルド出来ます。
ソースコードのリポジトリはFreeBSD向けのバイナリをビルドするパッチを含んだリポジトリを、
本家からforkして作ったため、こちらを使ってください。
-
https://github.com/tatsuyaueda/mattermost-server
- ブランチ:release-5.1-unofficial
version: 0.2
env:
variables:
SRC_DIR_SERVER: src/github.com/mattermost/mattermost-server
SRC_DIR_WEBAPP: src/github.com/mattermost/mattermost-webapp
BASE_VERSION: v5.1.0
phases:
install:
commands:
- apt-get update
- apt-get install -y build-essential npm golang zip libpng-dev git rename
- npm install npm@latest -g
- export BUILD_NUMBER=${BASE_VERSION}-unofficial && echo ${BUILD_NUMBER}
- export GOPATH=${HOME}/go && echo ${GOPATH}
- export PATH=/usr/local/go/bin:${GOPATH}/bin:${PATH} && echo ${PATH}
- type go && go version
pre_build:
commands:
- mkdir -p ${GOPATH}/${SRC_DIR_SERVER} && cd ${GOPATH}/${SRC_DIR_SERVER}
- mv ${CODEBUILD_SRC_DIR}/* ${CODEBUILD_SRC_DIR}/.??* .
- mkdir -p ${GOPATH}/${SRC_DIR_WEBAPP} && cd ${GOPATH}/${SRC_DIR_WEBAPP}/..
- git clone https://github.com/mattermost/mattermost-webapp.git
- cd ${GOPATH}/${SRC_DIR_WEBAPP}
- git checkout refs/tags/${BASE_VERSION}
build:
commands:
- cd ${GOPATH}/${SRC_DIR_SERVER}
- echo Build started on `date`
- echo Compiling the Go code...
- make build
- make build-client
- make config-reset
- make package
post_build:
commands:
- rename 's/mattermost-team-(.+)/mattermost-team-$ENV{BUILD_NUMBER}-$1/' dist/*
- ls ./dist/
- echo Build completed on `date`
artifacts:
files:
- 'dist/*'
base-directory: ${GOPATH}/${SRC_DIR_SERVER}
discard-paths: yes
ビルドしたバイナリを配布しています
ただFreeBSDで使いたいという方は、手っ取り早くAWS CodeBuildでビルドしたバイナリを、
次のURLで配布しているため。こちらをご利用ください。
配布ページにも記載していますが、本バイナリは at your own risk を条件にご利用ください。