基于公司git版本控制,搭建jenkins实现php集成部署

一.安装jenkins相关依赖

wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins
yum install java
yum install java-1.8.0-openjdk
yum install php
yum install php-devel
yum install php-pear
yum install re2c
yum install php-pear-phing

  

二.jenkins配置和启动

service jenkins start
输入localhost:8080即可访问。

三.插件安装

系统管理-插件设置
安装以下插件
Phing(php构建工具)
Publish Over SSH Plugin(通过ssh发布代码)

 

四.配置SSH免登录

参考:ssh免密码登录

五.配置Publish Over SSH Plugin

系统管理—系统设置

Jenkins SSH Key:生成rsa的时候设置的ssh key,若没有设置则留空。 
Key:填上发布服务器(jenkins所在机器)私钥的内容。默认路径 ~/.ssh/id_rsa 
Hosename:填上部署服务器(应用服务器)的IP 
username:填上部署服务器(应用服务器)的帐号
 
六.配置phing build.xml
进入当前job的项目目录  例如:cd /var/lib/jenkins/workspace/git
build.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="api" default="build">
<target name="build" depends="make_runtime,check,tar"/>
<property name="version-m" value="1.1" />
<property name="version" value="1.1.0" />
<property name="stability" value="stable" />
<property name="releasenotes" value="" />
<property name="tarfile" value="${phing.project.name}.${buildnumber}.${buildid}.tar.gz" />
<property name="pkgfile" value="${phing.project.name}.${version}.tgz" />
<property name="distfile" value="dist/${tarfile}" />
<property name="tests.dir" value="test" />
<fileset id="api.tar.gz" dir=".">
注意:此处为对上传文件的限制,这里还可以使用 exclude 排除文件和文件夹,如果没有限制默认为上传所有
<include name="test/**"/>
<include name="*.php"/>
<include name="*.xml"/>
</fileset>
<target name="make_runtime">
<mkdir dir="${project.basedir}/Runtime" />
<mkdir dir="${project.basedir}/build/logs" />
<mkdir dir="${project.basedir}/build/pdepend" />
<mkdir dir="${project.basedir}/build/code-browser" />
</target> <target name="check" description="Check variables" >
<fail unless="version" message="Version not defined!" />
<fail unless="buildnumber" message="buildnumber not defined!" />
<fail unless="buildid" message="buildid not defined!" />
<delete dir="dist" failonerror="false" />
<mkdir dir="dist" />
</target> <target name="tar" depends="check" description="Create tar file for release">
<echo msg="Creating distribution tar for ${phing.project.name} ${version}"/>
<delete file="${distfile}" failonerror="false"/>
<tar destfile="${distfile}" compression="gzip">
<fileset refid="api.tar.gz"/>
</tar>
</target>
</project>

  

七.开始构建项目

新建—输入项目名称,选择构建自由风格的软件项目—下一步

八.配置源码管理(以git为例)

增加构建步骤,选择Invoke Phing targets,再新增一个构建步骤,选择Send files or execute commands over SSH 

Phing targets配置如下 

Send files or execute commands over SSH 配置如下

注释:

Source files:dist/api.${BUILD_NUMBER}.${BUILD_ID}.tar.gz 
Remove prefix:dist/ 
Remote directory: /home/data/ 
Exec command: 
mkdir -p /home/data/ 
mkdir-p /home/www/ 
cd /home/data/ 
tar -zxf api.${BUILD_NUMBER}.${BUILD_ID}.tar.gz -C /home/www/ 
 
**此处可以写进入到 应用服务器的shell脚本,例如给指定文件夹分配权限
 
/test/data/ 为应用服务器接收打包文件的目录 
/test/www/ 为应用服务器PHP项目运行的目录
保存即可。
接下来进入项目–立即构建,完成后我们进入应用服务器,查看代码。
 
部署完成~ 

 

jenkins 简单实现php集成上线部署的更多相关文章

  1. Jenkins+Gitlab实现持续集成持续部署

    一.GITLAB安装与使用 官网:https://about.gitlab.com/ 1.GITLAB安装要求 (1)中文文档地址 ​ https://docs.gitlab.cn/jh/instal ...

  2. Docker学习-jenkins+github实现持续集成和部署

    上一篇介绍了docker环境搭建,本篇继续深入,结合jenkins利用docker-compose容器编排简单介绍下如何实现个人学习的持续集成/部署. 本篇学习曲线: 1.安装/运行jenkins容器 ...

  3. Linux-GitLab+Jenkins持续集成+自动化部署

    GitLab+Jenkins持续集成+自动化部署 什么是持续集成? (1)Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个 ...

  4. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(三):搭建jenkins集群环境

    写在前面 大家可以看到本文的配图,左边是jenkins单机环境,右边是jenkins集群.个中区别,不言而喻,形象生动. 前面我分别介绍了.net core 程序的多种部署方式(无绝对孰优孰劣): 1 ...

  5. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署

    前面又是废话 我之前写过: Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署 Asp.Net Core 程序部署到Linux(centos)生产环境(二):doc ...

  6. 持续集成①安装部署jenkins从git获取代码

    持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...

  7. 敏捷:你能区分DevOps中的“集成、部署、交付、上线、发布”吗?

    在DevOps中,你可能经常会听到类似这样的一些话: 功能还没集成进来. 功能还没部署上去. 功能还没交付. 功能还没上线. 功能还没发布. 请问,以上“集成”.“部署”. “交付”.“上线”.“发布 ...

  8. devops持续集成,Centos7.6下gitlab+jenkins(pipeline)实现代码自动上线

    持续集成 gitlab+jenkins(pipeline)实现代码自动上线 环境准备:Centos7.6版本ip:192.168.0.13 主机名:gitip:192.168.0.23 主机名:jen ...

  9. Jenkins持续集成与部署

    一.Jenkins简介 在阅读此文章之前,你需要对Linux.Docker.Git有一定的了解和使用,如果还未学习,请阅读我前面发布的相关文章进行学习. 1.概念了解:CI/CD模型 CI全名Cont ...

随机推荐

  1. 笔记-JS高级程序设计-基本概念篇

    1:JS中的一切(变量,函数名和操作符)都是区分大小写的 2:标识符(变量,函数,属性的名字,以及函数的参数),第一个字符必须是字母,下划线,或者美元$,书写方式采用驼峰式,不能将关键字作为标识符. ...

  2. 杭电oj-1000-A+B

    Problem Description Calculate A + B. Input Each line will contain two integers A and B. Process to e ...

  3. XeLaTeX中文模板

    XeLaTeX对中文的支持很友好,可以直接调用系统已安装字体进行文档的撰写.其中需要引用字体的名字,开始遇到了写问题,经常发现字体未引用,现在大概明白了. 引用字体的时候,如果不加中括号,就需要引用字 ...

  4. 进入TP-Link路由器之后利用快捷键F12查看星号路由密码的方法

    今天又破解了几个路由器,这两张图片是大多数路由器如TP-LINK路由器查看拨号圆点密码的方法.

  5. 兄弟连PHP培训教你提升效率的20个要点

    兄弟连PHP培训教你提升效率的20个要点 用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字 ...

  6. 生成式模型之 GAN

    生成对抗网络(Generative Adversarial Networks,GANs),由2014年还在蒙特利尔读博士的Ian Goodfellow引入深度学习领域.2016年,GANs热潮席卷AI ...

  7. Vue之八 HTML5 History模式

    nginx配置 location / { root /webroot/www/ShopMall3; try_files $uri $uri/ /index.html; } /:访问路径: root:服 ...

  8. java实现循环链表的增删功能

    java实现循环链表的增删功能,完整代码 package songyan.test.demo; public class Demo { // java 实现循环链表 public static voi ...

  9. 小白学PYTHON时最容易犯的6个错误,看看你遇到过几个

    最近又在跟之前的同学一起学习python,一起进步,发现很多测试同学在初学python的时候很容易犯一些错误,特意总结了一下.其实这些错误不仅是在学python时会碰到,在学习其他语言的时候也同样会碰 ...

  10. Algorithm --> 二分图最大匹配

     匈牙利算法 二分图:把一个图的顶点划分为两个不相交集 U  和 V ,使得每一条边都分别连接U . V  中的顶点.如果存在这样的划分,则此图为一个二分图. 匹配:在图论中,一个「匹配」(match ...