首发掘金
什么是Jenkins?
一个帮忙构建打包的好用工具,比自己写 bat 脚本省事多了(真的吗)
来自 jenkins官网 的定义
Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software.
译:Jenkins 是一个独立的开源自动化服务器,可用于自动执行与构建、测试和交付或部署软件相关的各种任务。
Jenkins can be installed through native system packages, Docker, or even run standalone by any machine with a Java Runtime Environment (JRE) installed.
译:Jenkins 可以通过本机系统包、Docker 进行安装,甚至可以由任何安装了 Java 运行时环境 (JRE) 的计算机独立运行。
下载
踩坑嘛自然踩多点,Jenkins这种好东西自然要多踩几次(不),于是选了Windows的和docker的。
Windows版下载地址:https://mirror.twds.com.tw/jenkins/windows-stable/2.462.3/jenkins.msi
docker下载方式:docker pull jenkins/jenkins:lts
windows里安装
Windows环境下一路默认即可过关斩将,如果参照这篇文章《windows系统下jenkins安装配置及部署MAVEN、VUE项目 》的配置,还可以进一步去安装目录(例如C:\Program File\Jenkins)下修改主路径,我这边就偷懒没有配置了。
改动的地方是安装目录下jenkins.xml里的 <env name="JENKINS_HOME" value="%ProgramData%\Jenkins\.jenkins"/>
中 value 的内容,可以设定为自定义的路径。默认的此路径会是 C:\ProgramData\Jenkins.jenkins 。
改完需要net stop jenkins
和net start jenkins
,没改就不需要,直接ip:8080
进入目标页面
docker安装
docker就不用管这个路径了,但docker需要预先在宿主机准备好必备的环境和空路径。
因为主要用来构建springboot项目,所以必备的软件有三:Git、Java、Maven。
git在创建的容器里有自带,但需要一些功能更新。
Java可以在宿主机用 whereis java
找一下安装路径或者 apt 安装一下,Maven需要下载 tar.gz 文件解压,所以用不着whereis。下载压缩包命令如下:
wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -xvf apache-maven-3.6.3-bin.tar.gz
准备好镜像、环境、软件、文件夹后随便找个喜欢的路径新建两个空的专门给 jenkins 容器挂载的空文件夹,一个用于挂载Jenkins安装路径,一个用于挂载Jenkins内要配置的JDK路径。我主要用docker来构建Springboot项目,所以这个必须要有,测试机安装的jdk版本是11,所以路径上也做了标识。
最终创建容器使用的参数如下:
#参数部分视实际环境自行修改
jdk_home="/usr/bin/java"
jenkins_home="/home/username/jenkins/jenkins_home"
localtime="/etc/localtime"
maven_home="/home/username/maven/apache-maven-3.6.3"
jdk_dir_home="/home/username/jenkins/jdk11_install"
echo "开始启动容器>>"
docker run -d -p 8083:8080 -p 8084:50000 \
-v $jenkins_home:/var/jenkins_home \
-v $localtime:/etc/localtime \
-v $maven_home:/usr/local/apache-maven-3.6.3 \
-v $jdk_home:/etc/local/java \
-v $jdk_dir_home:/var/jdk11_install \
--name jenkins \
jenkins/jenkins:lts
echo "启动完毕<<"
尽量在执行脚本前检查参数是否缺漏,事关Jenkins内的配置,如果启动后再来补挂载非常麻烦(主要是我也没找到补挂载的资料 )。不过停止并删除容器也很简单,并且实际上删除容器也不会影响到已经有的配置(问就是删过),因为实际上后面在 Jenkins 页面里执行的配置、下载的插件都已经关联到了挂载的jenkins_home
上。当然,如果忘记挂载这个目录的话就当我没说。
接下来更新容器内的 git 版本
# 以下操作在容器创建后才能进行。方便起见,以root用户的身份进入容器
docker exec --user root -ti jenkins /bin/bash
apt-get update
apt-get install libpcre3
容器启动完毕,由配置可知容器本身的8080端口挂载到了宿主机的8083端口,故访问宿主机ip:8083
即可打开每个教程都会有的Jenkins目标页面。
进入Jenkins首页
admin走天下。密码所在的文件在文件上也会有提示,找到并打开,然后复制粘贴。安装插件按照推荐模式。如果不走推荐模式,建议之后自行安装时先找到中文插件。要点击的地方和顺序:
以上基于本次安装的2.462.3版本Jenkins截图,未来若有版本更新而界面布局发生了变化,就要根据实际版本去寻找对应位置了。以本文参考的文章《使用Jenkins优雅部署Java项目【超级详细的实战教程】》为例,里面部分截图已经跟最新版本不太一样了╮(╯_╰)╭
TIPS:在参考的这篇文章中,它的容器启动参数多挂载了宿主机的 git ,并且配置到了Jenkins的全局配置中。我用的时候发现这种做法会使我无法在容器内克隆仓库,经常是费劲巴拉的填完账密后下载的却是一个空文件夹。几经周折,还是使用容器内自带的 git,更新版本并安装 libpcre3 ,才能正常使用(也就是前面提到的部分)。
凭据配置
因为代码从仓库拉取,所以绑定你要用的仓库的账密,以Gitee为例,账号名不出意外的话是邮箱号,密码建议用个人令牌。已经创建好的凭据在配置页里长这样:
点击右上角那个 Add domain 之后会进入下面的页面,照着填就行:
环境配置
包括 SSH 服务器、git 路径、maven路径、jdk路径等。
SSH服务器配置
Git配置
在【系统管理>全局工具配置】里面搜索 Git installation,填入容器内默认git路径。
JDK和Maven路径配置
依旧是在【系统管理>全局工具配置】里面,配置的都是前面在创建容器命令里位于-v
参数后、在冒号后面的地址。
然后保存返回。
开始构建
回到主页看到【新建项目】,不要犹豫地点击它。下图所示为docker部署spring项目的截图,我另一个项目是个普普通通的Python打包的exe,所以选的是第一个自由风格的,故此处灵活选择即可。其他几项类型等我多看几个教程多踩几个坑之后再来补。
在【源码管理】一栏下填入仓库 凭据、分支信息
在【构建环境】一栏下填入勾选第三项并填入对应信息。这部分我是参考前面说过的文章《使用Jenkins优雅部署Java项目【超级详细的实战教程】》做的。
最后在【Build】一栏下填入项目的 pom 文件地址和 mvn clean install 的mvn之后的内容。
就可以开始愉快地返回首页构建任务了
踩坑之docker
问题就是前面提到过的Git版本
踩坑之Windows
至于日志,在这里
总结
Jenkins确实好用,比自己写bat脚本好用。