![見出し画像](https://assets.st-note.com/production/uploads/images/165332723/rectangle_large_type_2_66e33d948cde7412d72c86f9bd40a088.jpeg?width=1200)
自動コードレビュー環境の構築
システム開発部の白木です。
以前はシステム開発作業をメインで行っていましたが、東京支社在籍中にインフラ担当に任命され、気が付いたら社内ネットワークの管理も行うようになっていました。
開発をする場合はいろいろなソースコードを書くことになるのですが、書いたソースコードが一定の品質を保っているのか、潜在的な問題を抱えていたりしないか、人の目で確認(ソースコードレビュー)をすることがあるかと思います。
ソースコードレビュー自体はプロジェクト全体の品質を担保する上で必要な工程なのですが、レビューする人のスキルに左右される工程でもあります。この工程をお手軽に、かつ、一定のルールに基づいて実施できる自動コードレビューのツール(SonarQube)があります。
このツールを利用するための環境構築方法を複数回に分けて紹介します。
自動コードレビュー環境の構築(第一回)
今回の自動コードレビューツール:SonarQube
https://www.sonarsource.com/jp/products/sonarqube/
「SonarQube」は、次の2つで構成されます
・SonarQube Server … 結果をGUIで表示してくれるサーバ
・Sonar Scanner … レビューする対象のソースをスキャンするツール
SonarQube各Editionで取り扱える開発言語一覧
SonarQube 構築手順
[環境]
オンプレミスサーバ
OS:AlmaLinux 9.4
vCPU:2
MEM: 4 GB
ストレージ:40 GB
サーバーホストの要件と推奨事項
オンプレミスサーバ上でDocker基盤が稼働します。
[Docker環境]
Docker version 27.3.1
SonarQube:9.9(LTA)
→ ※日本語パックPlugin(Japanese Pack)が SonarQube 9.9(LTA)まで
対応していますが、それ以降のバージョンは不可の為このバージョンを利用しています。
PostgreSQL 15
→ ※SonarQubeの対応バージョンが PostgreSQL 15までの為このバージョンを利用しています。
OSへのインストール作業
OS標準環境を最新化
dnf update
SELinux の無効化
cp -a /etc/selinux/config /etc/selinux/config.org
sed -i -e 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
基本となるものをインストール
dnf install man-pages
dnf install cifs-utils traceroute bind-utils tree iptraf
dnf install fontconfig glibc-langpack-ja
dnf install google-noto-cjk-fonts-common
dockerリポジトリの有無確認
dnf repolist | grep docker
dockerリポジトリ追加とインストール
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo (1行)
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin (1行)
dockerサービス有効化
systemctl start docker.service
systemctl enable docker.service
systemctl enable containerd.service
起動確認
systemctl status docker
docker --version
docker compose version
現在の設定値確認
SonarQube が稼働できるシステムパラメーターであるかを確認します。
Linux システムへのインストール前の手順
sysctl vm.max_map_count (※推奨:524288 以上)
sysctl fs.file-max (※推奨:131072 以上)
ulimit -n (※推奨:131072 以上)
ulimit -u (※推奨:8192 以上)
「Elasticsearch」の稼働する条件に準拠するよう、ホストOSに設定します。
cat << EOF > /etc/sysctl.d/10-docker.conf
vm.max_map_count=524288
fs.file-max=131072
EOF
システムパラメーターの設定を反映
sysctl -p /etc/sysctl.d/10-docker.conf
Docker Compose 構成ファイルを生成
Docker Compose コマンドで使用するファイルを生成します。
mkdir /sonarqube
cat << _EOF_ > /sonarqube/compose.yaml
services:
sonarqube:
container_name: sonarqube
image: sonarqube:9.9-community
depends_on:
- postgresql
environment:
- TZ=Asia/Tokyo
- SONAR_WEB_CONTEXT=/sonarqube
- SONAR_JDBC_URL=jdbc:postgresql://postgresql:5432/sonar
- SONAR_JDBC_USERNAME=sonar
- SONAR_JDBC_PASSWORD=sonar
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
- sonarqube_data:/opt/sonarqube/data
ports:
- "51003:9000"
networks:
- sonarnet
restart: always
postgresql:
container_name: postgresql
image: postgres:15.8
environment:
- TZ=Asia/Tokyo
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data
networks:
- sonarnet
restart: always
networks:
sonarnet:
driver: bridge
volumes:
sonarqube_conf:
sonarqube_extensions:
sonarqube_logs:
sonarqube_data:
postgresql:
postgresql_data:
_EOF_
ホストOSの sonarqube 疎通ポート(51003/TCP)を設定
firewall-cmd --add-port=51003/tcp --permanent
firewall-cmd –reload
設定変更等の反映のため、ホストOSを再起動
reboot
docker compose コマンドを使用して、先の設定ファイル一式を起動
cd /sonarqube
docker compose up -d
Dockerファイルが Pull されてきて、ローカルで構築が自動で行われます。
Dockerコンテナへログインする場合は次のコマンドを使用する。(Dockerコンテナ内は、Debian 系環境となる)
docker exec -it sonarqube bash
docker exec -it postgresql bash
(※rootユーザーでログインする場合)
docker exec -it --user root sonarqube /bin/bash
docker exec -it --user root postgresql /bin/bash
ブラウザでログイン
ブラウザを開いて、次のURLを開きます。
URL:http://{インストールしたホストサーバーIP}:51003/sonarqube
![](https://assets.st-note.com/img/1733983946-oy8zjetXaROwisCxHc0u1gvI.png)
初回表示の場合のみPWの変更を促されるので、任意のPWに変更します
最新版(10.7)だと12文字以上で大小文字、数字、記号の組み合わせが必須となるのでそれに準拠することが望ましいかと思います。
![](https://assets.st-note.com/img/1733984085-Z2XHzNid9nkb8KRBsAlD4PLI.png)
以上で、SonarQubeサーバの構築は終了です。
ソースのチェック処理を担う「Sonar Scanner」の構築は 第2回 でご紹介する予定ですので
お楽しみに。
ユニゾンシステムズでは、一緒に働く仲間を募集しています。
ぜひ一度オフィスに遊びに来てみませんか?お気軽にDMもお待ちしています!
求人の詳細はこちら: https://www.unixon.co.jp/recruit/
Youtube: https://www.youtube.com/channel/UCGacmgfpJ0fkHC0aKrSppVw
X(Twitter): https://twitter.com/unixon_recruit