介绍
Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。
主要用于:
-
持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。
-
监控一些定时执行的任务。
Jenkins特点
-
开源免费;
-
跨平台,支持所有的平台;
-
master/slave支持分布式的build;
-
web形式的可视化的管理页面;
-
安装配置超级简单;
-
tips及时快速的帮助;
-
已有的200多个插件
参考文档
www.jenkins.io/zh/doc/pipe… wiki.eryajf.net/pages/3298.…
安装与部署
docker安装jenkins
1.拉取镜像
docker pull jenkins/jenkins
2.创建jenkins本地挂载目录
mkdir /home/jenkins
3.运行容器
docker run -itd --name jenkins -e TZ=Asia/Shanghai -u root --restart=always -p 8989:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker --env JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxNewSize=256m" jenkins/jenkins:latest
命令介绍:
--name jenkins_docker 给容器取的名称
-e TZ=Asia/Shanghai 设置时区
-u root 设置用户
-p 8989:8080 将Jenkins容器默认8080端口映射到 宿主机8989端口
-u root 使用root用户权限
-v /home/jenkins:/var/jenkins_home 映射Jenkins数据目录,防数据丢失
-v /var/run/docker.sock:/var/run/docker.sock 让容器能使用docker的命令
-v /usr/bin/docker:/usr/bin/docker 挂载宿主机docker到容器中(docker目录根据你的安装目录进行修改)
-d 后台运行
-- env JAVA_OPTS 设置内存空间
注意:是把docker命令行映射到容器中 可通过which docker命令查看docker命令行路径
如果报以下报错
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
需要修改下目录权限, 因为当映射本地数据卷时,/home/jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000
sudo chown -R 1000:1000 /home/jenkins
4.访问jenkins
浏览器输入地址:http://ip:8989
密码获取方式
第一种:
查看宿主机已经挂载过来的目录
cat /home/jenkins_home/secrets/initialAdminPassword
第二种: 查看容器日志
docker logs 容器id
点击继续
5.安装插件
更改插件地址
vim /home/jenkins_home/hudson.model.UpdateCenter.xml
http://updates.jenkins-io/update-center.json
改成
http://mirror.xmission.com/jenkins/updates/update-center.json
修改完成会自动映射到容器中
选择安装推荐插件
6.创建用户
7.新建item
8.创建流水线
9.创建参数化构建过程
弄完上面git就算是配置好了,但是地址跟分支都写死了,每次使用的时候到配置里面去修改也不太方便,Jenkins提供参数化构建过程可以解决这个问题。
勾选参数化构建过程,选择选项参数
10.通过git仓库分支构建参数化过程
git url 一般不会变,但是分支时不时会新建、删除,每次这样添加是不是很麻烦。Jenkins提供了git parameter插件可以解决这个问题 在插件管理中安装插件git parameter,安装成功后回到添加参数会多一个Git参数
搜索git parameter进行安装
选择添加Git参数
选择参数类型为分支
进入工程,选择Build with Parameters 可以看到仓库分支已经显示
11.配置读取仓库自带的jenkinsfile文件
最新jenkins默认已经安装git插件,如果没有则在插件管理中心搜过git自行安装
点击添加jenkins凭据
输入gitlab账号和密码
在Credentials选择已添加的gitlab凭据
注意:repository url输入的是gitlab项目地址,端口号为docker映射的宿主机端口
指定分支请填写 :参数化构建过程中Git参数的名称,用于获取你选的哪个分支
脚本路径填写你项目中的Jenkisfile所在的路径,这里我默认为根目录
12.在项目根目录下编写jenkinsfile文件
上传文件到gitlab仓库中
13.开始构建
选择指定分支,开始构建
如果出现以上错误,取消轻量级检出的勾选
14.配置全局环境变量
点击系统管理进入系统配置
勾选环境变量,可自由添加任意键值对
注意:变量中的HARBOR_URL不要写http前缀,后期打镜像标签会用到
docker build -t http://124.221.106.75:8077/bbcl_fms/bbcl-fms-financial-api:v2 -f ./app/financial-api/Dockerfile .
报错:
docker build -t http://124.221.106.75:8077/bbcl_fms/bbcl-fms-financial-api:v2 -f ./app/financial-api/Dockerfile .
invalid argument "http://124.221.106.75:8077/bbcl_fms/bbcl-fms-financial-api:v2" for "-t, --tag" flag: invalid reference format
在jenkinsfile文件中读取
也可读取jenkinsfile内置的一些环境变量,如下所示
BUILD_ID 当前构建的 ID,与 Jenkins 版本 1.597+ 中创建的构建号 BUILD_NUMBER 是完全相同的。
BUILD_NUMBER 当前构建号,比如 “18”。
BUILD_TAG 字符串 jenkins–$ {JOB_NAME}-${BUILD_NUMBER}。可以放到源代码、jar 等文件中便于识别。
BUILD_URL 可以定位此次构建结果的 URL(比如 http://buildserver/jenkins/job/MyJobName/17/ )
EXECUTOR_NUMBER 用于识别执行当前构建的执行者的唯一编号(在同一台机器的所有执行者中)。这个就是你在“构建执行状态”中看到的编号,只不过编号从 0 开始,而不是 1。
JAVA_HOME 如果你的任务配置了使用特定的一个 JDK,那么这个变量就被设置为此 JDK 的 JAVA_HOME。当设置了此变量时,PATH 也将包括 JAVA_HOME 的 bin 子目录。
JENKINS_URL Jenkins 服务器的完整 URL,比如 https://example.com:port/jenkins/ (注意:只有在“系统设置”中设置了 Jenkins URL 才可用)。
JOB_NAME 本次构建的项目名称,如 “foo” 或 “foo/bar”。
NODE_NAME 运行本次构建的节点名称。对于 master 节点则为 “master”。
WORKSPACE workspace 的绝对路径
。