見出し画像

自動コードレビュー環境の構築

システム開発部の白木です。
以前はシステム開発作業をメインで行っていましたが、東京支社在籍中にインフラ担当に任命され、気が付いたら社内ネットワークの管理も行うようになっていました。
 
開発をする場合はいろいろなソースコードを書くことになるのですが、書いたソースコードが一定の品質を保っているのか、潜在的な問題を抱えていたりしないか、人の目で確認(ソースコードレビュー)をすることがあるかと思います。

ソースコードレビュー自体はプロジェクト全体の品質を担保する上で必要な工程なのですが、レビューする人のスキルに左右される工程でもあります。この工程をお手軽に、かつ、一定のルールに基づいて実施できる自動コードレビューのツール(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


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

  • 初回表示の場合のみPWの変更を促されるので、任意のPWに変更します

最新版(10.7)だと12文字以上で大小文字、数字、記号の組み合わせが必須となるのでそれに準拠することが望ましいかと思います。


以上で、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

いいなと思ったら応援しよう!