Gitea + Slack 連携 (オンプレミスの開発管理サーバーとパブリッククラウド連携)
Ubuntu 20.04 の環境を使って確認しています。Server版とGUIありのDesktop版、どちらでも構いません。Ubuntu専用の物理マシン、もしくは仮想マシンを用意してください。
目次
概要
オンプレミス環境として、ここではパソコン上の仮想マシン内にGithubクローンの「Gitea」 を構築し、Giteaで何らかのアクションがあったことをトリガーとして、Slackに通知を行う構成を構築します。
環境準備
仮想マシンの用意
既に作成済みの場合は、飛ばしてください。Ubuntu 20.04の仮想マシンを用意します。お使いの環境に合わせて用意してください。
Docker(Docker Engine)のインストール
Dockerをインストール済みの場合はとばしてください。
DockerをインストールするサーバーにSSH接続を行い、以下のコマンドを実行する。Macの場合は、ターミナルアプリでSSH接続を行う。Windowsの場合は、TeraTermがSSH接続によく使われる。
下記は、Ubuntu 20.04 を使用した場合。6行目~8行目はまとめて1つのコマンドです。
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudoなしでDockerを実行できるにするために、次のコマンドを実行する。
getent group docker
sudo gpasswd -a $USER docker
一度ログアウト
exit
再度SSH接続を行います。
Docker Compose のインストール
既にインストール済みの場合は、とばしてください。
インストール
実行結果 << 2022年6月時点
docker-compose.yml 作成
ここでは、Giteaのオンラインドキュメントで公開されているものを使用します。
記述したもの
nanoを使って作成しているので、Ctrl + x キーを押し、その後 yキーを押して保存します。
Docker Compose の起動
起動にあたり、docker-compose.yml が、コマンドを実行するディレクトリに存在するか確認しましょう。
実行結果
次のコマンドを実行します。
Giteaの初期設定
仮想マシンもしくは、仮想マシンを動かしているパソコンのWebブラウザから、http://仮想マシンのホスト名.local:3000 にアクセスします。例 http://ubuntu1arm.local:3000
Giteaの初期設定画面が表示されます。縦に長いので、3つの画面ショットに分割しています。
データベースのタイプは、docker-compose.yml で指定がなければ、SQLite3 となります。「サイトタイトル」は好きなものにすることができます。
「サーバードメイン」は、仮想マシンのホスト名.local ( 例 ubuntu1arm.local )に、「GiteaのベースURL」はhttp://仮想マシンのホスト名.local:3000 ( 例 http://ubuntu1arm.local:3000 )に書き換えます。
「Giteaをインストール」をクリックします。ここで管理者アカウントを作成しなくても、最初のユーザーを作成すると、それが管理者アカウントになります。
Giteaのユーザー作成
「アカウントが必要ですか?今すぐ登録しましょう。」をクリックします。Giteaでは最初に登録したユーザーが管理者となります。
ユーザー名に、admin は使えません。ここでは次のように設定してします。入力後、「アカウントを登録」をクリックします。
ユーザー名 : adminuser
メールアドレス : adminuser@仮想マシンのホスト名.local ( 例 adminuser@ubuntu1arm.local )
パスワード : zxcvfr45
「アカウントは正常に作成されました。」と表示されれば、ユーザーの作成は終わりです。Giteaのトップページが表示されます。
Slackのアプリ作成
Slackは無料プランで登録し、何らかのワークスペースを作成済みとします。また、余力があれば、Slackのワークスペース内にGiteaと連携するためのチャンネルを作っておくと良いでしょう。
Slackにログインした状態で、https://api.slack.com/apps にアクセスします。「Create New App」をクリックします。
「From Scratch」をクリックします。
「App Name」を入力するとともに、「Pick a workspace to develop your app in:」で、Slackアプリを動かす先となるワークスペースを選びます。その後、「Create App」をクリックします。
Slackアプリが作成され、「Basic Information」が表示されます。
Add features and functionality >> Incoming Webhooks をクリックします。
Activate Incoming Webhooksのトグルボタンで、「OFF」をクリックし、「ON」に切り替えます。
「Add New Webhook to Workspace」をクリックします。
Giteaからの通知を届けたいチャンネルを選び、「許可する」をクリックします。
「Webhook URL」に、Slackで受信するためのURLが表示されますので、「Copy」をクリックして、メモ帳などに貼り付けておきます。
GiteaのWebhookにSlack連携を設定
Giteaの画面に戻ります。画面右上のログイン中のユーザー(Giteaの管理者)のアバターアイコンをクリックします。その後、「サイト管理」をクリックします。
「Webhook」のタブをクリックします。その後、「システムWebhook」の段の右端に表示されている「Webhookを追加」をクリックします。
「Slack」を選びます。
Slackのアプリ作成でコピーしておいたWebhook URLを、「ターゲットURL」に貼り付けます。また「チャンネル」は、Slackアプリ作成時に指定したチャンネルと同じものを入力します。ここでは、#general としています。Slackアプリ作成時に、#general 以外のチャンネルと紐づけたのであれば、そのチャンネルを記述しなければなりません。
「ユーザー名」は、Slackに表示される通知したものの名称で、ここでは「Gitea」とします。「トリガー」は「すべてのイベント」としました。後で変更することもできます。「Webhookを追加」をクリックします。
Webhookが追加されたことが表示されます。
画面左上の端、「イシュー」の左隣に設置されている緑色のカップのアイコン(Giteaのアイコン)をクリックします。
「+」をクリックしてリポジトリを作成します。
「新しいリポジトリ」画面が表示されます。この時点では、ユーザーが1人なので、「オーナー」は自動で選ばれます。もし既にユーザーを追加している場合、オーナーを選ぶことができます。
「リポジトリ名」を入力します。
リポジトリに適用するライセンスを選びます。一般的な公開レポジトリであれば、これで良いでしょう。「リポジトリを作成」をクリックします。
リポジトリが作成されます。
Slackのワークスペースを見に行きましょう。下図は例です。Webhookの対象としたご自分のSlackのワークスペースを見に行きましょう。リポジトリを作成したと通知が届いているはずです。
これで、GiteaとSlackの連携について、終わります。他にも様々なシステムと連携が可能ですので、試してみてください。