初心者にやさしい入門


このチュートリアルの目標は、Gitlabのドキュメントのすべてを読むことなく、30分で人々が始めるのを助けるgitlab ci/cdの高レベルの導入を与えることです.このチュートリアルでは、gitlab ci/cdのようなCI/CDツールを使用するようになりたい初心者に向けられています.このチュートリアルでは、私は簡単にci/cdとは何か、なぜ私はgitlabのツールとどのようにCountを作成するチュートリアルで行くことを決めた上に行く.gitlab-ci.yaml 例のアプリケーションで.

シー・シーディー
CI/CDは、連続的な統合/連続配達/連続配備のために短いです.これは、チームを構築することができますし、テストとリリースソフトウェアを高速化でリリースします.CI/CDが可能なマニュアルヒューマンヒューマンインタラクションを削除する - 生産への最終マニュアルコード展開以外のすべてを自動化する.この慣習を実行することの課題の1つは、CI/CDパイプラインを構築するのに必要な様々なツールとシステムを統合することです.たとえば、Bitbucketでコードを格納し、プライベートインフラストラクチャの自動テストスイートでテストし、アプリケーションをAWSまたはマイクロソフトAzureに配備することもできます.複数のシステムに存在する複雑なアプリケーションは、シームレスなCI/CDパイプラインを実装するすべての組織に貢献しています.

なぜgitlab ci/cd?
私は3つの理由のためにgitlab ci/cdを使います:1つのツールで完全なCI/CDパイプライン解決を構築することができて、それは速くて、それはオープンソースです.GITLAB CI/CDと同じ場所で、私はチケット、マージ要求、書き込みコードとセットアップCI/CDツールを別のアプリケーションなしで作成することができます.基本的にワンストップショップです.Gitlab CI/CDは、GitLabランナーで構築します.ランナーは、Gitlab CI APIを通して定義済みのステップを実行する仮想マシンを隔離します.このツールでは、単一のインスタンスで実行されるのと比較して、プロジェクトをより速くビルドすることができます.あなたはgitlabランナーについての詳細を学ぶことができますlink . 最後に、オープンソースなので、常にコードベースに貢献し、問題が発生したときに新しい問題を作成できます.

シナリオ
ノードがあるとしましょう.データベース内の書籍の一覧を取得するJS API.ビルド、テスト、配備の3つのフェーズでコードをプッシュするパイプラインを作成できます.パイプラインは、類似した特性によってグループ化されるステップのグループです.これらの段階でパイプラインは3つのタイプで定義されます:
  • プロジェクトパイプライン
  • 連続統合パイプライン
  • パイプラインの配置
  • プロジェクトパイプラインでは、依存関係、実行中のプリンタ、およびコードに対応するスクリプトをインストールします.連続統合パイプラインは自動テストを実行し、コードの分散バージョンを構築します.最後に、展開パイプラインは指定されたクラウドプロバイダーと環境にコードを展開します.
    つのパイプラインが実行するステップは仕事と呼ばれます.あなたがそれらの特性によって一連の仕事をグループ化するとき、それはステージと呼ばれています.ジョブはパイプラインのための基本的なビルディングブロックです.彼らはステージとステージで一緒にグループ化することができますパイプラインに一緒にグループ化することができます.ジョブ、ステージ、パイプラインの例を示します.
    A.) Build
         i. Install NPM Dependencies
         ii. Run ES-Linter
         iii. Run Code-Minifier
    B.) Test
         i. Run unit, functional and end-to-end test.
         ii. Run pkg to compile Node.js application
    C.) Deploy
         i. Production
            1.) Launch EC2 instance on AWS
         ii. Staging
            1.) Launch on local development server
    
    この階層構造では、3つの構成要素は3つの異なるパイプラインと見なされます.主弾丸 --  ビルド、テスト、展開はステージであり、それらのセクションの下の各弾丸は仕事です.gitlab ci/cdにこれを壊しましょうyaml ファイル.

    gitlab ci/cdの使用
    gitlab ci/cdを使うには、.gitlab-ci.yml GitLabリポジトリ内のプロジェクトのルートで次を追加しますyaml :
    image: node:10.5.0
    
    stages:
      - build
      - test
      - deploy
    
    before_script:
      - npm install
    
    前に述べたように、gitlab ci/cdはランナーを使ってパイプラインを実行します.私たちは、どのオペレーティングシステムと定義済みライブラリを定義することができますimage ディレクティブ.この例では、ノードの最新バージョンを使用します.ランナー.The stages ディレクティブを使用すると、構成全体のステージを定義できます.ジョブは、2010年に記載された順序からベースで実行されますstages ディレクティブ.ステージについてもっと学ぶことができるhere . The before_script ディレクティブはすべてのジョブの前にコマンドを実行するために使用されます.
    それでは、ビルドステージに専念しましょう.私たちはこの仕事を呼ぶつもりですbuild-min-code . このジョブでは依存関係をインストールし、コードを管理します.我々は、使用して、このオフを開始することができますscript ディレクティブ.The script ディレクティブはランナー内で実行されるシェルスクリプトです.それから、私たちはこの仕事を「ビルド」ステージに割り当てるつもりです.ジョブをステージに割り当てるには、stage ディレクティブ.
    build-min-code:
      stage: build
      script:
        - npm install
        - npm run minifier
    
    
    今、私たちは、ビルドステージに関連した仕事を持っています.私たちのテストの仕事はrun-unit-test そして、我々はテストを実行するために我々のAPIでNPMスクリプトを使うつもりですnpm test .
    run-unit-test:
      stage: test
      script:
        - npm run test
    
    
    最後に、展開段階を処理するジョブを追加します.deploy-production , deploy-staging . この例では、2つの異なるジョブを展開します.これらの仕事は、我々の前の仕事と同じレイアウトを反映しますが、小さい変化で.現在、すべてのジョブを自動的に任意のコードをプッシュまたは分岐にトリガされるように設定されます.我々は、我々がコードをステージングと生産に配備するとき、それを持ちたくありません.それを防ぐためにonly ディレクティブ.The only ディレクティブは、ジョブの実行する分岐とタグの名前を定義します.ジョブは次のようになります.
    deploy-staging:
     stage: deploy
     script:
       - npm run deploy-stage
     only:
       - develop
    
    deploy-production:
     stage: deploy
     script:
       - npm run deploy-prod
     only:
       - master
    
    我々の中でdeploy-staging 仕事は、ランナーがそれを実行するだけでdevelop ブランチアンドフォーdeploy-production the master 枝.ここでは、コードプッシュを示す以下のスクリーンショットですmaster 枝.

    このイメージから、すべての3つのステージと仕事は、2010年の例外で引き起こされますdeploy-staging コードプッシュはmaster 枝.GitLabのCI/CDは、直感的なインターフェイスがどのようなジョブとステージが実行されているエラーをどのようなビルドの中で発生している表示するために付属しています.以下は、最後のバージョンです.gitlab-ci.yaml ファイル.あなた自身をテストしたいならば、ここにありますlink サンプルアプリケーションに.
    image: node:10.5.0
    
    stages:
      - build
      - test
      - deploy
    
    before_script:
      - npm install
    
    build-min-code:
      stage: build
      script:
        - npm install
        - npm run minifier
    
    run-unit-test:
      stage: test
      script:
        - npm run test
    
    deploy-staging:
      stage: deploy
      script:
        - npm run deploy-stage
      only:
        - develop
    
    deploy-production:
      stage: deploy
      script:
        - npm run deploy-prod
      only:
        - master
    

    結論
    上記の項目はGitlab CI/CDが提供できる機能の高レベルの概要です.GITLAB CI/CDは、サードパーティ製のツールとの統合にDocker画像を構築し、公開することによってコードベースの自動化の詳細な制御を持つ能力を持っています.私はこのチュートリアルが役に立つことを願っています.読書ありがとう!