GitLabとGit Essentials - ハンズオンラボ: 事前定義されたプロジェクトテンプレートを使用したAuto DevOps
完了までの見積時間: 30分
目的
GitLab Auto DevOpsは、ソフトウェア配信プロセスをサポートするために連携して機能する事前構成された機能と統合のコレクションです。Auto DevOpsはプログラミング言語を検出し、CI/CDテンプレートを使用して、アプリケーションをビルドおよびテストするデフォルトのパイプラインを作成および実行します。その後、ステージングおよび本番環境へのアプリケーションのデプロイメントを構成し、ブランチごとに変更をプレビューするためにReview Appsを設定できます。詳細については、ドキュメントを参照してください。
言い換えると、Auto DevOpsは独自の .gitlab-ci.yml
ファイルを作成および使用する代わりとなります。
タスクA. Auto DevOpsを使用した新しいNode JS Expressプロジェクトの作成
NodeJS Expressの事前定義されたテンプレートを使用して、Auto DevOpsの動作を示します。事前定義されたテンプレートを使用すると、ゼロからではなくベースプロジェクトから始めることができます。すべてのベースプロジェクトのリストはこちらで見つけることができます。
-
マイテストグループに移動し、新しいプロジェクトを選択します。
-
空のプロジェクトを作成する代わりに、テンプレートから作成タイルをクリックします。
-
NodeJS Expressの隣にあるテンプレートを使用ボタンをクリックします。
-
プロジェクト名フィールドに
Auto DevOpsテストプロジェクト
と入力します。 -
可視性レベルがプライベートであることを確認し、プロジェクトを作成ボタンをクリックします。
-
プロジェクトの上部にはAuto DevOpsというタイトルのバナーがあります。このバナーの下にある設定で有効にするボタンをクリックします。
このバナーが表示されない場合は、設定 > CI/CDに移動し、Auto DevOpsの隣にある展開ボタンをクリックします。
-
デフォルトでAuto DevOpsパイプラインを使用のチェックボックスをクリックします。
-
デプロイ戦略では、ステージングへの自動デプロイ、本番への手動デプロイをクリックします。
-
自分のプロジェクトでは、異なるデプロイ戦略を選択することができます。各戦略について詳しく知るには、各オプションの隣にある青い質問マークをクリックしてください。
-
変更を保存ボタンをクリックします。
-
左側のナビゲーションペインで、コード > ブランチをクリックします。
-
ブランチメニューで、新しいブランチをクリックします。
-
ブランチ名フィールドに
new-feature
と入力します。 -
作成元ブランチがmasterに設定されていることを確認します。
-
ブランチを作成ボタンをクリックします。
-
左側のナビゲーションペインで、ビルド > パイプラインをクリックします。作成したばかりのブランチで実行されているAuto DevOpsパイプラインが表示されます。
-
パイプラインの実行中ステータスアイコンをクリックし、Auto DevOps が作成したステージ(パイプライングラフ内の列で表される)とジョブを確認してください。
パイプラインで
dast
ジョブが失敗することがあります。このジョブを正常にスキャンするには、追加の設定が必要です。DASTスキャンの設定について詳しくはドキュメントを参照してください。
タスク B. パイプラインをトリガーするための変更をコミットする
パイプラインを実行する最も一般的な方法は、プロジェクトのリポジトリのブランチにコミットすることです。このセクションでは、新しいコミットを適用し、その結果のパイプラインを表示します。
-
コード > リポジトリに移動します。
-
ウィンドウの左上近くで、現在masterと表示されているドロップダウンでnew-featureブランチに切り替えます。
-
リポジトリファイルのリストで、
views
ディレクトリをクリックしてからindex.pug
ファイルをクリックします。 -
編集 > 単一ファイルの編集をクリックし、
index.pug
の最後の行を以下のテキストに変更します。p GitLab へようこそ #{title}
-
ファイルは以下のようになります:
extends layout block content h1= title p GitLab welcomes you to #{title}
-
コミットメッセージに
Update welcome message in index.pug
と入力します。 -
ターゲットブランチを
new-feature
に設定したままにします。 -
変更をコミットボタンをクリックします。
これらの変更をコミットした後、パイプラインが実行され、テストステージが失敗します。これは、テストケースがもはやインデックスファイルの内容と一致しないためです。パイプライン内のテストが正常に実行されるようにするには、新しいインデックスファイルに合わせてテストを更新する必要があります。
-
リポジトリファイルのリストで、
test
ディレクトリをクリックし、次にtest.js
ファイルをクリックします。 { /examples/ } -
編集 > 単一ファイルの編集をクリックし、
.expect(/Welcome to Express/, done)
という行を.expect(/GitLab welcomes you to Express/, done)
に変更します。編集が完了したら、あなたのコードは次のようになります:const request = require('supertest'); const app = require('../app'); describe('App', function() { it('has the default page', function(done) { request(app) .get('/') .expect(/GitLab welcomes you to Express/, done); }); });
-
コミットメッセージに
Update welcome message test
と入力します。 -
ターゲットブランチを
new-feature
に設定したままにします。 -
変更をコミットボタンをクリックします。
-
変更がコミットされたら、マージリクエストを作成ボタンをクリックします。
-
下書きとしてマークチェックボックスをクリックして、マージリクエストを下書きに設定します。
タイトルの先頭に
DRAFT:
を入力すると、下書きとしてマークチェックボックスが自動的にチェックされます。 -
Assigneesの隣にある
Assign to me
オプションをクリックして、マージリクエストを自分自身に割り当てます。 -
他のすべてのフィールドをデフォルト値のままにして、ページの下部にあるマージリクエストを作成をクリックします。
-
マージリクエストをマージ可能にするには、マークを準備完了にするボタンをクリックします。これにより、MRのタイトルから
Draft:
が削除されます。これで、
new-feature
ブランチをmaster
ブランチにマージするためのアクティブなマージリクエストが作成されました。このページには、そのマージリクエストの詳細が表示され、new-feature
ブランチで実行された最後のパイプラインのステータスも表示されます(パイプラインのステータスを表示するには、ページを更新する必要があるかもしれません)。GitLabは、new-feature
ブランチにコミットするたびに新しいパイプラインを実行します。 -
Auto DevOpsパイプラインが自動的にマージリクエストと一緒に実行されます。このパイプラインにはさまざまなステージとジョブが含まれています。パイプラインが実行されると、MR内に新しいセクションが表示されます。パイプラインが完了したら、ページを更新して結果を確認してください。
パイプラインが完了すると、warningステータスが表示される場合があります。この警告は、
dast
スキャンが構成されていないためです。この例では、dast
を使用しないため、この警告が表示されても問題ありません。 -
マージリクエストのパイプラインを選択します。
-
パイプラインの詳細では、Auto DevOpsパイプラインに関連付けられた3つのステージが表示されます。
-
ビルドステージは、既存のDockerfileまたはHerokuビルドパックを使用してアプリケーションのビルドを作成します。生成されたDockerイメージはコンテナレジストリにプッシュされ、コミットSHAまたはタグでタグ付けされます。ビルドステージが完了したら、デプロイ > コンテナレジストリに移動してアプリケーションを確認してください。
-
テストステージは、アプリケーションコードにさまざまなテストを実行してセキュアで高品質であることを確認します。以下にいくつかのジョブを説明します:
-
ライセンスコンプライアンススキャンは、プロジェクトに追加された新しいライセンスを検出するためにスキャンを実行します。ライセンスコンプライアンスセクションで完全なレポートを選択してスキャンの詳細を表示します。レポートを表示した後は、パイプラインに戻ります。
-
コード品質スキャンは、メインとマージリクエストコードの間でコード品質が変更されたかどうかを検出するためにスキャンを実行します。コード品質に問題がある場合は、このセクションでフラグが立てられます。
-
セキュリティスキャンセクションは、コードに新しい脆弱性が導入されていないかどうかを確認します。セキュリティスキャンセクションですべてのパイプラインの調査結果を表示を選択してスキャンの詳細を表示します。
-
-
dastステージは、アプリケーションの実行バージョンを使用して、アプリケーションに対してAPIコールを実行して見つけることができる既知の脆弱性があるかどうかをチェックします。DASTジョブのスキャンのためにライブ環境を構成していないため、このジョブを気にする必要はありません。
ラボガイド完了
このラボ演習を完了しました。他のこのコースのラボガイドを表示できます。
提案はありますか?
ラボに変更を提案したい場合は、マージリクエストを介して提出してください。