初心者向けのGitLabCI / CDの紹介

このチュートリアルの目的は、GitLabのすべてのドキュメントを読まなくても30分で開始できるようにするGitLab CI / CDの概要を説明することです。このチュートリアルは、GitLab CI / CDなどのCI / CDツールをいじくり回したい初心者を対象としています。このチュートリアルでは、CI / CDとは何か、GitLabのツールを使用することにした理由、および.gitlab-ci.yamlサンプルアプリケーションを使用してを作成する方法のウォークスルーについて簡単に説明します。

CI / CD

CI / CDは、継続的インテグレーション/継続的デリバリー/継続的デプロイの略です。これにより、チームはソフトウェアをより高速に構築、テスト、リリースできます。CI / CDは、可能な場合は手動による人間の操作を排除し、最終的な手動コードの本番環境へのデプロイを除くすべてを自動化します。このプラクティスを実装する際の課題の1つは、CI / CDパイプラインの構築に必要なさまざまなツールとシステムを統合することです。たとえば、コードをBitbucketに保存し、プライベートインフラストラクチャの自動テストスイートでテストして、アプリケーションをAWSまたはMicrosoftAzureにデプロイすることができます。複数のシステムに存在する複雑なアプリケーションは、すべての組織がシームレスなCI / CDパイプラインを実装しているわけではありません。

なぜGitLabCI / CDなのですか?

私がGitLabCI / CDを使用している理由は、3つあります。1つのツールで完全なCI / CDパイプラインソリューションを構築できること、高速であること、オープンソースであることです。同じ場所にGitLabCI / CDを使用すると、別のアプリケーションなしで、チケットの作成、リクエストのマージ、コードの記述、CI / CDツールのセットアップを行うことができます。それは本質的にワンストップショップです。GitLab CI / CDは、GitLabRunnersでビルドを実行します。ランナーは、GitLab CIAPIを介して事前定義されたステップを実行する分離された仮想マシンです。このツールだけで、単一のインスタンスで実行する場合と比較して、プロジェクトをパイプラインビルドで実行することができます。GitLab Runnersの詳細については、このリンクをご覧ください。最後に、これはオープンソースなので、いつでもコードベースに貢献し、問題が発生したときに新しい問題を作成できます。

シナリオ

データベース内の本のリストを取得するNode.jsAPIがあるとしましょう。コードをビルド、テスト、デプロイの3つのフェーズにプッシュするパイプラインを作成できます。パイプラインは、同様の特性によってグループ化されるステップ群です。これらのフェーズでは、パイプラインは次の3つのタイプで定義されます。

  • プロジェクトパイプライン
  • 継続的インテグレーションパイプライン
  • パイプラインを展開する

3つのパイプラインが実行するステップは、ジョブと呼ばれます。これらの特性によって一連のジョブをグループ化する場合、それはステージと呼ばれます。ジョブはパイプラインの基本的な構成要素です。それらはステージでグループ化でき、ステージはパイプラインにグループ化できます。ジョブ、ステージ、パイプラインの階層の例を次に示します。

A.)ビルド
i。NPMの依存関係をインストールする
ii。ES-Linteriiiを実行します
。Code-Minifier
Bを実行します。)テスト
i。ユニット、機能、およびエンドツーエンドのテストを実行します。
ii。pkgを実行してNode.jsアプリケーションをコンパイルします
C.)デプロイ
i。本番
環境1.)AWSiiでEC2インスタンスを起動します
。ステージング
1.)ローカル開発サーバーで起動します

この階層では、3つのコンポーネントすべてが3つの異なるパイプラインと見なされます。主な箇条書き—ビルド、テスト、およびデプロイはステージであり、これらのセクションの下の各箇条書きはジョブです。これをGitLabCI / CDyamlファイルに分割してみましょう。

GitLab CI / CDの使用

GitLab CI / CDを使用するに.gitlab-ci.ymlは、プロジェクトのルートで呼び出されるファイルをGitLabリポジトリに作成し、以下を追加しますyaml。

image: node:10.5.0stages:
 — build
 — test
 — deploybefore_script:
 — npm install

GitLab CI / CDの使用

GitLab CI / CDを使用するに.gitlab-ci.ymlは、プロジェクトのルートで呼び出されるファイルをGitLabリポジトリに作成し、以下を追加しますyaml。

image: node:10.5.0stages:
 — build
 — test
 — deploybefore_script:
 — npm install

それでは、ビルド段階に特化した仕事から始めましょう。この仕事を呼びますbuild-min-code。このジョブでは、依存関係をインストールしてコードを縮小する必要があります。これは、scriptディレクティブを使用して開始できます。scriptディレクティブは、ランナーの中に実行されますシェルスクリプトです。次に、このジョブを「ビルド」ステージに割り当てます。ジョブをステージに割り当てるには、stageディレクティブを使用します。

build-min-code:
ステージ:ビルド
スクリプト:
— npm install
— npm run minifier

これで、ビルドステージに関連付けられたジョブがあり、テストステージでそれを実行します。テストジョブが呼び出さrun-unit-testれ、APIでnpmスクリプトを使用してテストを実行しますnpm test。

run-unit-test:
ステージ:テスト
スクリプト:
— npm run test

最後に、Deployステージを処理するジョブを追加します:deploy-production、deploy-staging。この例では、展開のために2つの異なるジョブ(ステージングと本番)があります。これらのジョブは、以前のジョブと同じレイアウトを反映しますが、わずかな変更があります。現在、すべてのジョブは、コードのプッシュまたはブランチでトリガーされるように自動的に設定されています。コードをステージングと本番環境にデプロイするときに、このようなことはしたくありません。これを防ぐために、onlyディレクティブを使用します。onlyディレクティブは、ジョブを実行するためにブランチやタグの名前を定義します。ジョブは次のようになります。

deploy-staging:
 stage: deploy
 script:
   — npm run deploy-stage
 only:
   — developdeploy-production:
 stage: deploy
 script:
   — npm run deploy-prod
 only:
   — master

このイメージdeploy-stagingから、コードプッシュがmasterブランチに対して行われたためを除いて、3つのステージとジョブすべてがトリガーされます。GitLab CI / CDには、実行中のジョブとステージ、およびビルド中に発生しているエラーを表示するのに役立つ直感的なインターフェイスが付属しています。以下は.gitlab-ci.yamlファイルの最終バージョンです。これを自分でテストしたい場合は、サンプルアプリケーションへのリンクを次に示します。

image: node:10.5.0stages:
  - build
  - test
  - deploybefore_script:
  - npm installbuild-min-code:
  stage: build
  script:
    - npm install
    - npm run minifierrun-unit-test:
  stage: test
  script:
    - npm run testdeploy-staging:
  stage: deploy
  script:
    - npm run deploy-stage
  only:
    - developdeploy-production:
  stage: deploy
  script:
    - npm run deploy-prod
  only:
    - master

上記の項目は、GitLab CI / CDが提供できる機能の概要です。GitLab CI / CDには、Dockerイメージを構築して公開し、サードパーティのツールと統合することで、コードベースの自動化をより詳細に制御する機能があります。このチュートリアルがお役に立てば幸いです。読んでくれてありがとう!

提案された投稿

依存関係の更新を効率化する: JavaScript アプリで Renovate with GitLab を使用するためのステップバイステップ ガイド

依存関係の更新を効率化する: JavaScript アプリで Renovate with GitLab を使用するためのステップバイステップ ガイド

最新の依存関係を使用して JavaScript アプリを最新の状態に保つのに苦労していますか? 依存関係の更新プロセスを自動化する強力なライブラリ管理ツールである Renovate 以外に探す必要はありません。Renovate は長年にわたって進化し、バージョン 35 に達しました。

完全な Jenkins CI/CD プロジェクト - ドキュメント付き

インストールからデプロイ: NodeJS アプリに Jenkins と Docker を使用する

完全な Jenkins CI/CD プロジェクト - ドキュメント付き

みなさん、こんにちは。新しい DevOps タスクで戻ってきました。追いつくのは大変だと思うので、今日は少し息抜きして、24 日目から Jenkins CI/CD プロジェクトを完成させ、ドキュメントを追加してください。

関連記事

仕事週間で学ぶことはあなたが思っている以上に重要です

仕事週間で学ぶことはあなたが思っている以上に重要です

私たちは、自分にとって良いとわかっていることを実行するのに苦労していることによく気づきます。大切な人に愛していると伝えることから、海賊のように話すことを忘れないことまで、すでにそうしたことを行っているため、1日、1週間、または1か月のイベントは必要ないと主張する人が常にいます。

ドメイン名に関する情報の検索

Brian P. Hogan 著『Small, Sharp Software Tools』からの抜粋

ドメイン名に関する情報の検索

facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。

メディアを再考する: マクチェズニーの 5 つの真実とコミュニケーションの未来

今日の非常につながりの深い世界では、メディア システムは世論の形成、ひいては民主的な意思決定において極めて重要な役割を果たしています。学者のロバート・マクチェズニーは、コミュニケーションの政治経済についての深い分析の中で、従来の通念に疑問を呈し、メディアに関する彼の言うところの「5つの真実」を提示します。

キリスト教徒の迫害: 私たちが語らないヘイトクライム

イスラム嫌悪のことは忘れてください。宗教的憎悪犯罪の主な犠牲者はキリスト教徒(そしてユダヤ人)です。

キリスト教徒の迫害: 私たちが語らないヘイトクライム

理性的な人なら誰でも、政界とメディア界が左派、さらには極左によって支配されており、政治的言説に不均衡を生み出している状況を知っています。宗教の分野では、この不均衡は明らかです。左翼の新聞やネットワークは急いでキリスト教の信仰を擁護していません。