Jenkins的安装(docker)和简单的使用

简介

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

命令解释:

  1. -u root 是使用root账户,如果不加这个,则默认使用Jenkins账户
  2. -d 后台运行容器
  3. --restart always 可以让Jenkins自动重启
  4. -p 8080:8080映射访问端口
  5. -p 50000:50000映射节点机通信端口
  6. -v jenkins-data:/var/jenkins_home 挂载数据卷,如果不使用数据卷的方式,也可以直接映射到本地磁盘。像这样-v $HOME/jenkins:/var/jenkins_home
  7. -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")
                    }

上面的命令解释:

  1. 使用docker build 构建一个符合harbor命名规则的镜像,其中HARNAMEharbor{HAR_NAME}为环境变量中harbor的用户名,{JOB_NAME}为系统自带的环境变量,env.GITBRANCH{env.GIT_BRANCH}-{env.BUILD_NUMBER}为系统自带的环境变量,可以用与生成本次构建的唯一tag
  2. withDockerRegistry命令为使用harbor的命令,使用harbor的登陆凭据为har-test,需要先在Jenkins的凭据中自己添加好。
  3. 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