【持续集成】GIT+jenkins+snoar——jenkins发布php、maven项目
一.持续集成
1.1 什么是持续集成?
continuous integration (CI),持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员,每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化构建(包括编译、发布、自动化测试)来验证,从而尽快的发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
1.2 持续集成最佳实践
- 维护一个单一的代码库
- 使构建自动化
- 执行测试是构建的一部分
- 集成日志及历史记录
- 使用统一的依赖包管理库
- 每天至少集成一次
二. jenkins
2.1 什么是jenkins
Jenkins is an automation engine with an unparalleled plugin ecosystem to support all of your favorite tools in your delivery pipelines,wether your goal is continuous integration,automated testing,or continuous delivery.
Jenkins 是持续集成、自动测试、持续部署的超级引擎,支持自定义工具集、多种交付通道。
2.2 安装jenkins
#安装依赖
[root@linux-node2 ~]# yum install -y java-1.8.-openjdk java-1.8.-openjdk-devel
#下载Jenkins包
[root@linux-node2 src]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.32.3-1.1.noarch.rpm
#rpm安装
[root@linux-node2 src]# rpm -ivh jenkins-2.32.-1.1.noarch.rpm
#启动Jenkins
[root@linux-node2 src]# systemctl start jenkins
#查看端口是否启动
[root@linux-node2 src]# netstat -lntup
tcp6 0 0 :::8080 :::* LISTEN 17737/java
2.3 访问jenkins页面
打开浏览器:http://192.168.56.12:8080

输入密码:
#查看页面上提供的该文件内容(默认密码)
[root@linux-node2 src]# cat /var/lib/jenkins/secrets/initialAdminPassword
8afe5fe9dd7a48e0a1817b287b627dfc

选择安装默认插件或者直接关闭



看到以上界面,Jenkins就已成功安装
2.4 安装Jenkins插件
#将插件移动到指定目录下
[root@linux-node2 src]# mv plugins.tar.gz /var/lib/jenkins/
#进入指定目录
[root@linux-node2 src]# cd /var/lib/jenkins/
#解压插件
[root@linux-node2 jenkins]# tar xf plugins.tar.gz
7 #授权
8 [root@linux-node2 jenkins]# chown -R jenkins.jenkins plugins
#重启服务
[root@linux-node2 plugins]# systemctl restart jenkins



2.5 Jenkins配置
#编辑配置文件
[root@linux-node2 jenkins]# vim /etc/sysconfig/jenkins
#生产中建议使用Jenkins
JENKINS_USER="root"
2.6 Jenkins目录
/var/lib/jenkins 主目录
/etc/init.d/jenkins 启动文件
/var/cache/jenkins/ 程序文件
/var/log/jenkins/ 日志文件
三.发布PHP项目



丢弃旧的构建:保存10天的

找到GIT的项目URL(随便选的)



进项目界面,再点击 deploy keys

将那个KEY,enable一下

#在另一台机器上创建一个放代码的目录
[root@linux-node1 ~]# mkdir -p /data/www/php-deploy

点击立即构建
#查看构建后的代码
[root@linux-node2 php-deploy]# ll
total
-rw-r--r-- root root May : README.md
#查看Jenkins拉代码的目录
[root@linux-node2 php-deploy]# pwd
/var/lib/jenkins/workspace/php-deploy
#查看构建后是否同步成功
[root@linux-node1 ~]# ll /data/www/php-deploy/
total
-rw-r--r-- root root May README.md
至此,PHP项目就已成功发布。
四.发布maven项目

往gitlab上,上传一个maven项目:
#进入项目目录
[root@linux-node1 ~]# cd java2
#初始化成git仓库
[root@linux-node1 java2]# git init
Initialized empty Git repository in /root/java2/.git/
#添加
[root@linux-node1 java2]# git add .
#提交
[root@linux-node1 java2]# git commit -m "first commit"
[master (root-commit) 3bad291] first commit
files changed, insertions(+)
create mode pom.xml
create mode src/main/java/com/ghz/testweb/App.java
create mode src/test/java/com/ghz/testweb/AppTest.java
#远程仓库
[root@linux-node1 java2]# git remote add origin git@192.168.56.11:root/java-maven.git
#上传
[root@linux-node1 java2]# git push origin master



#手动安装maven
[root@linux-node2 ~]# tar xf apache-maven-3.3.-bin.tar.gz
#放到/usr/local下
[root@linux-node2 ~]# mv apache-maven-3.3. /usr/local/
#设置环境变量
[root@linux-node2 bin]# export PATH="$PATH:/usr/local/apache-maven-3.3.9/bin"
#添加到环境变量文件
[root@linux-node2 bin]# echo 'export PATH="$PATH:/usr/local/apache-maven-3.3.9/bin"' >> /etc/profile
#查看mvn版本
[root@linux-node2 bin]# mvn -v
Apache Maven 3.3. (bb52d8502b132ec0a5a3f4c09453c07478323dc5; --11T00::+:)
Maven home: /usr/local/apache-maven-3.3.
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.-openjdk-1.8.0.131-.b11.el7_3.x86_64/jre
Default locale: en_US, platform encoding: UTF-
OS name: "linux", version: "3.10.0-327.36.3.el7.x86_64", arch: "amd64", family: "unix"
17 #修改镜像
18 [root@linux-node2 bin]# vim /usr/local/apache-maven-3.3.9/conf/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>faxuan</id>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>default</id>
<repositories>
<repository>
<id>public</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>default</activeProfile>
</activeProfiles>
</settings



#查看构建结果
[root@linux-node2 target]# pwd
/var/lib/jenkins/workspace/java-maven/target
[root@linux-node2 target]# ll
total
drwxr-xr-x root root May : classes
drwxr-xr-x root root May : maven-archiver
drwxr-xr-x root root May : maven-status
-rw-r--r-- root root May : original-testweb-v1..jar
drwxr-xr-x root root May : surefire-reports
drwxr-xr-x root root May : test-classes
-rw-r--r-- root root May : testweb-v1..jar
【开源是一种精神,分享是一种美德】
— By GoodCook
— 笔者QQ:253097001
— 欢迎大家随时来交流
—原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
【持续集成】GIT+jenkins+snoar——jenkins发布php、maven项目的更多相关文章
- 自动化打包 Jenkins 持续集成 Git Gradle MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...
- 什么是云效持续集成?如何关联Jenkins进行持续集成?
什么是云效持续集成?如何关联Jenkins进行持续集成?云效流水线 Flow是一款企业级.自动化的研发交付流水线, 提供灵活易用的持续集成.持续验证. 持续发布功能,帮助企业高质量.高效率的交付业务. ...
- 持续集成之④:GitLab触发jenkins构建项目
持续集成之④:GitLab触发jenkins构建项目 一:目的为在公司的测试环境当中一旦开发向gitlab仓库提交成功代码,gitlab通知jenkins进行构建项目.代码质量测试然后部署至测试环境, ...
- 「持续集成实践系列 」Jenkins 2.x 构建CI自动化流水线常见技巧
在上一篇文章中,我们介绍了Jenkins 2.x实现流水线的两种语法,以及在实际工作中该如何选择脚本式语法或声明式语法.原文可查阅:「持续集成实践系列」Jenkins 2.x 搭建CI需要掌握的硬核要 ...
- 使用Docker搭建Jenkins+Docker持续集成环境(自动化构建发布部署)
本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...
- Jenkins持续集成git、gitlab、sonarqube(7.0)、nexus,自动化部署实战,附安装包,严禁转载!!!
导读 之前用的都是SVN,由于工作需要用到Git,求人不如求己,技多不压身,多学一项技能,未来就少求别人一次,系统的学一遍,自己搭建一整套环境,自动化部署(自动发版),代码质量检测等等(为啥不用doc ...
- [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...
- 通过实例介绍持续集成的应用--基于Jenkins
1.测试工程师为什么要掌握持续集成 一个程序员如果想发布一个产品,他需要编码.编译.测试,发布的过程.对于一个企业来说,如果也想发布一个产品的话,同样的也是需要上述的过程,区别在于企业要发布的产品的需 ...
随机推荐
- vuex 使用文档
安装 直接下载CDN 引用 <script src="/path/to/vue.js"></script> <script src="/pa ...
- python urllib模块
1.urllib.urlopen(url[,data[,proxies]]) urllib.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像 ...
- .NET Core中文分词组件jieba.NET Core
.NET Core中文分词组件jieba.NET Core,由于实际的一些需求,需要做中文分词. 找到了一个jieba.NET https://github.com/anderscui/jieba.N ...
- 【Shell】使用Shell脚本发布项目
第一次写Shell脚本,没经验,是直接写呢,还是要走流程( ̄▽ ̄)~* ---------------------------------------------------------------- ...
- 【理论篇】Percona XtraBackup 恢复单表
小明在某次操作中,误操作导致误删除了某个表,需要立即进行数据恢复. 如果是数据量较小的实例,并且有备份,即便是全备,做一次全量恢复,然后单表导出导入,虽然麻烦一点,却也花不了多少时间:如果是数据量大的 ...
- MySQL 事务与锁机制
下表展示了本人安装的MariaDB(10.1.19,MySQL的分支)所支持的所有存储引擎概况,其中支持事务的有InnoDB.SEQUENCE,另外InnoDB还支持XA事务,MyISAM不支持事务. ...
- 物理提取大绝招”Advanced ADB”???
近来手机取证有个极为重大的突破,是由手机取证大厂Cellebrite所率先发表的"Advanced ADB" 物理提取方法,此功能已纳入其取证设备产品UFED 6.1之中. 这个所 ...
- Native App和Web App 的差异
开发者们都知道在高端智能手机系统中有两种应用程序:一种是基于本地(操作系统)运行的APP:一种是基于高端机的浏览器运行的WebApp,本文将主要讲解后者. WebApp与Native App有何区别呢 ...
- bootstrap快速入门笔记(九)-响应式工具
一,可用的类 超小屏幕手机 (<768px) 小屏幕平板 (≥768px) 中等屏幕桌面 (≥992px) 大屏幕桌面 (≥1200px) .visible-xs-* 可见 隐藏 隐藏 隐藏 ...
- CSS3 02. 边框、边框圆角、边框阴影、边框图片、渐变、线性渐变、径向渐变、背景、过渡transition、2D转换
边框圆角 border-radius 每个角可以设置两个值,x值.y值 border-top-left-radius:水平半径 垂直半径 border-radius:水平半径/垂直半径 border- ...