一.持续集成

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. ubuntu12.04 desktop默认无ssh支持

    sudo apt-get install ssh 安装下即可.

  2. WPF 杂谈——开篇简言。

    这俩年多来笔者一直在从事关于WPF的开发.虽然不能说是专家级别的.但是对于WPF的应用还是有一定的了解.论他的灵活性决对不在WinForm之下.WPF的出现更是引发一段热议.他的何去何从更是让很多人感 ...

  3. ios 视频拼接/合成

    上面的图说明的是这个混合的过程,下面放代码: - (void)mergeAndExportVideos:(NSArray*)videosPathArray withOutPath:(NSString* ...

  4. 编译MangosZero

    最近研究了一下魔兽世界模拟器MangosZero,花了两天时间终于编译成功!现在把编译的过程做个完整的记录,以便让想要学习编译的同学们少走弯路! 服务器端运行界面: 客户端运行界面: 一:下载源程序 ...

  5. JS里引用CSS属性时候的命名

        如果JS代码中设置<p>元素的另一个CSS属性font-family.这个属性的获取方式与color属性略有不同,因为 font和family之间的连字符与JS中减法操作符相同,J ...

  6. 基于opencv的车牌识别系统

    前言 学习了很长一段时间了,需要沉淀下,而最好的办法就是做一个东西来应用学习的东西,同时也是一个学习的过程. 概述     OpenCV的全称是:Open Source Computer Vision ...

  7. URL解析器urllib2

    urllib2是Python的一个库(不用下载,安装,只需要使用时导入import urllib2)它提供了一系列用于操作URL的功能. urlopen urllib2.urlopen可以接受Requ ...

  8. 详解Executor框架

    在Java中,使用线程来异步执行任务.Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源.同时,为每一个任务创建一个新线程来执行 ...

  9. CSS元素垂直居中方法总结

    坚持,坚持,坚持... 以上为自我鼓励,哈哈... ------------------------------------------------- 相信没有真正是尝试过的人应该都和我一样,觉得居中 ...

  10. 篇4 安卓app自动化测试-Appium API进阶

    篇4                 安卓app自动化测试-Appium API进阶 --lamecho辣么丑 1.1概要 大家好! 我是lamecho(辣么丑),今天是<安卓app自动化测试& ...