web自动化jenkins持续集成_centos版

  • 01 python环境
  • 1.1 完全卸载原有python3
  • 1.1 安装依赖
  • 1.2 下载python
  • 1. 下载tag包并解压(tgz包方式)
  • 2. make编译安装
  • 3. 添加软链接
  • 4. 环境验证
  • 5. 创建虚拟环境
  • 02 chrome和chromedriver
  • 03 jenkins安装和配置
  • 3.1 安装jdk
  • 3.2 安装并配置jenkins
  • 3.2.1 安装jenkins
  • 3.2.2 升级jenkins-war包方式(有的插件无法安装)
  • 3.2.3 安装jenkins插件
  • 1. 修改jenkins下载源,
  • 2. 下载中文插件
  • 3. 用户权限管理
  • 4. 凭证管理插件
  • 04 jenkins项目构建触发
  • 4.1 触发远程构建
  • 4.2 其他工程构建后触发
  • 4.3 定时构建(常用)
  • 4.4 轮询SCM
  • 4.5 Git hook自动触发构建(重点)
  • 4.5.1 安装Generic Webhook Trigger插件
  • 4.5.2 jenkins设置自动构建
  • 4.5.3 Gitlab配置webhook


01 python环境

1.1 完全卸载原有python3

#卸载python3
rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps

#删除所有残余文件
whereis python3 |xargs rm -frv

#查看现有安装的python,验证是否删除干净
whereis python3

Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins

1.1 安装依赖

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc

Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_02

1.2 下载python

1. 下载tag包并解压(tgz包方式)

下载链接:https://www.python.org/downloads/release/python-373/

cd /usr/local
wget https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz
tar -zxvf Python-3.8.6.tgz
mkdir -p /usr/local/python3
chmod 777 /usr/local/python3

Jenkins持续集成环境实战 基于jenkins持续集成web_前端_03


Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_04

2. make编译安装
cd Python-3.8.6
./configure --prefix=/usr/local/python3
make && make install

Jenkins持续集成环境实战 基于jenkins持续集成web_python_05


Jenkins持续集成环境实战 基于jenkins持续集成web_python_06


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_07

3. 添加软链接

添加python软链接

ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3

Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_08

添加pip3软链接

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_09

4. 环境验证
python3 -V
pip3 --help
pip3 -V

Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_10


Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_11

5. 创建虚拟环境
  1. 升级setuptools
pip3 install --upgrade setuptools -i https://pypi.doubanio.com/simple/
  1. 安装virtualenv包
pip3 install  virtualenv -i https://pypi.doubanio.com/simple/
pip3 install virtualenvwrapper -i https://pypi.doubanio.com/simple/ # 命令优化工具包
# 如安装失败升级pip  pip install pip --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_12


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_13


Jenkins持续集成环境实战 基于jenkins持续集成web_python_14


3. 创建virtualenv软链接

find / -name virtualenv
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
virtualenv

Jenkins持续集成环境实战 基于jenkins持续集成web_python_15


4. 编辑virtualenvwrapper.sh文件

vim /usr/local/python3/bin/virtualenvwrapper.sh

Jenkins持续集成环境实战 基于jenkins持续集成web_前端_16


5. 配置环境变量

vi ~/.bashrc
export WORKON_HOME=~/.virtualenvs
source /usr/local/python3/bin/virtualenvwrapper.sh
source  ~/.bashrc

Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_17


6. 测试虚拟环境使用

mkvirtualenv 虚拟环境名称 # python2写法
kvirtualenv -p python3 虚拟环境名称  # python3写法
workon  # 查看当前虚拟环境
workon 虚拟环境名称 # 进入虚拟环境
deactivate # 退出当前虚拟环境

Jenkins持续集成环境实战 基于jenkins持续集成web_前端_18


Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_19

  1. 本地代码调试
python3 -m pip install --upgrade pip
pip3 install -r requests.txt -i https://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pytest -v -s test_pytest[::类名[::函数名]]

Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_20


Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_21


Jenkins持续集成环境实战 基于jenkins持续集成web_python_22


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_23

02 chrome和chromedriver

03 jenkins安装和配置

3.1 安装jdk

yum install java-1.8.0-openjdk* -y
which java
ls -lrt /usr/bin/java
ls -lrt /etc/alternatives/java
# java路径:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64/jre/bin/java

Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_24

3.2 安装并配置jenkins

3.2.1 安装jenkins

1)获取jenkins安装包
下载链接:https://www.jenkins.io/zh/download/ 2) 把安装包上传到192.168.66.101服务器,进行安装

rpm -ivh jenkins-2.190.3-1.1.noarch.rpm
  1. 修改Jenkins配置
  • vi /etc/syscofig/jenkins
  • 修改用户名、端口
JENKINS_USER="root"
JENKINS_PORT="8090"

4)把端口添加防火墙或关闭防火墙(二选1)

  • 添加端口到防火墙
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload
  • 关闭防火墙(企业工作中谨慎操作)
systemctl stop firewalld.service
systemctl disable firewalld.service

5)添加jdk安装路径

vi /etc/init.d/jenkins

添加如下内容

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64/jre/bin/java

4)重新加载配置文件并启动Jenkins

systemctl daemon-reload  # 命令重新加载配置文件
systemctl start jenkins  # 命令启动Jenkins
systemctl status jenkins.service # 命令查看Jenkins服务的状态
  1. 浏览器访问
ifconfig
http://192.168.132.30:8090
  1. 获取并输入admin账户密码
cat /var/lib/jenkins/secrets/initialAdminPassword

7)跳过插件安装

因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安


8)添加一个管理员账户,并进入Jenkins后台

Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_25


Jenkins持续集成环境实战 基于jenkins持续集成web_python_26


Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_27


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_28


Jenkins持续集成环境实战 基于jenkins持续集成web_python_29


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_30


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_31

Jenkins持续集成环境实战 基于jenkins持续集成web_前端_32


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_33


Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_34


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_35


Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_36


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_37


Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_38


Jenkins持续集成环境实战 基于jenkins持续集成web_python_39

3.2.2 升级jenkins-war包方式(有的插件无法安装)
rpm -ql jenkins # 查看jenkins所有目录
cd /usr/share/java/
mkdir /var/lib/jenkins/temp
mv jenkins.war /var/lib/jenkins/temp/
wget http://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.349/jenkins.war # 根据提示下载相应版本war包
/etc/init.d/jenkins restart # 重启jenkins
# 报/usr/share/java/jenkins.war not installed,需要将war报移动到/usr/share/java/下
mv jenkins.war /usr/share/java 
/etc/init.d/jenkins restart
systemctl restart jenkins # 系统重启jenkins

Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_40


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_41


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_42


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_43


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_44


Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_45

3.2.3 安装jenkins插件
1. 修改jenkins下载源,

有的版本是https://updates.jenkins.io/download有的是https://updates.jenkins-ci.org/download,根据情况修改

vim hudson.model.UpdateCenter.xml
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
sed -i 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

Jenkins持续集成环境实战 基于jenkins持续集成web_python_46


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_47


Jenkins持续集成环境实战 基于jenkins持续集成web_python_48


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_49


Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_50


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_51

2. 下载中文插件
  • Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索"Chinese"
  • 重启Jenkins后,就看到Jenkins汉化了!(PS:但可能部分菜单汉化会失败)
3. 用户权限管理
  1. 插件下载
  • Role-based Authorization Strategy 插件来管理Jenkins用户权限
  • 授权策略切换为"Role-Based Strategy",保存
  1. 创建角色
  • 在系统管理页面进入 Manage and Assign Roles,点击"Manage Roles"
  • Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
    - Project roles(项目角色):针对某个或者某些项目的角色
  • Slave roles(奴隶角色):节点相关的权限
  • 添加三个用色
  • baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑
    定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 is
    missing the Overall/Read permission
  • dev_role:该角色为项目角色。使用正则表达式绑定"dev.*",意思是只能操作itcast开头的项目。
  • test_role01:该角色也为项目角色。绑定"test.*",意思是只能操作itheima开头的项目

Jenkins持续集成环境实战 基于jenkins持续集成web_python_52


Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_53


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_54


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_55


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_56


Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_57


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_58


Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_59


3. 给用户分配角色

  • 系统管理页面进入Manage and Assign Roles,点击Assign Roles
    绑定规则如下:
  • zhagnsan用户分别绑定baseRole和role1角色
  • lisi用户分别绑定baseRole和role2角色






4. 凭证管理插件

1. 安装Credentials Binding插件

  • 安装插件后,左边多了"凭证"菜单,在这里管理所有凭证
  • 可以添加的凭证有5种:
  • Username with password:用户名和密码
  • SSH Username with private key: 使用SSH用户和密钥
  • Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径
    设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
  • Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
  • Certificate:通过上传证书文件的方式
  • 常用的凭证类型有:Username with password(用户密码)和SSH Username with private key(SSH
    密钥)



    2. 安装git工具
  • centos安装git工具
    查看此篇:
  • 查看git版本:yum info git
  • 安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 
yum install gcc perl-ExtUtils-MakeMaker
  • 卸载git旧版本:yum remove git
  • 在线下载源码包:wget https://github.com/git/git/archive/v2.9.2.tar.gz
  • 解压git工具包:tar -xzvf v2.9.2.tar.gz
  • 编译
cd git-2.9.2
make prefix=/usr/local/git all
  • 安装:make prefix=/usr/local/git install
  • 添加环境变量
vim /etc/profile
export PATH="/usr/local/git/bin:$PATH" 
source /etc/profile
  • 安装后查看版本:git --version
  • Jenkins持续集成环境实战 基于jenkins持续集成web_前端_60


  • Jenkins持续集成环境实战 基于jenkins持续集成web_python_61


  • Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_62


  • Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_63


  • Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_64


  • Jenkins持续集成环境实战 基于jenkins持续集成web_python_65


  • Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_66


  • Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_67


  • Jenkins持续集成环境实战 基于jenkins持续集成web_前端_68


3. 安装git和github插件

Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_69


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_70


4. 用户密码类型

  • 创建凭证:Jenkins->凭证->系统->全局凭证->添加凭证,选择"Username with password",输入Github的用户名和密码,点击"确定"。
  • 测试凭证是否可用
  • 创建一个FreeStyle项目:新建Item->FreeStyle Project->确定,找到"源码管理"->“Git”,在Repository URL复制Gitlab中的项目URL
  • 找到"源码管理"->“Git”,在Repository URL复制Gitlab中的项目URL
  • 保存配置后,点击构建”Build Now“ 开始构建项目
  • 查看/var/lib/jenkins/workspace/目录,发现已经从Github成功拉取了代码到Jenkins中

Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_71


Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_72


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_73


Jenkins持续集成环境实战 基于jenkins持续集成web_python_74

3. ssh密钥类型

  • git生成秘钥
  • 将秘钥添加到git个人账号
git config --global user.name 'JSonliuJ'
git config --global user.email "492224300@qq.com"
kdir ~/.ssh
chmod 700 ~/.ssh
git --help
ssh-keygen -t rsa -C "邮件地址"

Jenkins持续集成环境实战 基于jenkins持续集成web_python_75


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_76


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_77


Jenkins持续集成环境实战 基于jenkins持续集成web_自动化_78


Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_79


Jenkins持续集成环境实战 基于jenkins持续集成web_jenkins_80

  • 本地代码拉取及上传调试
git init
git init --bare git_project # 初始化一个空目录 
cd git_project
git clone 远程仓库地址
touch test02.sh
git add test02.sh
git commit -m '注释'
git push # 远程仓库
  • 删除远程仓库调试文件
git rm test02.sh
git commit -m "说明"
git push

Jenkins持续集成环境实战 基于jenkins持续集成web_前端_81


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_82


Jenkins持续集成环境实战 基于jenkins持续集成web_python_83


Jenkins持续集成环境实战 基于jenkins持续集成web_python_84


Jenkins持续集成环境实战 基于jenkins持续集成web_前端_85

  • 在Jenkins添加一个新的凭证,类型为"SSH Username with private key",把刚才生成私有文件内容复制过来



  • 测试凭证是否可用




04 jenkins项目构建触发

Jenkins内置4种构建触发器

  • 触发远程构建
  • 其他工程构建后触发(Build after other projects are build)
  • 定时构建(Build periodically)
  • 轮询SCM(Poll SCM)

4.1 触发远程构建

构建url:http://127.0.0.1:8081/job/api_%E8%BF%9C%E7%A8%8B%E6%9E%84%E5%BB%BA%E8%A7%A6%E5%8F%91%E5%99%A8/build?token=6666

Jenkins持续集成环境实战 基于jenkins持续集成web_前端_86

4.2 其他工程构建后触发

Jenkins持续集成环境实战 基于jenkins持续集成web_前端_87


Jenkins持续集成环境实战 基于jenkins持续集成web_python_88

4.3 定时构建(常用)

  • 定时字符串从左往右分别为: 分 时 日 月 周
  • 一些定时表达式的例子
每30分钟构建一次:H代表形参 H/30 * * * * 
每2个小时构建一次: H H/2 * * *
每天的8点,12点,22点,一天构建3次: (多个时间点中间用逗号隔开) 0 8,12,22 * * *
每天中午12点定时构建一次 H 12 * * *
每天下午18点定时构建一次 H 18 * * *
在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38) H H(9-16)/2 * * 1-5

Jenkins持续集成环境实战 基于jenkins持续集成web_Jenkins持续集成环境实战_89

4.4 轮询SCM

  • 指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建
  • 注意:这次构建触发器,Jenkins会定时扫描本地整个项目的代码,增大系统的开销,不建议使用。

4.5 Git hook自动触发构建(重点)

4.5.1 安装Generic Webhook Trigger插件

Jenkins持续集成环境实战 基于jenkins持续集成web_python_90

4.5.2 jenkins设置自动构建

Jenkins持续集成环境实战 基于jenkins持续集成web_python_91

4.5.3 Gitlab配置webhook

1. 开启webhook功能

  • 点击Admin Area -> Settings -> Network
    勾选"Allow requests to the local network from web hooks and services"

2. 在项目添加webhook

  • 点击项目->Settings->Integrations
  • Manage Jenkins->Configure System