前置:
1、安装配置jdk、maven、git环境变量,安装方式这里不再赘述(这是前提),请参考:
1】Java:Linux系统安装jdk11环境配置_拄杖忙学轻声码的博客-CSDN博客_linux安装jdk11并配置环境变量
2】Maven:Linux CentOS 8.x 安装Maven教程_拄杖忙学轻声码的博客-CSDN博客
3】Git:Linux CentOS 8.x 安装Git_拄杖忙学轻声码的博客-CSDN博客
需要挂载到 Jenkins 容器中、配置环境变量
二、配置 jdk、maven、git 环境变量,这些环境变量需要已在容器中安装配置
这里注意(也可以不配置,使用默认的):
需要配置maven的本地仓库地址,也就是 setting.xml 文件中配置的
三、安装插件,点击系统管理-》插件管理
2、安装 Gitee 插件,找到可选插件tab,搜索gitee (此插件非必须)
3、安装 Maven 插件,找到可选插件tab,搜索maven
4、安装 Git Parameter Plug-In 插件,用于添加git参数,找到可选插件tab,搜索git param
5、安装 Environment Injector 插件,搜索 inject
此插件的作用:
【1】支持自定义环境变量,并把自定义变量注入到构建过程中
【2】在shell脚本中可以使用 $a、$b的方式使用环境变量
【3】例如:
6、安装 Conditional BuildStep 插件,找到可选插件tab,搜索BuildStep或steps
说明:
【1】此插件作用是,添加构建步骤的前置条件,可以用作执行 shell 命令之前设置构建状态
【2】设置只有构建成功才执行 shell 命令或脚本文件
7、安装 Publish over SSH 插件,找到可选插件tab,搜索ssh
说明:
【1】此插件可以支持添加其他远程服务器,进行执行 shell 命令或脚本文件
四、添加Gitee(码云)链接配置(系统管理->系统配置->Gitee配置)(此步骤非必须,也可以不配置)
五、创建一个自由风格的测试任务
说明:
(1):如果需要参数化构建项目,需要勾选》参数化构建过程,然后选择 Git参数 ,即可获得该项目的分支或标签信息,示例请参考:Jenkins之Git参数化构建项目_拄杖忙学轻声码的博客-CSDN博客
3、添加Git代码仓库地址(支持Gitlab、GitCode等)、用户账号密码信息等【1】 指定分支如果是参数化构建,可以使用 $Branch
【2】如果不是参数化构建,直接填写分支名 */master
4、构建触发器(如果不需要每次推送、新建分支等操作都触发部署,可以忽略WebHook触发器)
5、需要把上面的路径、生成的 gitee webhook 密码配置到项目
6、自定义构建环境变量,安装Environment Injector插件后,勾选“将环境变量注入构建过程”
说明:
【1】在 shell 脚本中可以使用变量 $a、$b 等
【2】Delete workspace before build starts 此选项看情况选择
【1】目标:clean package -DskipTests -U
【2】POM:pom.xml
【3】配置文件:settings.xml 文件使用默认就行
特别说明:
(1):默认在 jenkins_home 目录下的工作空间中的任务项目下执行
(2):例如此 shell 脚本就在 /var/jenkins_home/workspace/test 目录下执行
(3):因为我们在创建jenkins容器的时候,把jenkins_home挂载到了宿主机,所以也就等于在宿主机的 jenkins_home/workspace/test 项目下执行
六、下面是我遇到的报错信息(如果shell中没有用到git命令,可以忽略此步骤)
报上面这样的错误一般是没有创建目录、项目没有克隆下来、没有初始化加入git版本管理、本地分支没有关联远程分支、没有加入远程控制、需要输入gitee的用户名密码等一系列问题
解决方式如下:
(1):进入容器创建此目录,并且进入此目录执行 git init 命令,把此目录加入到 git 版本管理
(2):创建目录后,需要使用 git clone -b 分支名 xxx.git 命令把项目克隆下来:
git clone -b 分支名 xxx.git
(3):需要把本地分支和远程分支关联起来,命令如下:
语法:git branch --set-upstream-to=origin/远程分支名 本地分支名
# 本地分支关联远程分支
git branch --set-upstream-to=origin/master master
(4):再把项目源加入到远程控制,命令如下:
git remote add origin https://gitee.com/xxx.git
(5):设置 git 操作项目时候需要用的用户名和密码,命令如下:
# 第1步执行
git config --global credential.helper store
# 第2步执行
git push origin master
或者
git pull
(6):执行上述命令,会让你输入用户名和密码,这时你输入就好了,下次再 git push/pull 的时候就不用密码了。jenkins重新构建就行了
(7):如果出现基线库错乱的问题
You can replace "git config" with "git config --global" to set a default
执行如下命令之一,告诉git如何操作不同名字的分支
git config pull.rebase false # merge (the default strategy)
git config pull.rebase true # rebase
git config pull.ff only # fast-forward only
至此:
一个简单的 docker + maven + git + gitee 构建项目demo就完成了
总结:
1、Jenkins使用的 java、maven、git、docker 等都是来自宿主机挂载到Jenkins容器内部,容器内再配置环境变量
2、Jenkins容器中使用的 docker 来自宿主机中安装的 docker,在创建jenkins容器的时候把 docker.sock 权限交给 Jenkins 容器,从而实现在 Jenkins 容器内部也可以直接操作docker命令