


gitlabで継続的インテグレーションを設定する
デフォルトでは、hitlabでの継続的統合は無効になっているため、設定で有効にする必要があります。

左側のメニューでプロジェクト設定をオンにすると、いくつかの新しい項目が表示されます。最も興味深いのは「ランナー」です。 hitlabの継続的な統合は次のように機能します。
- リポジトリにプッシュします
- プロジェクトのルートに.gitlab-ci.ymlファイルがある場合、 gitlabはこのプロジェクトに継続的統合が使用されることを理解します。
- Gitlabは、このプロジェクトまたは任意のプロジェクトに接続している実行中のランナーを探しています。 ランナーは、通常は個別のコンピューターで実行され、実際に継続的な統合を実行するアプリケーションです:テストの実行、実行可能ファイルの収集、およびデプロイ。 たとえば、ケシでランナーを実行して、iOS用のアプリケーションを構築できます。 「gitlab public runner」を使用できますが、これらはあまり安全ではなく、通常、着信タスクキューには多くの時間があります。
- Gitlabはyamlファイルをランナーに渡し、ランナーはリポジトリ内のソースを更新し、このファイルに記述されているコマンドを実行します。 コマンドは、たとえばvoximplantクラウドにスクリプトを展開するだけの簡単なものにすることができます。 とても複雑:Dockerコンテナーの起動、プロジェクトのビルド、テストの実行など。
- スクリプトの実行後、ランナーは、対応するコミットの横に表示できる結果をヒットラボに報告します。
gitlab ciランナーをインストールする
この例では、開発者のマシンでランナーを実行します。 windows / linux / osxのインストール手順は、 公式Webサイトで入手できます。インストール後、コマンドラインユーティリティgitlab-ci-multi-runnerを自由に使用できます。 実行中のランナーはhitlabに接続し、ビルドタスクを待ちます。 しかし、gitlabはどのランナーにどのタスクを与えるべきかをどのようにして見つけるのでしょうか? ランナーをアカウントとプロジェクト(または複数のプロジェクト)に「バインド」するには、 登録キーを使用してgitlab-ci-multi-runnerを呼び出し、接続パラメーターを入力する必要があります:url gitlab(gitlabはネットワーク上にローカルにデプロイできるため)および登録トークン、実際には、アカウント/プロジェクトを定義します:

登録されたランナーは、 gitlab-ci-multi-runner runコマンドによって起動され、 gitlabからのタスクを待ちます。 コマンドラインスイッチを使用して、ランナーをインストールして起動 すると、オペレーティングシステムの再起動後に自動的に開始されるように、システムにサービスとして登録できます。
展開のための継続的統合構成
すでに書いたように、継続的な統合タスクは.gitlab-ci.ymlファイルに記述されており、プロジェクトのルートに配置する必要があります。 レアアースYAML構文は、JSONに代わる人間が読める形式の一種であり、ドキュメントは公式Webサイトで入手できます。 プロジェクトをvoximplantにデプロイするための構成ファイルは可能な限りシンプルで、 ドキュメントで説明されているように1つのHTTP API呼び出しを行うだけです。 curlがインストールされているコンピューターでランナーが実行されており、スクリプトコードがScenario.jsファイルにあるという前提に基づいて、展開の構成ファイルは次のようになります(簡略化された例。これは大きくなります。たとえば、api_keyは環境変数に入れるのが適切です) 、 nmikeコメントを参照):
before_script: - npm install stages: - deploy deploy: script: - curl -X POST "https://api.voximplant.com/platform_api/SetScenarioInfo/?account_id=1&api_key=2&required_scenario_name=foo" --data-urlencode scenario_script@scenario.js
CurlはAPIの構文糖を使用します。これは、渡されたurlのクエリコンポーネントとhttpリクエストの本文の両方で引数を取ることができます。
継続的インテグレーションを機能させるには、リポジトリにプッシュするだけで十分です:gitlabは.gitlab-ci.ymlファイルを検出し、接続されたランナーを見つけ、このファイルの内容をそこに転送します。ランナーはリポジトリのコピーを更新し、クラウドにソースコードをアップロードするデプロイメントスクリプトを実行します。
質問、説明、コメントはありますか? Gitlab対Jenkins対Bamboo対Teamcity?