一.持续集成

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项目的更多相关文章

  1. 自动化打包 Jenkins 持续集成 Git Gradle MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布

    环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...

  3. 什么是云效持续集成?如何关联Jenkins进行持续集成?

    什么是云效持续集成?如何关联Jenkins进行持续集成?云效流水线 Flow是一款企业级.自动化的研发交付流水线, 提供灵活易用的持续集成.持续验证. 持续发布功能,帮助企业高质量.高效率的交付业务. ...

  4. 持续集成之④:GitLab触发jenkins构建项目

    持续集成之④:GitLab触发jenkins构建项目 一:目的为在公司的测试环境当中一旦开发向gitlab仓库提交成功代码,gitlab通知jenkins进行构建项目.代码质量测试然后部署至测试环境, ...

  5. 「持续集成实践系列 」Jenkins 2.x 构建CI自动化流水线常见技巧

    在上一篇文章中,我们介绍了Jenkins 2.x实现流水线的两种语法,以及在实际工作中该如何选择脚本式语法或声明式语法.原文可查阅:「持续集成实践系列」Jenkins 2.x 搭建CI需要掌握的硬核要 ...

  6. 使用Docker搭建Jenkins+Docker持续集成环境(自动化构建发布部署)

    本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...

  7. Jenkins持续集成git、gitlab、sonarqube(7.0)、nexus,自动化部署实战,附安装包,严禁转载!!!

    导读 之前用的都是SVN,由于工作需要用到Git,求人不如求己,技多不压身,多学一项技能,未来就少求别人一次,系统的学一遍,自己搭建一整套环境,自动化部署(自动发版),代码质量检测等等(为啥不用doc ...

  8. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  9. 通过实例介绍持续集成的应用--基于Jenkins

    1.测试工程师为什么要掌握持续集成 一个程序员如果想发布一个产品,他需要编码.编译.测试,发布的过程.对于一个企业来说,如果也想发布一个产品的话,同样的也是需要上述的过程,区别在于企业要发布的产品的需 ...

随机推荐

  1. git clone时出现 error:inflate:data stream error(incorrect data check)

    git clone时出现 error:inflate:data stream error(incorrect data check) fatal:serrious inflate inconsiste ...

  2. cocoapods安装好后repo换源

    1.pod repo 然后会出现以下内容,如下是我已经换了之后的,而你的URL还是github的 master - Type: git (master) - URL:  https://git.cod ...

  3. 极化SAR图像基础知识(2)

    本篇主要关注物理含义 1.极化 电磁波在传播时,传播的方向和电场.磁场相互垂直,我们把电波的电场方向叫电波的极化.(i.e.依据电场E的方向来定义电磁波的极化). 如果电场矢量端点随时间变化的轨迹是一 ...

  4. iTunes制作iPhone手机铃声方法(mac版2017年4月更新)

    iTunes制作iPhone手机铃声方法(mac版2017年4月更新)   跟之前百度出来的不同,我自己使用后写的.     1.首先下载好你需要制作铃声的mp3文件,这里我放在桌面.       2 ...

  5. 记一次 Newtonsoft.Json 巧妙的用法(C#)

    数据添加的功能 有一个表格提交数据如下: 是否选择和文本值.分开保存到数据库太麻烦.取得时候也麻烦 想到了存成json数据.一个字段就可以了. html代码: <table class=&quo ...

  6. 图解WebGL&Three.js工作原理

    “哥,你又来啦?”“是啊,我随便逛逛.”“别介啊……给我20分钟,成不?”“5分钟吧,我很忙的.”“不行,20分钟,不然我真很难跟你讲清楚.”“好吧……”“行,那进来吧,咱好好聊聊” 一.我们讲什么? ...

  7. 2017/4/26-DOM解析XML文件

    DOM解析XML 1.分析 DOM是JAVA自带的XML解析API.DOM首先将XML文件全部加载至内存中,然后再内存中创建DOM树,生成DOM树上的每个Node节点. 2.优点 1) 可以创建或修改 ...

  8. bootstrap快速入门笔记(六)-代码

    一,内联代码<code>:For example, <code><section></code> should be wrapped as inline ...

  9. PLSQL 配置设置

    1.登录后默认自动选中MyObjects 默认情况下,PLSQLDeveloper登录后,Brower里会选择Allobjects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wa ...

  10. ConcurrentHashMap、HashTable、HashMap的区别

    HashTable与ConcurrentHashMap: 相同点:都是线程安全的,可以在多线程的环境下运行.key和value都不能为null 区别:性能上的差异.HashTable每次操作对象都会锁 ...