官方文檔
docker pull gitlab-runner
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
咱們啓動gitlab runner 時,掛載了一個 /srv/gitlab-runner/config:/etc/gitlab-runner
的 volume,裏面有 gitlab-runner的配置文件 config.toml
java
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/repository
git
若是你的 java 項目須要打包成 docker 鏡像,則還須要在 volumes 中配置掛載本地 docker.sock,如
/var/run/docker.sock:/var/run/docker
, 則 executor 的鏡像構建成果會出如今本機中,在 config.toml 的文件中
還有一種避免每次下載依賴包的方法,就是使用 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