博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
centos安装Gitlab Runner
阅读量:6201 次
发布时间:2019-06-21

本文共 3779 字,大约阅读时间需要 12 分钟。

  hot3.png

参考网站:https://docs.gitlab.com/runner/install/linux-repository.html

https://docs.gitlab.com/runner/register/index.html

1、添加官方gitlab官方仓库???这一步操作不明白什么意思,反正安装官网来先。

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

2、安装最新版本的gitlab runner,当然,也可以安装特定版本,参照官方连接

yum install gitlab-runner

3、然后就可以注册信息到gitlab了。

gitlab-runner register

输入后会让你输入gitlab ci 协调者的url,这个是需要在安装的gitlab上面找的,步骤:设置=>Overview=>Runners然后就可以看到了,参考下图

d7724e32c573babb8d960598a3cf553b086.jpg

50cb3ee42111895637c6333113471b130ae.jpg

4、然后让你输入token,这里也看的到。

5、再然后让你输入gitlab-ci runner的描述信息,自己看着填吧,以后也可以在gitlab页面上进行修改

6、然后添加一个tag,以后也可以在页面修改,也可以不输入调过去

7、选择executor运行方式,官网使用的docker,其他教程都选择shell,选择docker需要选择一个镜像什么的,我使用shell

14158d8ed5d22fc6647d931dcba0e8a5505.jpg

这样就算是完成了,然后你可以在gitlab上面看到这个runner,设置=>Overview=>Runners,runner有公有还私有的区别。

然后我写一个.gitlab-ci.yml文件在项目跟目录提交测试下情况。

stages:- deploydeploy:  stage: deploy  script:  - cat /etc/redhat-release  only:  - master  tags:  - testtag1

可以在仓库中看CI job执行的情况,进入你项目的仓库,按照左侧菜单展开,即可看到执行的任务,红框圈的按钮点击可以校验你的.gitlab-ci.yml文件的正确性。

5e803290c1718193b24b93a2317727d6a97.jpg

选择其中一个pipeline点击进去,可以看到执行的效果,如下图所示。

723803f169a1493e2ad56642ace757735aa.jpg

8c9b2e2f5223f996b96873967b3196a4ba1.jpg

 

关键字 是否必须 描述
script 必须 定义Runner需要执行的脚本或命令
image 非必须 需要使用的docker镜像,请查阅
services 非必须 定义了所需的docker服务,请查阅
stage 非必须 定义了工作的场景阶段,默认是test
type 非必须 stage的别名,不赞成使用
variables 非必须 在job级别上定义的变量
only 非必须 定义哪些git引用(分支)适用该job
except 非必须 定义了哪些git引用(分支)不适用该job
tags 非必须 定义了哪些runner适用该job(runner在创建时会要求用户输入标签名来代表该runner)
allow_failure 非必须 允许任务失败,但是如果失败,将不会改变提交状态
when 非必须 定义job什么时候能被执行,可以是on_success,on_failure,always或者manual
dependencies 非必须 定义了该job依赖哪一个job,如果设置该项,你可以通过artifacts设置
artifacts 非必须 所谓工件。。就是在依赖项之间传递的东西,类似cache,但原理与cache不同
cache 非必须 定义需要被缓存的文件、文件夹列表
before_script 非必须 覆盖在根元素上定义的before_script
after_script 非必须 覆盖在根元素上定义的after_script
environment 非必须 定义让job完成部署的环境名称
retry 非必须 定义job失败后的自动重试次数

其中有些配置加入我自己的理解:

下面这个artifacts配置项意思就是,将生成的jar包上传到gitlab上面,可以用gitlab ui上面显示,并下载。

artifacts:  paths:  - target/aa.jar

d2c9345db7275e79455df6056ead15811d1.jpg

 

踩坑:

1、注意编写.gitlab-ci.yml文件“-”符号后面一定得加个空格,不然命令会报错,虽然输出控制台显示正确命令,但是执行是不成功的。

2、代码推送到gitlab上之后,一直是pending状态,要等很久才pick到一个runner来执行,这个现象一般是只在gitlab上删除的runner,但是没有在runner的配置文件中删除对应的配置信息,手动删除即可。/etc/gitlab-runner.config.toml,删除只剩下你需要的即可,然后重新启动下runner:gitlab-ruuner restart

b4905c4c6e9d330c24d9fce6524cb43f13f.jpg

3、我在.gitlab-ci.yml文件中写了一段执行docker打包镜像的脚本,执行的时候总是出问题说是没有权限执行。

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.26/build?buildargs=%7B%7D&buildbinds=null&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=overduestatic&ulimits=null: dial unix /var/run/docker.sock: connect: permission denied

然后我在前面步骤写了一个脚本,拿到runner的用户是那个命令(whoami),然后赋予该用户权限。

sudo groupadd docker

sudo gpasswd -a gitlab-runner docker
sudo service docker restart(或者systemctl start docker)

据说这样就可以了,但是我这里还是不行,继续找资料,说给docker软件赋权限那么试一试吧:chmod a+rw /var/run/docker.sock

虽然还报错,但是不再是权限问题了。

container_linux.go:247: starting container process caused "chdir to cwd (\"/dockerdir\") set in config.json failed: not a directory"

这个问题,是我自己写的脚本问题。我自己研究,正常到这里都可以执行了。

 

最后贴一下我的Dockerfile和.gitlab-ci.yml文件内容,第一个是Dockerfile,第二个是.gitlab-ci.yml

FROM openjdkADD target/overduestatic.jar /dockerdir/overduestatic.jarWORKDIR /dockerdirCMD ["java","-jar","/dockerdir/overduestatic.jar"]
stages:- test- build- dockertest1:  stage: test  script:  - cat /etc/redhat-release  - whoami  only:  - master  tags:  - testtag1build2:  stage: build  tags:  - testtag1  only:  - master  script:  - mvn package  artifacts:    paths:    - target/overduestatic.jardocker3:  stage: docker  tags:  - testtag1  only:  - master  script:  - docker build -t overduestatic .

 

.gitlab-ci.yml参考地址:

https://docs.gitlab.com/ce/ci/yaml/README.html

https://segmentfault.com/a/1190000011890710

https://blog.csdn.net/ujm097/article/details/80794740

 

转载于:https://my.oschina.net/uwith/blog/2243372

你可能感兴趣的文章
Snap一季度财报成大考?新广告系统是否有效、营收是否达标
查看>>
《可穿戴创意设计:技术与时尚的融合》一一3.3 纺织与教育
查看>>
开源 RISC-V CPU挑战闭源 x86 和 ARM CPU
查看>>
《Scala机器学习》一一3.7 总结
查看>>
量子通信和大数据最有市场突破前景
查看>>
我国5G处于从技术到标准化过渡阶段
查看>>
2020年全球ESL市场规模将增长到200亿
查看>>
Gartner:企业在移动应用研发上的投入过少
查看>>
思科公司提出监测数据中心的计划
查看>>
Salesforce斥资7亿美元收购营销数据初创企业Krux
查看>>
微软推出Windows Hello 或将帮助用户摆脱密码
查看>>
docker部署spring cloud项目
查看>>
华尔街分析师:苹果将陷入长达10年瓶颈期
查看>>
20年来的管中一窥:FBI究竟是如何窃听你的计算机的?
查看>>
揭秘Pure Storage即将推出的高端阵列
查看>>
管理员权限的凭证安全漏洞
查看>>
大数据产业规划出炉 未来五年复合增长率达30%
查看>>
摩尔定律堪称不死神话: IBM开发5纳米芯片
查看>>
阿里云境外将设数据中心 抢占微软国际市场份额
查看>>
为“华为们”的专利逆袭叫好
查看>>