Gitlab Runner的安裝使用

GitLab-Runner 的安裝(Docker)

官方文檔

1. 下載 gitlab-runner 鏡像

docker pull gitlab-runner

2. 啓動容器

docker run --rm -t -i --name gitlab-runner -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
 gitlab/gitlab-runner register

# 進行註冊,這一步的信息能夠在 gitlab 項目的 setting->ci/cd->runner中找到
## 第一步:填寫gitlab服務器地址
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com

## 第二步:填寫你的訪問token
Please enter the gitlab-ci token for this runner
xxx

## 第三步:描述信息
Please enter the gitlab-ci description for this runner
my-runner

## 第四步:該 runner 的標籤,可在 .gitlab-ci.yml 文件中使用指令 tags 使用,指定任務運行在特定的標記 tag 的服務器中
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag

## 第五步:選擇執行環境
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker

## 第六步:選擇 excutor 的執行鏡像
Please enter the Docker image (eg. ruby:2.1):
maven:3.3.9-jdk-8

3. gitlab runner 進行相關配置

咱們啓動gitlab runner 時,掛載了一個 /srv/gitlab-runner/config:/etc/gitlab-runner 的 volume,裏面有 gitlab-runner的配置文件 config.tomljava

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "t"st
  url = "https://gitlab.com/"
  token = "xxxxxxx"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.docker]
    tls_verify = false
    image = "maven:3.3.9-jdk-8"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache", "/root/.m2:/root/.m2:rw"]
    shm_size = 0
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

因爲每次構建,gitlab runner 都會運行一個全新的 excutor,因此爲避免每次構建時,excutor 都去線上下載依賴包,這裏咱們爲 excutor 配置掛載了本地的 /root/.m2:/root/.m2。但因爲 excutor 的鏡像爲maven:x.x.x-jdk,他默認的maven repository 在 /usr/share/maven/ref/repository, 因此咱們須要更改 excuter 或 本地中的/root/.m2/docker-setting.xml文件,把 <localRepository>中的值改成 /root/.m2/repositorygit

若是你的 java 項目須要打包成 docker 鏡像,則還須要在 volumes 中配置掛載本地 docker.sock,如 /var/run/docker.sock:/var/run/docker, 則 executor 的鏡像構建成果會出如今本機中,在 config.toml 的文件中

Gitlab Runner Cache

還有一種避免每次下載依賴包的方法,就是使用 gitlab runner cachedocker

使用cache時,須要在 .gitlab-ci.yml 文件中使用指令 cache,如:shell

image: maven:3.3.9-jdk-8

cache:
  key: maven-repository-cache
  paths:
    - .m2

variables:
  MAVEN_OPTS: "-Dmaven.repo.local=.m2"
 
stages:
  - build
  
build:
  stage: build
  script:
    - mvn clean install -DskipTests
  tags:
    - test

cache 位於 excutor 的 /cache 文件夾下,使用時咱們須要指定 path 和 key。
當咱們構建時,若是 key 指定的內容不存在,則會構建完成後把 path下的內容打包成 cache.zip
若是剛開始構建時, key 命中,則會使用 path 裏面的內容ruby

cache 中 key 的使用須要注意一些問題,請看 Cache文檔

每次構建完,其產物會保存在 excutor 的/build文件夾下bash

相關文章
相關標籤/搜索