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免登录

假设有两台服务器。A为发布机,即jenkins所在机器。B为应用服务器,即运行PHP的服务器。 
首先在A服务器生成公私钥。 
ssh-keygen -t rsa

这时.ssh目录下会生成私钥和公钥的键值对id_rsa,id_rsa.pub

将id_rsa.pub公钥复制到B服务器上,并重命名为authorized_keys。 
scp ~/.ssh/ras.pub root@B:/root/.ssh/authorized_keys

这时候ssh到B服务器则无需登录密码。 
ssh root@B

注:若生成RSA密码的时候设置了ssh key,SSH到B服务器的时候还需要输入相应ssh key。

配置Publish Over SSH Plugin

系统管理—系统设置 
这里写图片描述

这里写图片描述
Jenkins SSH Key:生成rsa的时候设置的ssh key,若没有设置则留空。 
Key:填上A服务器私钥的内容。默认路径 ~/.ssh/id_rsa 
Hosename:填上B服务器的IP 
username:填上B服务器的帐号

配置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=".">
            <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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

这里我们只做简单发布,没有加入php-unit等插件。

开始构建项目

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

配置源码管理

这里我们用的是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/ 


/home/data/ 为B服务器接收打包文件的目录 
/home/www/ 为B服务器PHP项目运行的目录

保存即可。

接下来进入项目–立即构建,完成后我们进入B服务器。 

cd /home/data 

这里写图片描述

至此已经大功搞成了。

猜你喜欢

转载自blog.csdn.net/qw_xingzhe/article/details/82312840