Jenkins使用记录
利用docker安装Jenkins
拉取jenkins镜像
docker pull jenkins
挂载目录到宿主机,例如使用/var/jenkins_home,需要给目录设置访问权限
chown -R 1000 /var/jenkins_home
启动。 使用 root 账号进行登录,暴露端口 8080,tcp 端口50000
docker run -u root -itd --name jenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home jenkins
根据指导完成注册
安装插件:
Publish Over SSH
maven plugin
SSH plugin
Maven Integration plugin
Docker plugin
注意:jenkins是基于jdk环境的,所以在系统管理中,要配置全局工具配置,进行JDK安装和Maven的安装,可直接自动安装。
使用过程:
创建项目
这里以Maven项目为例,先新建任务,之前配置了Maven Integration plugin,所以多了一个maven项目,填写项目名,选择项目类型,即可创建。
创建完,进入项目,点击设置,进行配置:
源码管理
配置自动构建,一般可配置github或gitlab的webhook为触发条件。也就是当我们push项目时,Jenkins自动帮我们自动测试与构建。当然也可以自动部署,视情况而定。
首先要配置源码管理,这里以git为例:
选择git,配置Repository URL,就是我们的git项目地址。
然后一定要配置证书,证书可配置ssh连接的,或账号密码的,你个人选择。
我是使用账号密码的,注意要填写你登录git的账号密码,不对会连接不上。
构建触发器
步骤如下:
勾选 Build when a change is pushed to GitLab. GitLab webhook URL: http://jenkins.ss.com/project/…
如果需要加密,可要点击高级,填写Secret token,然后这个token要与webhook上的一致。
其它功能
Pre Steps是执行构建前做的操作,有众多选项,因为我是构建中linux环境的,一般都选Shell。
应用场景:如springboot的替换生产环境。
Builds是执行构建操作,一般无需配置,Maven项目默认构建pom.xml,其它视情况而定。
Post Steps是构建完后执行的操作。也有众多选项,我也是用的shell,一般此选项可用来做部署。
额外配置
假如你安装jenkins时,是使用docker镜像安装的,那么如果你要在jenkins里面使用docker的话,你还需做以下步骤:
- 在构建Jenkins镜像时,将jenkins用户加入docker组,
FROM jenkins/jenkins:latest
LABEL maintainer="911858173@qq.com"
USER root
ARG dockerGid=999
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
USER jenkins
- docker启动jenkins容器时,将docker的文件挂载进去,分别是:
-v /var/run/docker.sock:/var/run/docker.sock
-v $(which docker):/usr/bin/docker
命令:
docker run -d --name myjenkins -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -p 8080:8080 myname/jenkins:1.609.1
注意: 可能会出现一种情况,以上面的方式启动容器后,还是无法用docker命令,报 找不到某些library,如:
docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory
原因是jenkins容器内部没有这个包,解决的办法有两个:
- 将容器宿主机的包映射到容器内:
#省略了其他docker运行参数,只列出了缺少的包映射volume
$ docker run --name jenkins -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -d my-jenkins
如果没有libltdl.so.7文件,可进行下载,apt-get install -y libltdl7
- 对jenkins镜像进行封装,官方的jenkins镜像是基于debian jessie的,dockerfile最好把源切换成国内的。Dockerfile内容如下:
FROM jenkins
USER root
#清除了基础镜像设置的源,切换成阿里云的jessie源
RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list \
&& echo "deb http://mirrors.aliyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list \
&& echo "deb http://mirrors.aliyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list \
&& echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
#更新源并安装缺少的包
RUN apt-get update && apt-get install -y libltdl7
ARG dockerGid=999
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group \
USER jenkins
role权限管理,对不同的角色可授予不同权限。
最终挂载:
volumes:
- '/var/jenkins_home:/var/jenkins_home'
- '/var/run/docker.sock:/var/run/docker.sock'
- '/usr/bin/docker:/usr/bin/docker'
- '/usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7'
- '/etc/localtime:/etc/localtime'
- '/etc/timezone:/etc/timezone'
参考链接:
https://segmentfault.com/a/1190000010233185
https://my.oschina.net/donhui/blog/478514
https://www.cnblogs.com/leolztang/p/6934694.html
角色权限