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の連携について、終わります。他にも様々なシステムと連携が可能ですので、試してみてください。