使用Docker安装Jenkins并添加插件

版权声明: https://blog.csdn.net/qq_39211866/article/details/80878369

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项目,填写项目名,选择项目类型,即可创建。
image
创建完,进入项目,点击设置,进行配置:
image

源码管理

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

构建触发器

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

其它功能

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="[email protected]"
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
角色权限

猜你喜欢

转载自blog.csdn.net/qq_39211866/article/details/80878369