欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用Docker安装Jenkins并添加插件

程序员文章站 2022-06-15 09:30:09
...

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项目,填写项目名,选择项目类型,即可创建。
使用Docker安装Jenkins并添加插件
创建完,进入项目,点击设置,进行配置:
使用Docker安装Jenkins并添加插件

源码管理

配置自动构建,一般可配置github或gitlab的webhook为触发条件。也就是当我们push项目时,Jenkins自动帮我们自动测试与构建。当然也可以自动部署,视情况而定。
首先要配置源码管理,这里以git为例:
选择git,配置Repository URL,就是我们的git项目地址。
然后一定要配置证书,证书可配置ssh连接的,或账号密码的,你个人选择。
我是使用账号密码的,注意要填写你登录git的账号密码,不对会连接不上。
使用Docker安装Jenkins并添加插件

构建触发器

步骤如下:
勾选 Build when a change is pushed to GitLab. GitLab webhook URL: http://jenkins.ss.com/project/
如果需要加密,可要点击高级,填写Secret token,然后这个token要与webhook上的一致。
使用Docker安装Jenkins并添加插件

其它功能

Pre Steps是执行构建前做的操作,有众多选项,因为我是构建中linux环境的,一般都选Shell。
应用场景:如springboot的替换生产环境。
Builds是执行构建操作,一般无需配置,Maven项目默认构建pom.xml,其它视情况而定。
Post Steps是构建完后执行的操作。也有众多选项,我也是用的shell,一般此选项可用来做部署。

额外配置

假如你安装jenkins时,是使用docker镜像安装的,那么如果你要在jenkins里面使用docker的话,你还需做以下步骤:

  1. 在构建Jenkins镜像时,将jenkins用户加入docker组,
FROM jenkins/jenkins:latest
LABEL maintainer="aaa@qq.com"
USER root
ARG dockerGid=999
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
USER jenkins
  1. 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
角色权限

相关标签: Jenkins