web-dev-qa-db-ja.com

GitLab CIを使用して、テストをローカルで実行しますか?

GitLabプロジェクトがGitLab CIで構成されている場合、ビルドをローカルで実行する方法はありますか?

私はラップトップをビルドの「ランナー」にしたくありません。Dockerと.gitlab-ci.ymlを利用して、テストをローカルで実行します(つまり、すべて事前に構成されています)。もう1つの利点は、ローカルおよびCIで同じ環境を使用していると確信していることです。

Dockerを使用してTravisビルドをローカルで実行する方法 の例を次に示します。GitLabと似たようなものを探しています。

51
Matthieu Napoli

数か月前からgitlab-runnerを使用してこれを行うことができます。

gitlab-runner exec docker my-job-name

これを機能させるには、コンピューターに dockergitlab-runner の両方をインストールする必要があることに注意してください。

.gitlab-ci.ymlファイルで定義されているimageキーも必要です。そうでなければ動作しません。

gitlab-runnerを使用してローカルでテストするために現在使用している行は次のとおりです。

gitlab-runner exec docker test --docker-volumes "/home/elboletaire/.ssh/id_rsa:/root/.ssh/id_rsa:ro"

編集:--docker-volumesにデフォルトで設定されているキーで/etc/gitlab-runner/config.tomlを追加することを避けることができます。 詳細については公式ドキュメントを参照

コメントの混乱のため、gitlab-runner --helpの結果をここに貼り付けたので、gitlab-runnerがローカルでビルドできることがわかります。

   gitlab-runner --help
NAME:
   gitlab-runner - a GitLab Runner

USAGE:
   gitlab-runner [global options] command [command options] [arguments...]

VERSION:
   1.1.0~beta.135.g24365ee (24365ee)

AUTHOR(S):
   Kamil Trzciński <[email protected]> 

COMMANDS:
   exec         execute a build locally
   list         List all configured runners
   run          run multi runner service
   register     register a new runner
   install      install service
   uninstall        uninstall service
   start        start service
   stop         stop service
   restart      restart service
   status       get status of a service
   run-single       start single runner
   unregister       unregister specific runner
   verify       verify all registered runners
   artifacts-downloader download and extract build artifacts (internal)
   artifacts-uploader   create and upload build artifacts (internal)
   cache-archiver   create and upload cache artifacts (internal)
   cache-extractor  download and extract cache artifacts (internal)
   help, h      Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --debug          debug mode [$DEBUG]
   --log-level, -l "info"   Log level (options: debug, info, warn, error, fatal, panic)
   --cpuprofile         write cpu profile to file [$CPU_PROFILE]
   --help, -h           show help
   --version, -v        print the version

ご覧のとおり、execコマンドはexecute a build locallyです。

このプロセスは、独自のマシンを使用して、Dockerコンテナを使用してテストを実行することに注意してください。このは、カスタムランナーを定義するためではありません。これを行うには、レポのCI/CD設定に移動し、そこでドキュメントを読んでください。 gitlab.comのランナーの代わりにランナーを実行したい場合は、ランナーにカスタムの一意のタグを追加し、タグ付きジョブのみを実行し、ランナーに責任のあるすべてのジョブにタグを付けます。

55
elboletaire

Dockerイメージを使用してGitlabを実行している場合: https://hub.docker.com/r/gitlab/gitlab-ce 、ローカルdocker.sockを公開することでパイプラインを実行することができますボリュームオプション:-v /var/run/docker.sock:/var/run/docker.sock。このオプションをGitlabコンテナーに追加すると、ワーカーはホスト上のdockerインスタンスにアクセスできます。

2
Pierco

GitLabランナーはWindowsではまだ動作していないようで、 これを解決するための未解決の問題 があります。

そのため、当面はスクリプトコードをbashスクリプトに移動します。これを簡単に dockerコンテナーにマップ ローカルで実行して実行できます。

この場合、仕事でdockerコンテナーを構築したいので、スクリプト 'build'を作成します。

#!/bin/bash

docker build --pull -t myimage:myversion .

.gitlab-ci.yamlでスクリプトを実行します。

image: docker:latest

services:
- docker:dind

before_script:
- apk add bash

build:
stage: build
script:
- chmod 755 build
- build

Powershellを使用してローカルでスクリプトを実行するには、必要なイメージを開始し、ソースファイルでボリュームをマップします。

$containerId = docker run --privileged -d -v ${PWD}:/src docker:dind

存在しない場合はbashをインストールします。

docker exec $containerId apk add bash

Bashスクリプトにアクセス許可を設定します。

docker exec -it $containerId chmod 755 /src/build

スクリプトを実行します。

docker exec -it --workdir /src $containerId bash -c 'build'

次に、コンテナを停止します。

docker stop $containerId

最後に、コンテナをクリーンアップします。

docker container rm $containerId
0
Glen Thomas