提交 28e4c41b authored 作者: liupengfei's avatar liupengfei

--no commit message

上级 a3146cfe
# Jenkins 教程
### 简介
> Jenkins是开源CI&CD软件领导者,
> 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
### 推荐教程
* [jenkins官方教程](https://jenkins.io/zh/doc/pipeline/tour/getting-started/)
* [jenkins使用教程](https://blog.csdn.net/shuizhihun07/article/details/80168076)
### 安装 采用免安装方式(war包启动)
* jenkins下载地址:https://jenkins.io/zh/download/
![jenkins](./img/jenkins_1.png)
* 把下载好的jenkins.war文件上传到服务器
* 启动war包命令
```shell script
# 启动运行
java -jar jenkins.war --ajp13Port=-1 --httpPort=80
# 后台进程启动运行
nohup java -jar jenkins.war --ajp13Port=-1 --httpPort=80 > jenkins.log 2>&1 &
# 关闭jenkins 根据指定端口号关闭进程
#!/bin/bash
pid=$(netstat -nlp | grep :80| awk '{print $7}' | awk -F'/' '{print $1}');
if [ -n "$pid" ]; then
kill -9 $pid;
fi
```
* jenkins 的工作目录至少需要30G的硬盘空间,默认工作空间在 /root/.jenkins下,如果需要更改工作空间
使用环境变量 JENKINS_HOME 进行更改。
```shell script
vi /etc/profile
# 添加 export JENKINS_HOME=your dir
source /etc/profile
# 重新启动jenkins
```
### 第一次运行配置
* 教程使用服务器 192.168.2.234:/usr/local/jenkins
* 创建启动jenkins脚本 /usr/local/jenkins/start.sh,执行启动脚本。
> 日志地址:/usr/local/jenkins/jenkins.log
```shell script
#!/bin/bash
pid=$(netstat -nlp | grep :80| awk '{print $7}' | awk -F'/' '{print $1}');
if [ -n "$pid" ]; then
kill -9 $pid;
fi
nohup java -jar jenkins.war --ajp13Port=-1 --httpPort=80 > jenkins.log 2>&1 &
```
* 查看日志信息,在jenkins第一次启动时会创建默认的密码信息。
```shell script
tail -f -n 200 /usr/local/jenkins/jenkins.log
# 密码信息存储在 /root/.jenkins/secrets/initialAdminPassword 文件中
cat /root/.jenkins/secrets/initialAdminPassword
```
![jenkins第一次运行时的密码信息](./img/jenkins_2.png)
* 访问http://192.168.2.234:80,安装时第一次启动会提示输入 默认密码,
并会提示出默认密码的存储位置。输入密码后下一步
![jenkins第一次运行时界面信息](./img/jenkins_3.png)
```shell script
cat /root/.jenkins/secrets/initialAdminPassword
# 45f6139f67d94f7dbaf746c2e78cc8f0
```
* 自定义安装jenkins方式,
1. 推荐插件安装(jenkins社区觉得比较有用的)进行默认安装
2. 自定义插件安装(根据自己需要安装)
教程采用推荐插件安装。
![jenkins安装方式](./img/jenkins_4.png)
* 下载插件并安装插件时间比较耗时
![jenkins安装推荐插件](./img/jenkins_5.png)
* 创建第一个管理员用户 admin 123456
![jenkins安装推荐插件](./img/jenkins_6.png)
* 配置实例访问地址用户 jenkins访问
![jenkins安装推荐插件](./img/jenkins_7.png)
### 插件安装
* 登录jenkins成功后,点击左侧“系统管理-》插件管理 -》 可选插件 -》”
搜索ssh , 安装Publish Over SSH 插件,用于通过ssh连接发送文件到服务器。
* 搜索git 安装GIT gitclient,github等插件。
* 搜索subversion 安装svn插件。
### 系统配置
> 在成功登陆系统之后,需要做一些全局配置,便于之后的配置jenkins job构建任务
- 配置全局凭据
>全局用户作为拉取仓库代码的凭证,jenkins提供多种验证机制,此处只做两种演示;<br>
>左侧菜单栏 凭据-》系统-》全局凭据(下三角)-》添加凭据
![添加全局成员](./img/jenkins_13.jpg)
1. 账号&密码
![第一种方式](img/jenkins_14.jpg)
2. GitLab API token
- 生成GitLab API token
登陆GitLab-》点击头像—》settings-》左侧菜单栏选择访问令牌
![第一种方式](img/jenkins_15.jpg)
点击创建个人访问令牌生成令牌(注意保存令牌,刷新页面之后,令牌将不在显示)
![第一种方式](img/jenkins_16.jpg)
结果:
![第一种方式](img/jenkins_17.jpg)
> 如果提示 Failed to connect to repository : Error performing git command: git ls-remote -h
> 需要在jenkins服务器上安装git
```shell script
# 安装git
yum install -y git
# 查看安装的git版本,有版本,安装成功
git --version
```
- 全局配置界面,jenkins登陆成功后,点击左侧“系统管理-》系统配置
![jenkins配置](./img/jenkins_12.jpg)
图中工作目录即为初始化Jenkins时设置的目录
- 配置GItLab地址和验证凭证
![jenkins配置](./img/jenkins_18.jpg)
- 配置Publish over SSH(可配置多个)
![jenkins配置](./img/jenkins_19.jpg)
至此全局配置以能满足基本的构建任务,如有个性化需求需要另外配置
### 第一个Jenkins Job
> 此处假设你本地已经有一个可以打包部署的项目,并且源码已经推送到git仓库中
* Jenkins首页左侧 “新建任务 -》构建一个自由风格的软件项目(添加任务名称) ”
![新建任务](./img/jenkins_9.png)
1. 描述,自定义填写
2. github项目,可选可不选
3. 源码管理,git/subversion选项, git粘贴git的地址, credentials 凭据 选择或者添加(此处同样可以添加全局凭据)<br>
![配置构建任务](./img/jenkins_20.jpg)
4. 构建触发器,轮询SCM(只要目标仓库数据有更新,则执行构建任务)
![轮询](./img/jenkins_21.jpg)
***说明***:首先格式为:\*\*\*\*\*(五个星);<br>
第一个\*表示分钟,取值0~59 <br>
第二个\*表示小时,取值0~23 <br>
第三个\*表示一个月的第几天,取值1~31 <br>
第四个\*表示第几月,取值1~12 <br>
第五个\*表示一周中的第几天,取值0~7,其中0和7代表的都是周日 <br>
示例: <br>
每隔10分钟构建一次:H/5 * * * * <br>
每隔1小时构建一次: H H/1 * * * <br>
每月30号构建一次: H H 30 * * <br>
5. 构建环境;将source(jenkin工作空间+输入路径,例:"/opt/jenkins/jenkins-demo")目录中的文件,发送目标服务器,并执行shell脚本
![发送远程文件](./img/jenkins_22.jpg)
6. 构建,增加构建步骤-》执行shell(如果是windows系统选择"执行windows批处理命令")
![构建命令](./img/jenkins_23.jpg)
7. 保存
>一个构建任务已经完成,接下来进行构建测试,并访问API
### 执行构建
- 进入首页-》选择刚创建的构建任务-》立即构建
- 点击构建序号进入此次构建任务详情页(或通过构建任务详情页点击构建序号进入)
![执行构建](./img/jenkins_24.jpg)
- 查看构建日志输出;如果构建成功日志末尾会输出 "Finished: SUCCESS"字样;失败则会抛出异常,根据异常信息解决问题
![日志](./img/jenkins_25.jpg)
- 图标说明:
![红太阳](./img/红太阳.jpg) 构建失败
![灰太阳](./img/灰太阳.jpg) 当前构建任务从未执行
![蓝太阳](./img/蓝太阳.jpg) 构建成功
- 测试
如果构建成功,测试接口
![日志](./img/jenkins_26.jpg)
___至此结束___
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论