首先服務器要安裝gitlab
gitlab服務器如果低於9.0版本,gitlab-runner要選低版本
這裏gitlab 版本 8.8.0, gitlab-runner版本 v1.11.1
gitlab安裝不多做敘述,安裝gitlab-runner
這裏有個重要的,如果是docker部署的gitlab,宿主機端口如果映射的不是80,則需更改環境external_url=域名,否則會報以下錯誤
端口已經改了不是80了
fatal: unable to access 'http://gitlab-ci-token:[email protected]/dlh/citest.git/': Failed to connect to 47.94.156.123 port 80: Connection refused
創建工作目錄 /usr/local/docker/runner
創建構建目錄 /usr/local/docker/runner/environment
下載 jdk-8u11-linux-x64.tar.gz 並複製到 /usr/local/docker/runner/environment
下載 apache-maven-3.6.1-bin.tar.gz 並複製到 /usr/local/docker/runner/environment
在 /usr/local/docker/runner/environment 目錄下創建 Dockerfile,安裝jdk還有maven到容器裏
這裏使用的gitlab版本爲8.8.0社區版,gitlab-runner只能使用2.0以下的版本
FROM gitlab/gitlab-runner:v1.11.1
MAINTAINER dlh [email protected]
# 安裝 Java
RUN mkdir -p /usr/local/java
WORKDIR /usr/local/java
COPY jdk-8u11-linux-x64.tar.gz /usr/local/java
RUN tar -zxvf jdk-8u11-linux-x64.tar.gz && \
rm -fr jdk-8u11-linux-x64.tar.gz
# 安裝 Maven
RUN mkdir -p /usr/local/maven
WORKDIR /usr/local/maven
# RUN wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz
COPY apache-maven-3.6.1-bin.tar.gz /usr/local/maven
RUN tar -zxvf apache-maven-3.6.1-bin.tar.gz && \
rm -fr apache-maven-3.6.1-bin.tar.gz
# COPY settings.xml /usr/local/maven/apache-maven-3.6.1/conf/settings.xml
# 配置環境變量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_11
ENV MAVEN_HOME /usr/local/maven/apache-maven-3.6.1
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
WORKDIR /
在 /usr/local/docker/runner 目錄下創建 docker-compose.yml
version: '3.1'
services:
gitlab-runner:
build: environment
restart: always
container_name: gitlab-runner
privileged: true
volumes:
- ./config:/etc/gitlab-runner
# 映射docker命令
- /var/run/docker.sock:/var/run/docker.sock
- /bin/docker:/bin/docker
執行docker-compose -f docker-compose.yml up -d
查詢正在運行的容器
docker ps
進入到容器裏
docker exec -it 0be3ea7795b1 bash
設置maven變量到系統配置
vi /etc/profile
加上
export PATH=$PATH:$MAVEN_HOME/bin
然後 source /etc/profile
這一步很重要
// 進入容器 進行gitlab-runner 註冊
root@0be3ea7795b1:/# gitlab-runner register
執行完後會有提示,輸入幾個內容
這個鏈接在 gitlab設置裏的runner裏有
步驟
輸入Gitlab CI地址 http://47.94.156.123:8099
輸入項目Gitlab CI token HMgHedsyRsd9LySEDQjH
輸入Gitlab Runner描述 ci-test
輸入Gitlab Runner標籤 test-tag
輸入Gitlab Runner執行的語言 shell
root@44914cf556e1:/# gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://47.94.156.123:8099
Please enter the gitlab-ci token for this runner:
HMgHedsyRsd9LySEDQjH
Please enter the gitlab-ci description for this runner:
[44914cf556e1]: gitlab-rn^Hunner-test2
Please enter the gitlab-ci tags for this runner (comma separated):
git-test1
Whether to run untagged builds [true/false]:
[false]: true
Registering runner... succeeded runner=HMgHedsy
Please enter the executor: docker, docker-ssh, parallels, shell, docker-ssh+machine, kubernetes, ssh, virtualbox, docker+machine:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
.gitlab-ci.yml文件放在項目根目錄下
在gitlab上,gitlab-runner執行ci報錯fatal: unable to access 'http://gitlab-ci-token:xxxxxx@ip/xxx/citest.git
gitlab爲8.x版本的會這樣,如果是docker部署的gitlab,宿主機端口如果映射的不是80,則需更改環境external_url=域名,否則會報以下錯誤
fatal: unable to access 'http://gitlab-ci-token:xxxxxx@ip/xxx/citest.git/': Failed to connect to xx.xx.xx.xxx port 80: Connection refused
gitlab爲8.x以上的版本,在創建runner的時候,用交互式去創建
gitlab-runner register -n \
--url http://xxxxxx/ci/ \
--registration-token xxxx \
--executor docker \
--description "runner1" \
--docker-image "docker:stable" \
--clone-url http://xxxxx
加上clone-url參數
或者在/etc/gitlab-runner/config.toml文件裏
[[runners]]
name = "test11"
url = "http://xxxx"
token = "xxxx"
executor = "docker"
#加上這個clone_url 參數,指定 url
clone_url = "xxx"
[runners.docker]
tls_verify = false
image = "docker:stable"
privileged = false
disable_cache = false
volumes = ["/cache"]
[runners.cache]
參考文章
作者:擼帝
鏈接:https://www.jianshu.com/p/2a0f1e109c71
來源:簡書