简介
Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
环境构建
docker安装Jenkins
环境配置
第一次使用 Jenkins,您需要:
机器要求:
- 256 MB 内存,建议大于 512 MB
- 10 GB 的硬盘空间(用于 Jenkins 和 Docker 镜像)
需要安装以下软件:
- Java 8 ( JRE 或者 JDK 都可以)
- Docker (导航到网站顶部的Get Docker链接以访问适合您平台的Docker下载)
docker的安装这里不多做描述,可以自行百度或者google。
docker的方式安装Jenkins
运行下面的命令直接启动Jenkins
docker run \
-u root \
--name jenkins \
-d \
--restart always \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
命令解释:
- -u root 是使用root账户,如果不加这个,则默认使用Jenkins账户
- -d 后台运行容器
- --restart always 可以让Jenkins自动重启
- -p 8080:8080映射访问端口
- -p 50000:50000映射节点机通信端口
- -v jenkins-data:/var/jenkins_home 挂载数据卷,如果不使用数据卷的方式,也可以直接映射到本地磁盘。像这样
-v $HOME/jenkins:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
挂载docker到容器,实现docker in docker,这样在容器中的Jenkins就可以使用docker命令
首次登陆Jenkins
第一次访问Jenkins需要一个自动生成的密码来解锁,这个密码可以通过查看容器日志来获取.
使用如下命令查看容器日志:
docker logs -f jenkins

安装插件
由于Jenkins的插件源默认是在国外的,国内下载会出现超时等无法下载的情况,所以需要加上一个国内源实现加速下载。方法如下:
进入:系统管理 / 管理插件 / 高级 ,在 Update Site 中填入华为镜像源https://repo.huaweicloud.com/jenkins/update-center.json
设置完镜像源之后,就可以直接可选插件中,安装想要安装的插件了。常用的会需要安装maven、gradle、git、sonar等插件,需要自行安装。
项目接入-私有 Git 仓库帐号配置(通用版)
配置ssh凭据
在linux中生成一个ssh-key。使用命令ssh-keygen
,然后一路回车即可生成2个文件,其中
公钥内容在 ~/.ssh/id_rsa.pub
私有内容在 ~/.ssh/id_rsa
将公钥导入到gitlab或者GitHub的SSH 密钥中。
然后将私钥导入到Jenkins的凭据中,方法如下:
在 Jenkins ->Credentials->System--> Add credentials 新增一个凭据。选择SSH Username with private key
将私钥的内容完整的复制到里面,并且设置好git的用户名
如果不想像上面那样配置ssh-key,也可以直接配置账户密码。
添加一个项目(多分支流水线)
创建一个流水线
在主页,点击Blue Ocean,然后创建一个流水线。选择git。按照步骤输入git地址,注意这里需要使用git协议的地址,而不是http协议的。
然后复制里面给出的Jenkins公钥到git的SSH 密钥中。这里不使用上面配置的凭据,因为这里会自动生成一个给你。
配置好了之后,就可以手动编写流水线了。
设置代理,代理就是运行程序的节点,可以是docker,可以是k8s,也可以是指定的虚拟机或者物理机。设置成any,则是所有的节点都可以运行。然后设置一些环境变量。
第一步构建程序
设置好了环境之后,第一步就是编译。
新建一个shell脚本,然后输入maven的build命令(其他的程序构建则需要对应的构建命令和构建环境)
第二步扫描代码
扫描代码使用的命令可以查看我上一篇文章里面的sonarqube代码扫描,然后新建一个shell脚本步骤,写入命令即可
构建docker镜像(不需要构建docker镜像的可以省略)
这一步是从使用项目中的dockerfile文件,构建一个docker镜像,并上传到harbor中(关于部署和harbor的使用可以看之前的文章)。先新建一个pipeline scrip,然后输入如下代码。
def customImage = docker.build("harbor.com.cn/${HAR_NAME}/${JOB_NAME}:${env.GIT_BRANCH}-${env.BUILD_NUMBER}")
withDockerRegistry(credentialsId: 'har-test', url: 'http://harbor.com.cn') {
customImage.push("${env.GIT_BRANCH}-${env.BUILD_NUMBER}")
customImage.push("latest")
}
上面的命令解释:
- 使用docker build 构建一个符合harbor命名规则的镜像,其中{JOB_NAME}为系统自带的环境变量,{env.BUILD_NUMBER}为系统自带的环境变量,可以用与生成本次构建的唯一tag
- withDockerRegistry命令为使用harbor的命令,使用harbor的登陆凭据为har-test,需要先在Jenkins的凭据中自己添加好。
- customImage.push命令为推送镜像到harbor,后面跟的是镜像的标签
其他构建流程
更详细的构建流程和pipeline文件编写,可以参考官网的中文教程。Jenkins教程
pipeline 文件编写
可以根据上面的官网教程,编写一个Jenkinsfile文件在项目中,这样在使用blue ocean创建多分支流水线的时候,会自动读取项目中的Jenkinsfile文件中的pipeline脚本。具体编写就不在这里列举了。
Jenkins换皮肤
打开css生成网址jenkins-material-theme 选择你喜欢的风格,生成css
Jenkins中安装Jenkins Simple Theme Plugin插件,然后再系统设置中找到Theme设置,把css复制进去,保存即可改变Jenkins的原生界面
Jenkins添加节点机
在系统管理中选择节点管理,选择添加一个节点
添加完成之后,点击添加后的节点,然后点击relaunch agent,等会就自动连接好了,如果提示找不到Java,则是节点需要安装好Java,或者在添加节点的时候设置好Java_home