【持续集成】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.测试工程师为什么要掌握持续集成 一个程序员如果想发布一个产品,他需要编码.编译.测试,发布的过程.对于一个企业来说,如果也想发布一个产品的话,同样的也是需要上述的过程,区别在于企业要发布的产品的需 ...
随机推荐
- Android中的socket本地通讯框架
一.先分析Native层: 1.C++基类SocketListener: class SocketListener { int mSock; const char *mSocketNa ...
- 伸展树(Splay树)的简要操作
伸展树(splay树),是二叉排序树的一种.[两个月之前写过,今天突然想写个博客...] 伸展树和一般的二叉排序树不同的是,在每次执行完插入.查询.删除等操作后,都会自动平衡这棵树.(说是自动,也就是 ...
- [转载]转载一篇好文章作为Java与面向对象之随感(3)
关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用, 那实在没法很 ...
- 第六章 Hibernate关联映射
第六章 hibernate关联映射一.本章知识点分为2部分:1.关联关系:单向多对一关联关系,双向一对多关联关系(含一对多关联关系),多对多关联关系2.延迟加载:类级别加载策略,一对多加载策略,多对一 ...
- CSS开发框架技术OOCSS编写和管理CSS的方法
目前最流行的CSS开发框架技术当属OOCSS,尽管还有其他类似技术(如BEM).这些方法试图对CSS采用面向对象的编程原则.样式语言与面向对象的设计原则在概念之间存在一定的问题.欠缺经验的人员可能不会 ...
- 交作业啊,python爬取58的页面
第一次写博文,好紧张啊,写这么烂怎么给别人看啊先做下总结: 刚开始学习python,自我感觉python写起来确实很方便,各种库,各种语法糖,不过刚接触,一下子记不下来这么多东西,总感觉乱乱的,用的多 ...
- 《Vue2.0 实践揭秘》终于出版啦!
不知不觉间在园子开博都两年多了,最近一些园友问最近去哪了为何都没有新的文章了.最近确实发生了很多的事,一是忙工作二就是忙着写书.这还得多些园子的小编,自两年前发表的"架构师修炼"系 ...
- Java设计模式之(建造者模式)
建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式通常包括下面几个角色: 1. builder:抽象建造者,给出一个抽象接口,以规范产品对象的各个组 ...
- IOC容器的依赖注入
1.依赖注入发生的时间 当Spring IoC容器完成了Bean定义资源的定位.载入和解析注册以后,IoC容器中已经管理类Bean定义的相关数据,但是此时IoC容器还没有对所管理的Bean进行依赖注入 ...
- 完美实现在同一个页面中使用不同样式的artDialog样式
偶然发现artDialog.js这个插件,就被其优雅的设计及漂亮的效果深深吸引,在做例子时碰到了一些想当然它应该提供但却没有提供的功能,不过这都不影响我对它的喜爱,下面说一下遇到的问题吧! artDi ...