Dockerを使ってSonarQubeを構築したので、備忘録としてやり方を残しておきます。
大まかなやり方
SonarQubeは自分で構築しようと思うと、DBを入れたり、Javaを入れたりと、何かと手順を踏まなければなりません。
Dockerが使えるのであれば、Dockerを使ってSonarQubeを入れるのが楽です。
大まかなやり方は、下記の通り。
1.SonarQubeの公式イメージからコンテナを作成。
2.ブラウザでSonarQubeにアクセスしてProjectを作る。
3.SonarQubeコンテナにログインしてSonar-scannerをダウンロード、配置する。
4.Sonar-scannerを使ってコード解析する。
手順3は、Sonar-scannerのDockerイメージからコンテナをもう1個作るのが、公式で案内されている手順です。
しかし私は、SonarQubeを動かすのにコンテナ2つを稼働させるのが嫌だったので、このような手順で構築しました。
SonarQubeのコンテナを作る
SonarQubeは公式イメージが公開されています。
https://hub.docker.com/_/sonarqube
コンテナを作るだけで直ぐにSonarQubeの画面が見れる優れモノです!
(ただ画面が見れるだけで、まだ解析はできません。)
docker runして、早速コンテナを作りましょう。
$ docker run -itd --name sonar2 -p 9001:9000 sonarqube:lts
私の場合、既にsonarqubeのコンテナが有るので、コンテナ名をsonar2にしています。
SonarQubeのポートは9000なので、ポートフォワーディング(-pオプション)で9000ポートに繋ぎましょう。
私の場合は、9001ポートで待ち受けて、9000ポートに繋いでいます。
SonarQubeにログイン
コンテナを作ったら早速ブラウザでアクセスします。
SonarQubeの画面が表示されます。
http://[サーバのホストorIPアドレス]:9001
Log inボタンを押して、SonarQubeにログインします。
初期アカウントは、ユーザ:admin、パスワード:admin
です。
プロジェクトを作る
早速プロジェクトを作りましょう。
Create new projectボタンを押します。
Project Key(プロジェクトの名前)を入力します。
Display nameは自動で入力されます。
Set Upボタンを押して次に進みます。
Sonar-scanner(後で入れます)がSonarQubeにアクセスするためのトークンを作ります。
お好みのユーザ名を入れて、Generateボタンを押します。
Sonar-scannerのインストール
ダウンロードリンクの取得
トークンを作ると、解析する言語と環境を聞かれます。
JavaはSonar-scanner無しでも解析できるっぽいですが、C# or VB.NETと、OtherはSonar-scannerが必要です。
私はPHPを解析します。
※C# or VB.NETは手順が違うようなので注意。以下、Otherを選択した場合の手順となります。
Downloadボタンを押すと、公式のSonar-scannerのDocumentに飛びます。
一応リンク貼っときます。
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
DocumentのLinux64-bitのリンクをコピーしておきます。
このリンクが、Sonar-scannerのダウンロードリンクです。
ダウンロード
SonarQubeのコンテナで、Sonar-scannerをダウンロードします。
sonar2コンテナにログインしましょう。
ユーザ指定(-u)しないと、sudo権限がないsonarユーザになってしまいますので、-uオプションは忘れずに。
$ docker exec -it -u root sonar2 bash
コンテナにはwget
が無ければunzip
も無いので、必要なパッケージはあらかじめインストールしておくと良いです。
最低限必要なのは、wget
とunzip
です。
私はGithubからソースコードを落としたいのでgit
もインストールします。
PATHを通すのに.bashrc
を編集したいので、vim
もインストールしておきます。
# apt update -y
# apt upgrade -y
# apt install wget unzip vim git -y
インストールが終わったら、Sonar-scannerのzipファイルをwget
でダウンロードします。
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.3.0.2102-linux.zip
ダウンロードできたら、unzip
して展開します。
# unzip sonar-scanner-cli-4.3.0.2102-linux.zip
展開すると、sonar-scannerのディレクトリが出来ます。
このディレクトリ配下にbinがあり、その中にsonar-scanner
コマンドが入っています。
sonar-scanner
コマンドが使えるように.bashrc
にパスの設定をします。
# vim ~/.bashrc
設定し終えたら、.bashrc
を再読み込みします。
# source ~/.bashrc
コード解析を行う
sonar2コンテナに、解析したいソースコードを置いておきましょう。
私は、/opt/followcheck_web 配下のソースコードを解析します。
解析したいソースコードのディレクトリに入ります。
# cd /opt/followcheck_web/
続いて、Sonar-scannerコマンドを打ちます。
難しい事はありません。SonarQubeの画面に表示されていたコマンドをコピペするだけです。
コマンドを叩いて、少し待ちます。
ソースコードの量によっては時間がかかると思います。
EXEXUTION SUCCESS
が表示されたら、解析完了です。
解析結果を見る
SonarQubeに戻りましょう。
自動的に画面がリロードされて、sonar-scanner
で解析した結果が表示されます。
cronとかでjobを作って、定期的に解析させておくと良いでしょうね。
もしくは、Githubを使っているのなら、webhookを使って自動で解析させるとか。
おまけ:SonarQubeを日本語化する
Japanese Packプラグインをインストールすると、画面を日本語化出来ます。
ただ、最新のバージョンに対応していないのか、中途半端にしか日本語化されません。
個人的には、日本語と英語が入り混じって逆に見づらくなるので、別に日本語化しなくても良いかなって思います。