GitLab CI/CD - ハンズオンラボ: コード品質スキャン
所要時間の目安: 15〜20分
目標
コード品質スキャンにより、品質と複雑さについてソースコードを分析できます。コード品質スキャンの目標は、プロジェクトのコードをシンプルで読みやすく、保守しやすい状態に保つことです。このラボでは、プロジェクトでコード品質スキャンを有効化して結果を確認する方法を学びます。コード品質スキャンの詳細については、こちらをクリックしてください。
タスク A. コード品質の問題を含む Python ファイルの追加
左のナビゲーションペインを使用して、Code > Repository をクリックします。
ウィンドウ上部の + > This directory > New file をクリックして新しいファイルを作成します。
File name に
HelloWorld.pyと入力します。以下の Python コードをファイルの内容として貼り付けます:
def hello_world(a, b, c, d, e, f, g): print("Hello world") # TODO: improve this functionCommit message フィールドに
Add Python codeと入力します。Target Branch を
mainに設定します。Commit changesをクリックします。
タスク B. コード品質スキャンを含む .gitlab-ci.yml の設定
左のナビゲーションペインで Code > Repository をクリックします。
既存の
.gitlab-ci.ymlファイルをクリックします。青い Edit ドロップダウンをクリックして Edit single file を選択し、ファイルを編集します。
ファイル内の既存のコードをすべて削除します。以下のファイル内容でコードを置き換えます:
stages: - test test-job: stage: test script: - echo "Pipeline needs at least one job" include: - template: Code-Quality.gitlab-ci.yml # TODO: should we refactor this file?
このコードは、まず
testという名前の単一ステージを定義します。次にtest-jobという名前の単一ジョブが定義され、testステージの一部として実行されます。includeセクションはコード品質テンプレートを含めることでコード品質スキャンを有効にします。最後に、TODOコマンドがコード品質の問題としてフラグされるコードの例として追加されています。
Commit message フィールドに
Add CI/CD configuration file that includes code quality scanningと入力します。Target Branch を
mainに設定します。Commit changesをクリックします。
タスク C. コード品質スキャン結果の確認
左のナビゲーションペインで Build > Pipelines をクリックします。
一番上の行は、前のセクションで
.gitlab-ci.ymlファイルをコミットしたときに実行が開始されたパイプラインです。左側のステータスアイコンが passed と表示されるまで待ちます。
トレーニング環境ではコード品質スキャナーが完了するまで最大5分かかる場合があります。この間、軽食休憩に最適なタイミングです。
パイプラインのステータスが passed になったら、ステータスアイコンをクリックしてパイプラインの詳細を確認します。
パイプラインの詳細画面で、パイプライングラフの上にある Code Quality タブをクリックします。
スキャナーが2つの異なるファイルで3件のコード品質の問題を発見したことに注目してください:
HelloWorld.pyで2件、.gitlab-ci.ymlで1件です。
タスク D. ブランチの作成
左のナビゲーションペインで Code > Branches をクリックします。
New branch をクリックします。Branch name フィールドに
branch-Aと入力します。Create branch をクリックします。
ウィンドウ右上の Create merge request をクリックします。すべての設定をデフォルト値のままにします。
Create merge request をクリックします。
タスク E. ブランチ上の問題の修正
左のナビゲーションペインで Code > Repository をクリックします。
ウィンドウ左上のブランチドロップダウンで branch-A を選択します。
HelloWorld.pyを開き、Edit をクリックします。1行目を以下のコードに置き換えてコード品質の問題を修正します:
def hello_world(a):3行目を削除して別のコード品質の問題を修正します。
コミットメッセージ
Fix code quality problemsでこれらの変更をコミットします。
タスク F. branch-A と main のコード品質を比較する
左のナビゲーションペインで Build > Pipelines をクリックします。
最新のパイプラインが passed ステータスを表示するまで待ちます。これには最大5分かかる場合があります。
左のナビゲーションペインで Merge requests をクリックします。Draft: Branch A MR をクリックして MR の詳細ページを表示します。
MR の詳細ページの中ほどで No changes to code quality と表示されている場合は、ページを更新する必要があるかもしれません。ペインには Code Quality scans found 2 fixed findings. と表示されるはずです。これは branch-A で2件のコード品質の問題を修正したことを意味し、それらの問題は main では未修正のままです。
コード品質ペインを 展開 して、branch-A で修正したコード品質の問題を確認します。
コード品質スキャンの結果を転送または保存するには、Pipelines ページで対象のパイプライン行(または対象ジョブ)の右側にある縦の省略記号(︙)をクリックし、表示されるメニューから Download artifacts または Browse artifacts を選択して JSON アーティファクトを取得してください。
ラボガイドの完了
このラボ演習が完了しました。このコースの他のラボガイドも参照できます。
ご意見・ご提案?
GitLab CI/CD のハンズオンガイド に変更を加えたい場合は、マージリクエストで変更内容を提出してください!
