gitlab CI持続的統合

3936 ワード

1継続的な統合
gitlab-ciのフルネームはgitlab continuous integrationの意味で、つまり統合を継続し、pushがgitlabに達するたびに、または一定時間ごとにスクリプト(.gitlab-ci.yml)の実行がトリガーされ、スクリプトの内容にはテスト、コンパイル、導入などのカスタマイズされた一連の内容が含まれていることを中心としています.
2 GitLab CI関連概念
  • pipeline:1回の構築タスク(実行スクリプト)に相当し、面にはインストール依存、実行テスト、コンパイル、テストサーバの導入、本番サーバの導入などの複数のプロセスが含まれます.
  • +------------------+           +----------------+
    |                  |  trigger  |                |
    |   Commit / MR    +---------->+    Pipeline    |
    |                  |           |                |
    +------------------+           +----------------+
    
  • Stages:構築フェーズを表し、1回のタスクに複数のフェーズがあります.これらのフェーズには特徴があります.
  • すべてのステージは、1つのステージが完了すると、次のステージが開始される順序で実行されます.
  • は、すべてのStagesが完了した場合にのみ、構築タスク(Pipeline)が成功します.
  • いずれかのステージが失敗した場合、後のステージは実行されず、この構築タスク(Pipeline)は失敗します.

  • StagesとPipelineの関係は次のとおりです.
    +--------------------------------------------------------+
    |                                                        |
    |  Pipeline                                              |
    |                                                        |
    |  +-----------+     +------------+      +------------+  |
    |  |  Stage 1  |---->|   Stage 2  |----->|   Stage 3  |  |
    |  +-----------+     +------------+      +------------+  |
    |                                                        |
    +--------------------------------------------------------+
    
  • Jobsは構築作業を表し、あるステージで実行された作業を表す.Stagesで複数のJobsを定義できます.これらのJobsには、
  • という特徴があります.
  • 同じステージのJobsは
  • を並列に実行します.
  • 同じステージのJobsが成功した場合、そのステージは
  • に成功します.
  • ジョブのいずれかが失敗した場合、ステージは失敗する.すなわち、Pipelineは
  • に失敗する.
    JobsとStageの関係図は次のとおりです.
    +------------------------------------------+
    |                                          |
    |  Stage 1                                 |
    |                                          |
    |  +---------+  +---------+  +---------+   |
    |  |  Job 1  |  |  Job 2  |  |  Job 3  |   |
    |  +---------+  +---------+  +---------+   |
    |                                          |
    +------------------------------------------+
    

    3.gitlab-ci.ymlファイルの作成
    使用例:
    ########################          ###########################
    stages:
      - install_deps
      - test
      - build
      - deploy_test
      - deploy_production
    
    #    
    cache:
      key: ${CI_BUILD_REF_NAME}
      paths:
        - node_modules/
        - dist/
        
    ######################## job ###########################
    #     
    install_deps:
      stage: install_deps
      only:
        - develop
        - master
      script:
        - npm install
    
    ######################## job ###########################
    #       
    test:
      stage: test
      only:
        - develop
        - master
      script:
        - npm run test
    
    ######################## job ###########################
    #   
    build:
      stage: build
      only:
        - develop
        - master
      script:
        - npm run clean
        - npm run build:client
        - npm run build:server
    
    ######################## job ###########################
    #        
    deploy_test:
      stage: deploy_test
      only:
        - develop
      script:
        - pm2 delete app || true
        - pm2 start app.js --name app
    
    ######################## job ###########################
    #        
    deploy_production:
      stage: deploy_production
      only:
        - master
      script:
        - bash scripts/deploy/deploy.sh
    

    各jobでよく使われるいくつかのキーワード
    キーワード
    必要かどうか
    説明
    script
    Y
    Runnerによって実行されるスクリプトコマンドをいくつか定義します
    stage
    N
    jobを定義するフェーズ
    before_script
    N
    jobが実行する前に実行するコマンドを定義します
    after_script
    N
    ジョブの実行後に実行されるコマンドを定義します.
    variables
    N
    変数の定義
    cache
    N
    キャッシュするファイルの定義
    only
    N
    作業を構築するブランチの定義
    except
    N
    作業を構築する必要がないブランチの定義
    when
    N
    次のフェーズを実行する方法を定義します.パラメータは:on_success、 on_Failure、always、manual(手動)
    参照先:
    http://scarletsky.github.io/2016/07/29/use-gitlab-ci-for-continuous-integration/
    https://docs.gitlab.com/ce/ci/yaml/README.html#cache