docker笔记3--配置jenkins
全球领先的开源自动化服务器, Jenkins 提供了数以百计的插件来支持构建、部署和自动化任何项目。Jenkins是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,其工作原理包括: 1)、持续的软件版本发布/测试项目;2)、监控外部调用执行的工作。
1、安装方法
1)下载jenkins的docker镜像
docker pull jenkins
2)新建本地文件 如 jenkins_data用来保存数据
3)启动jenkins,可以通过官方文档设置需要的启动方式,笔者使用的启动命令如下(建议写到shell脚本中):
docker run \
--name myjenkins \
-p 8081:8080 -p 50000:50000 \
-v $PWD/jenkins_data:/var/jenkins_home \
-u 0 \
-d jenkins
启动后,jenkins容器/var/jenkins_home 目录文件都将映射到$PWD/jenkins_data目录中,启动后会生成一个admin用户的密码,密码位置在 jenkins_data/secrets/initialAdminPassword中;
dockerhub安装文档:https://hub.docker.com/_/jenkins/
4)注意:使用dockerhub中的启动命令,若将文件映射到本地,必须添加-u 0命令,否则会出现如下错误;
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
这里传入-u 0代表的是root帐号Id,这可以避免读写权限问题
2、使用方法
1)输入http://ip:8081进入主界面,如下图,输入jenkins_data/secrets/initialAdminPassword中的密码即可
2)选择相应插件,不熟悉的话使用默认的即可,后续根据需要自动,如下图
3)输入初始用户信息即可,成功后如图所示:
4)可以使用admin登录,也可以使用自己注册的用户名和密码登录,admin的密码为jenkins_data/secrets/initialAdminPassword中的密码,登录后主界面如下所示:
3、功能说明
1)增删用户
Jenkins默认没有开放注册功能,初始用户只有两个,一个为admin用户,另外一个为初始设置时候的用户,因此在这种情况下可以用已有的用户添加新用户,添加方式为:
系统管理->管理用户->新建用户/删除用户,如下图所示:
4、常见错误
1)docker pull jenkins 报错
报错:
$ docker pull jenkins
Using default tag: latest
Error response from daemon: manifest for jenkins:latest not found: manifest unknown: manifest unknown
原因:
dockerhub 中jenkins没有latest版本,因此pull的时候需要指定具体版本
例如 docker pull jenkins:2.60.3
2) 无法获取插件
笔者安装2.244 版本的Jenkins的时候发现很多插件无法安装,后来发现是版本不兼容导致的,因此将版本升级到最新版本2.299,升级后恢复正常。
3)使用pipeline 案例agent docker 异常
使用官方阿里docker agent执行的时候提示找不到docker,原因为默认jenkins镜像中没有安装docker,因此才会找不到,此时只需将agent更改为any即可顺利执行。
若确实需要使用docker,那么可以在docker中安装docker,或者将本机的docker相关配置挂在到docker中,但是这种方法不安全,一般不推荐。
pipeline {
agent { docker 'python:3.5.1' }
stages {
stage('build') {
steps {
sh 'python --version'
}
}
}
}
可以调整为:
pipeline {
agent any
stages {
stage('build') {
steps {
sh 'python --version'
}
}
}
}
将本机docker直接挂载到jenkins容器中:
docker run -d --name=jenkins -u 0 -p 8080:8080 -p 50000:50000 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /home/xg/soft/jenkins_home:/var/jenkins_home jenkins:2.60.3
参考文档:
[docker jenins](https://forums.docker.com/t/docker-not-found-in-jenkins-pipeline/31683/14)
4)最新版本配置 plugin Update Site 权限问题
由于一般的update-center.json 中的插件访问都有权限,因此需要更新crt文件到var/jenkins_home/war 的相应目录。具体crt一般可以到对应的githb repo里面找到,详情见参考文档。
以下为华为的镜像地址和crt:
https://cdn.jsdelivr.net/gh/lework/jenkins-update-center@master/updates/huawei/update-center.json
https://cdn.jsdelivr.net/gh/lework/jenkins-update-center@master/rootCA/update-center.crt -O war/WEB-INF/update-center-rootCAs/update-center.crt
5、说明
截图系统版本:腾讯云 Ubuntu 16.04 Server (64-bit)
参考文档:
[Jenkins 插件中心国内镜像源发布](https://community.jenkins-zh.cn/t/jenkins/26/17)
[使用国内镜像加速你的jenkins](https://lework.github.io/2020/03/05/jenkins-update-center/)
[Jenkins中文官文--开始使用 Jenkins](https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/)