GitLabとGitの基本 - ハンズオンラボ: .gitlab-ci.ymlファイルの作成

.gitlab-ci.ymlファイルを使用してCI/CDパイプラインを作成および実行する方法を説明するハンズオンガイドです。

完了までの見積時間: 30分

目的

CI/CDは、継続的インテグレーションと継続的デプロイメントの標準です。つまり、これはソフトウェア開発の継続的な方法であり、継続的にコードの変更をビルド、テスト、デプロイ、監視します。

この反復プロセスは、新しいコードをバグのあるか、以前のバージョンで失敗したコードに基づいて開発する可能性を減らすのに役立ちます。GitLab CI/CDは、開発サイクルの早い段階でバグを見つけ、本番環境にデプロイされるすべてのコードが確立されたコード規約に準拠していることを確認するのに役立ちます。

GitLab CI/CDを使用するには、プロジェクトのルートにある.gitlab-ci.ymlファイルからCI/CDパイプラインの構成を含める必要があります。このファイルはYAML形式に従い、独自の特別な構文を持っています。詳細については、ドキュメントを参照してください。将来の参照のためにこのページをブックマークすることをお勧めします。

タスクA. 新しいプロジェクトを作成し、CI/CD構成ファイルを追加する

  1. マイテストグループに移動し、新しいプロジェクトボタンをクリックし、空のプロジェクトを作成タイルをクリックします。

  2. タイトルにCIテストと入力します。

  3. プロジェクトの可視性レベルプライベートに設定します。

  4. READMEでリポジトリを初期化のチェックボックスを有効にします。

  5. 静的アプリケーションセキュリティテスト(SAST)を有効にするをチェックしないでください。

  6. プロジェクトを作成ボタンをクリックし、GitLabが新しいプロジェクトのメインページにリダイレクトするのを待ちます。

  7. (+) > このディレクトリ > 新しいファイルをクリックして新しいファイルを作成します。

  8. ファイル名のダイアログボックスに.gitlab-ci.ymlと入力します。

  9. テンプレートを適用のドロップダウンから一般 > Bashを選択します。これにより、ファイルに最小限の.gitlab-ci.ymlファイルの内容が入力されます。

  10. エディタで、build1:の行の上と- echo "For example run a test suite"の行の下のすべての行を削除します。これにより、build1test1のジョブを定義する2つのコードセクションが残ります。.gitlab-ci.ymlファイルは次のようになります:

    build1:
      stage: build
      script:
        - echo "Do your build here"

    test1:
      stage: test
      script:
        - echo "Do a test here"
        - echo "For example run a test suite"
    ```

    > ジョブについて詳しくは、[ドキュメント](https://docs.gitlab.com/ee/ci/jobs/) を参照してください。

1. ファイルの先頭に以下の3行を追加して **build** と **test** ステージを定義します。`stages` キーワードは左端に配置し、ステージ名は2スペース分インデントしてください。

    ```yaml
    stages:
      - build
      - test
    ```

    > ステージを使用して、ジョブのグループを含むステージを定義します。ジョブ内でステージを使用して、ジョブを特定のステージで実行するように構成します。詳細については、[ドキュメント](https://docs.gitlab.com/ee/ci/yaml/index.html#stages) を参照してください。

1. 現在の `.gitlab-ci.yml` ファイルは次のようになります:

    ```yaml
    stages:
      - build
      - test

    build1:
      stage: build
      script:
        - echo "Do your build here"

    test1:
      stage: test
      script:
        - echo "Do a test here"
        - echo "For example run a test suite"
    ```

1. **Commit message** と **Target Branch** フィールドのデフォルト値をそのままにして、**Commit changes** ボタンをクリックしてください。

## タスク B. CI/CD パイプラインを検査する

> パイプラインは、継続的インテグレーション、デリバリー、デプロイメントの最上位コンポーネントです。パイプラインは、何を行うかを定義する **ジョブ** と、いつ実行するかを定義する **ステージ** から構成されます。例えば、プロジェクトを構築するすべての操作のためにステージを定義し、このステージのジョブはコードをコンパイルすることができます。詳細については、[こちら](https://docs.gitlab.com/ee/ci/pipelines/) をクリックしてください。

1. `.gitlab-ci.yml` をプロジェクトのリポジトリにコミットすると、GitLab はすぐに CI/CD パイプラインの実行を開始しました。プロジェクトのパイプラインを表示するには、**Build > Pipelines** に移動してください。

1. これまでに実行されたパイプラインは 1 つだけなので、パイプラインのテーブルには 1 行しかありません。そのパイプラインの詳細を確認するには、パイプラインの行の左側にある **status** ラベルをクリックしてください。

    > ステータスラベルには **Running** または **Passed** のいずれかが表示されるはずです。

1. パイプライングラフを検査します。各列はステージを表しています。**Build** ステージには、**build1** ジョブを表すウィジェットがあります。**Test** 列には、**test1** ジョブを表すウィジェットがあります。**build1** ウィジェットをクリックして、ウェブ端末でジョブの出力を表示します。例えば、出力で `Do your build here` というメッセージを探してください。

1. ウェブブラウザの戻るボタンをクリックしてパイプライングラフに戻ります。**test1** ウィジェットをクリックして、ジョブの出力をウェブ端末で確認します。例えば、出力で `Do a test here` というメッセージを探してください。

## ラボガイド完了

このラボ演習を完了しました。他の[このコースのラボガイド](/handbook/customer-success/professional-services-engineering/education-services/gitbasicshandson)を表示できます。

## 提案はありますか?

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