環境:ubuntu 16.04 LTS
目的:使用Docker安裝和配置GitLab Runner,搭建GitLab CI持續集成環境。node
$ docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
參數說明:git
安裝好後,執行$ docker ps
查看容器是否運行。docker
$ docker exec -it gitlab-runner gitlab-ci-multi-runner register
gitlab-runner register
是進入gitlab-runner
容器的執行命令,用於註冊和初始化gitlab-runner
。
如下是個人配置:注意
:docker image爲知足你項目構建所需環境的鏡像。npm
咱們也能夠編輯vim /srv/gitlab-runner/config/config.toml
,手動修改配置:json
concurrent = 1 check_interval = 0 [[runners]] name = "test" url = "https://xxxx.oooo.com" token = "3894a417b64744e942008bcc51123a" executor = "docker" builds_dir = "/gitlab/runner-builds" cache_dir = "/gitlab/runner-cache" [runners.docker] tls_verify = false image = "node:latest" privileged = false disable_cache = false volumes = ["/data/gitlab-runner:/gitlab"] shm_size = 0 pull_policy = "if-not-present" [runners.cache]
gitlab-ci token
能夠從gitlab上的項目的CI設置中得到。builds_dir
爲文件存放位置volumes
掛載目錄pull_policy
設置gitlab是否從遠程拉去image,若是iamge是本地的須要配置該屬性的值爲: if-not-present 或者 neverubuntu
個人項目爲nodejs項目,如下爲測試配置。vim
stages: - install cache: key: ${CI_BUILD_REF_NAME} paths: - node_modules/ job-install: stage: install script: - whoami - echo $SHELL - rm -rf node_modules/ - pwd - source ~/.bashrc - nvm use 8 - node -v - yarn only: - preview tags: - test
配置好gitlab-ci文件以後,提交修改,並將最新的修改推送到origin/preview分支,便可觸發CI:api
Running with gitlab-runner 10.2.0 (0a75cdd1) on test (3894a417) Using Docker executor with image followme/node:v1 ... Using docker image sha256:07e33b24b6a9bebc0e0d8ba24f15b4b3c0f6fcf321a3809371a6211ac1afc38e for predefined container... Using locally found image version due to if-not-present pull policy Using docker image followme/node:v1 ID=sha256:c99c549e8227e2323d1cebb6f988d5d8f6de7f77e1967fe0f02878b85cb72b0f for build container... Running on runner-3894a417-project-643-concurrent-0 via 304e3efed168... Cloning repository... Cloning into '/gitlab/runner-builds/3894a417/0/Frontend/api-member'... Checking out 311e85cb as preview... Skipping Git submodules setup Checking cache for preview... Successfully extracted cache $ whoami root $ echo $SHELL /bin/bash $ rm -rf node_modules/ $ pwd /gitlab/runner-builds/3894a417/0/Frontend/api-member $ source ~/.bashrc $ nvm use 8 Now using node v8.3.0 (npm v5.3.0) $ node -v v8.3.0 $ yarn yarn install v1.3.2 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... Done in 7.21s. Creating cache preview... node_modules/: found 5627 matching files Created cache Job succeeded
注意:以前我是在Ubuntu14.04版本的系統上作這些配置,可是當執行CI的時候總會遇到如下報錯:
ERROR: Preparation failed: Error reading remote info: json: cannot unmarshal number into Go struct field Info.Debug of type bool
bash將系統升級爲16.04後解決該問題gitlab