GitLabとGit Essentials - ハンズオンラボ: 事前定義されたプロジェクトテンプレートを使用したAuto DevOps

このハンズオンガイドでは、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の動作を示します。事前定義されたテンプレートを使用すると、ゼロからではなくベースプロジェクトから始めることができます。すべてのベースプロジェクトのリストはこちらで見つけることができます。

  1. マイテストグループに移動し、新しいプロジェクトを選択します。

  2. 空のプロジェクトを作成する代わりに、テンプレートから作成タイルをクリックします。

  3. NodeJS Expressの隣にあるテンプレートを使用ボタンをクリックします。

  4. プロジェクト名フィールドに Auto DevOpsテストプロジェクト と入力します。

  5. 可視性レベルプライベートであることを確認し、プロジェクトを作成ボタンをクリックします。

  6. プロジェクトの上部にはAuto DevOpsというタイトルのバナーがあります。このバナーの下にある設定で有効にするボタンをクリックします。

    このバナーが表示されない場合は、設定 > CI/CDに移動し、Auto DevOpsの隣にある展開ボタンをクリックします。

  7. デフォルトでAuto DevOpsパイプラインを使用のチェックボックスをクリックします。

  8. デプロイ戦略では、ステージングへの自動デプロイ、本番への手動デプロイをクリックします。

  9. 自分のプロジェクトでは、異なるデプロイ戦略を選択することができます。各戦略について詳しく知るには、各オプションの隣にある青い質問マークをクリックしてください。

  10. 変更を保存ボタンをクリックします。

  11. 左側のナビゲーションペインで、コード > ブランチをクリックします。

  12. ブランチメニューで、新しいブランチをクリックします。

  13. ブランチ名フィールドにnew-featureと入力します。

  14. 作成元ブランチがmasterに設定されていることを確認します。

  15. ブランチを作成ボタンをクリックします。

  16. 左側のナビゲーションペインで、ビルド > パイプラインをクリックします。作成したばかりのブランチで実行されているAuto DevOpsパイプラインが表示されます。

  17. パイプラインの実行中ステータスアイコンをクリックし、Auto DevOps が作成したステージ(パイプライングラフ内の列で表される)とジョブを確認してください。

    パイプラインでdastジョブが失敗することがあります。このジョブを正常にスキャンするには、追加の設定が必要です。DASTスキャンの設定について詳しくはドキュメントを参照してください。

タスク B. パイプラインをトリガーするための変更をコミットする

パイプラインを実行する最も一般的な方法は、プロジェクトのリポジトリのブランチにコミットすることです。このセクションでは、新しいコミットを適用し、その結果のパイプラインを表示します。

  1. コード > リポジトリに移動します。

  2. ウィンドウの左上近くで、現在masterと表示されているドロップダウンでnew-featureブランチに切り替えます。

  3. リポジトリファイルのリストで、viewsディレクトリをクリックしてからindex.pugファイルをクリックします。

  4. 編集 > 単一ファイルの編集をクリックし、index.pugの最後の行を以下のテキストに変更します。

    p GitLab へようこそ #{title}
    
  5. ファイルは以下のようになります:

    extends layout
    
    block content
      h1= title
      p GitLab welcomes you to #{title}
    
  6. コミットメッセージUpdate welcome message in index.pugと入力します。

  7. ターゲットブランチnew-featureに設定したままにします。

  8. 変更をコミットボタンをクリックします。

これらの変更をコミットした後、パイプラインが実行され、テストステージが失敗します。これは、テストケースがもはやインデックスファイルの内容と一致しないためです。パイプライン内のテストが正常に実行されるようにするには、新しいインデックスファイルに合わせてテストを更新する必要があります。

  1. リポジトリファイルのリストで、testディレクトリをクリックし、次にtest.jsファイルをクリックします。 { /examples/ }

  2. 編集 > 単一ファイルの編集をクリックし、.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);
      });
    });
    
  3. コミットメッセージUpdate welcome message testと入力します。

  4. ターゲットブランチnew-featureに設定したままにします。

  5. 変更をコミットボタンをクリックします。

  6. 変更がコミットされたら、マージリクエストを作成ボタンをクリックします。

  7. 下書きとしてマークチェックボックスをクリックして、マージリクエストを下書きに設定します。

    タイトルの先頭にDRAFT:を入力すると、下書きとしてマークチェックボックスが自動的にチェックされます。

  8. Assigneesの隣にあるAssign to meオプションをクリックして、マージリクエストを自分自身に割り当てます。

  9. 他のすべてのフィールドをデフォルト値のままにして、ページの下部にあるマージリクエストを作成をクリックします。

  10. マージリクエストをマージ可能にするには、マークを準備完了にするボタンをクリックします。これにより、MRのタイトルからDraft:が削除されます。

    これで、new-featureブランチをmasterブランチにマージするためのアクティブなマージリクエストが作成されました。このページには、そのマージリクエストの詳細が表示され、new-featureブランチで実行された最後のパイプラインのステータスも表示されます(パイプラインのステータスを表示するには、ページを更新する必要があるかもしれません)。GitLabは、new-featureブランチにコミットするたびに新しいパイプラインを実行します。

  11. Auto DevOpsパイプラインが自動的にマージリクエストと一緒に実行されます。このパイプラインにはさまざまなステージとジョブが含まれています。パイプラインが実行されると、MR内に新しいセクションが表示されます。パイプラインが完了したら、ページを更新して結果を確認してください。

    パイプラインが完了すると、warningステータスが表示される場合があります。この警告は、dastスキャンが構成されていないためです。この例では、dastを使用しないため、この警告が表示されても問題ありません。

  12. マージリクエストのパイプラインを選択します。

  13. パイプラインの詳細では、Auto DevOpsパイプラインに関連付けられた3つのステージが表示されます。

  • ビルドステージは、既存のDockerfileまたはHerokuビルドパックを使用してアプリケーションのビルドを作成します。生成されたDockerイメージはコンテナレジストリにプッシュされ、コミットSHAまたはタグでタグ付けされます。ビルドステージが完了したら、デプロイ > コンテナレジストリに移動してアプリケーションを確認してください。

  • テストステージは、アプリケーションコードにさまざまなテストを実行してセキュアで高品質であることを確認します。以下にいくつかのジョブを説明します:

    • ライセンスコンプライアンススキャンは、プロジェクトに追加された新しいライセンスを検出するためにスキャンを実行します。ライセンスコンプライアンスセクションで完全なレポートを選択してスキャンの詳細を表示します。レポートを表示した後は、パイプラインに戻ります。

    • コード品質スキャンは、メインとマージリクエストコードの間でコード品質が変更されたかどうかを検出するためにスキャンを実行します。コード品質に問題がある場合は、このセクションでフラグが立てられます。

    • セキュリティスキャンセクションは、コードに新しい脆弱性が導入されていないかどうかを確認します。セキュリティスキャンセクションですべてのパイプラインの調査結果を表示を選択してスキャンの詳細を表示します。

  • dastステージは、アプリケーションの実行バージョンを使用して、アプリケーションに対してAPIコールを実行して見つけることができる既知の脆弱性があるかどうかをチェックします。DASTジョブのスキャンのためにライブ環境を構成していないため、このジョブを気にする必要はありません。

ラボガイド完了

このラボ演習を完了しました。他のこのコースのラボガイドを表示できます。

提案はありますか?

ラボに変更を提案したい場合は、マージリクエストを介して提出してください。