一.Jenkins基础
## 1. Jenkins简介
Jenkins概述
• Jenkins是由java编写的一款开源软件
• 作为一款非常流行的CI(持续集成)工作,用于构建和测试各种项目
• Jenkins 的主要功能是监视重复工作的执行,例如软件工程的构建或在 cron下设置的 jobs
**它是当前最流行的一款集成(CI) 工具.
自动化运维平台: docker/ansible/jenkins/git
持续集成
• 持续集成(CI)是当下最为流行的应用程序开发实践方式
• 程序员在代码仓库中集成了修复bug、新特性开发或是功能革新
• CI工具通过自动构建和自动测试来验证结果。这可以检测到当前程序代码的问题,迅速提供反馈
Jenkins特点
• 简单、可扩展、用户界面友好
• 支持各种SCM(软件配置管理)工具,如SVN、GIT、CVS等
• 能够构建各种风格的项目
• 可以选择安装多种插件
• 跨平台,几乎可以支持所有的平台
2.安装Jenkins
2.1环境准备:
已有服务器:
192.168.1.11 (程序员服务器)
192.168.1.12(gitlab服务器)
准备一台虚拟机,安装jenkins
Jenkins是java程序写的,所以要安装java
虚拟机需要能够访问互联网
虚拟机需要能够访问gitlab
下载jenkins
虚拟机: 192.168.1.13
**## ]# scp '/root/桌面/jenkins-2.177-1.1.noarch.rpm' root@192.168.1.13:/root/
安装软件包:
[root@roo~]# ssh 192.168.1.13**
[root@node3]# yum -y install java-1.8.0-openjdk
[root@node3]# yum -y install tomcat
[root@node3~]# rpm -ivh jenkins-2.177-1.1.noarch.rpm
启动服务
[root@node3 ~]# systemctl restart jenkins
[root@node3 ~]# systemctl enable jenkins
[root@node3 ~]# netstat -nutlp | grep 8080
访问jenkins的8080端口
[root@node3 ~]# firefox 192.168.1.13:8080
初始化Jenkins
• Jenkins默认运行在8080端口
[root@node3 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
0300cdfb34884e86b45e50ee744753c3
安装插件:
注意:
在安装插件页面,选择”选择插件来安装”,然后点击”无”.因为此时安装插件将
会访问国外站点安装,速度慢。将来改成国内镜像站点安装。 “创建第一个管理员用户”页面,点击右下角的“使用admin”
进入页面后,先点击右上角的“admin”三角号的下接菜单选configure。在此页面改密码。
管理用户
• 可以直接使用Admin登陆
完成安装
• 安装成功如下图所示:
.安装插件:*
在首页上点击manage jenkins -> manage plugins -> advanced -> update site中url填写:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json->submit
url填写:
点击Available选项卡,搜索找到[Localization: Chinese (Simplified),勾选左侧的复选框,该插件用于中文支持。
- 点击Install without restart
*- 勾选Restart jenkins…
标题安装git parameter插件。用于访问git**
二.准备git仓库
CI流程:
.2.1. 程序员编写代码,并推送到服务器
程序员创建软件项目
[root@room9pc01]#ssh 192.168.1.11
[root@node1 ~]# git init myweb
初始化空的 Git 版本库于 /root/myweb/.git/
[root@node1 ~]# cd myweb
[root@node1 myweb]# echo '<h1>my web site</h1>' > index.html
[root@node1 myweb]# git add .
[root@node1 myweb]# git commit -m "my web 1.0"
[root@node1 myweb]# git tag 1.0 # 添加标记,标记为1.0版本
[root@node1 myweb]# git tag # 查看所有标记
1.0
2.2在gitlab上创建名为myweb的项目 (192.168.1.12)
- 通过root用户创建
- 项目属于devops组
- 项目是公开的
- 昨天新建的用户成为该项目的主程序员
[root@gitlab]#firefox 192.168.1.12/
2.2.1创建群组
• 创建名为devops的群组
2.2.2创建myweb项目
• 创建名myweb的项目
2.2.4创建用户
• 为myweb项目创建主程序员用户
• 为myweb项目创建主程序员用户
用户生成ssh密钥
[root@room9pc01 ]#ssh 192.168.1.11 (上传代码的程序服务器)
[root@node1 ~]# ssh-keygen -t rsa -C "LXH@tedu.cn" -b 4096
[root@node1 ~]# cat ~/.ssh/id_rsa.pub
点击成员,选择扮演角色----点击SSH秘钥
2.2.5程序员将代码上传到gitlab服务器
[root@room9pc01 ]#ssh 192.168.1.11
[root@node1 myweb]# git remote rename origin old-origin
[root@node1 myweb]# git remote add origin git@192.168.1.12:devops/myweb.git
[root@node1 myweb]# git push -u origin --all
[root@node1 myweb]# git push -u origin --tags
后期创建项目上传代码:
[root@node1 myweb]# cp -r /root/devops/ .
[root@node1 myweb]# git status
[root@node1 myweb]# git commit -m "devops 1.0"
[root@node1 myweb]# git tag 1.1 //添加标记,标记为1.0版本
[root@node1 myweb]# git tag
[root@node1 myweb]# git remote rename origin old-origin
[root@noed1 myweb]# git remote add origin git@192.168.1.12:devops/myweb.git
[root@cxy myweb]# git push -u origin --all
[root@cxy myweb]# git push -u origin --tags //推送代码版本标记
三 .应用jenkins
• 为了使得Jenkins可以使用git的tag,需要下载gitparameter插件
• 点击“系统管理”->“管理插件”
3.1 jenkins服务器下载代码
在jenkins服务器上安装git
[root@node3 ~]# yum install -y git
3.2.在jenkins上创建一个*风格的项目
创建*风格项目:
Genereral -> This project is parameterized -> 添加参数: git parameter -> name: webver, Parameter Type: Branch or Tag, Default Value: origin/master
• 新建任务
• 选择*风格
设置参数
• 添加Git Parameter参数
2.源码管理
• 源码采用git
源码管理:git -> Repository URL: http://192.168.1.12/devops/myweb.git -> Branch Specifier (blank for ‘any’): $webver
3. 基础构建已经可以完成,点击保存按钮。
4.构建工程。
点击工程左侧的Build with Parameters。默认情况下,软件将会下载到/var/lib/jenkins/workspace目录。
4.1点击1.0版本->开始构建
4.2为下载的每个版本创建一个子目录
删除jenkins的下载目录
[root@room9pc01]#ssh 192.168.1.13
[root@node3 ~]# ls /var/lib/jenkins/workspace/
[root@node3~]# rm -rf /var/lib/jenkins/workspace/webver/
修改build-myweb工程。
4. 3. 保存后,重新构建测试
jenkins服务器为了方便最终的应用服务器下载,把软件打包压缩放到web目录下
1.安装apache
[root@node3 ~]# yum install -y httpd
[root@node3 ~]# systemctl start httpd
[root@node7 ~]# systemctl enable httpd
2.规划apache web服务器目录和文件
/var/www/html/deploy/lastver文件: 用于存储上一个版本号
/var/www/html/deploy/livever文件:用于存储当前版本号
/var/www/html/deploy/packages目录:用于保存软件的各个版本的压缩包和md5值
[root@node3 ~]# mkdir -p /var/www/html/deploy/packages
3.修改jenkins工程-----> 构建 -> 增加构建步骤 -> execute shell ->
拷贝版本文件到web目录
删除版本库文件
打包软件
删除软件目录,因为只保留压缩包即可
计算压缩包的md5值
将livever内容写到lastver
更新livever
4. 修改/var/www/html/deploy属主属组
[root@node7 ~]# chown -R jenkins.jenkins /var/www/html/deploy/
-
构建工程,测试。
[root@node3 ~]# ls /var/www/html/deploy/packages/ myweb-1.0
应用服务器自动化部署流程
/var/www/download: 用于保存下载的软件包
/var/www/deploy:用于保存livever版本文件和解压的软件包
/var/www/html/xxxx:指向某一版本目录的链接文件
发布应用:
编写脚本: