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?>
<project>
        <target/>
        <property  />
        <property    />
        <property  />
        <property value="" />
        <property     />
        <property     />
        <property    />
        <property />
        <fileset>
            <include/>
            <include/>
            <include/>
        </fileset>
        <target>
                <mkdir />
                <mkdir />
                <mkdir />
                <mkdir />
        </target>

        <target >
            <fail />
            <fail />
            <fail />
            <delete />
            <mkdir />
        </target>

        <target>
            <echo/>
            <delete/>
            <tar>
                <fileset/>
            </tar>
        </target>
</project>

这里我们只做简单发布,没有加入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

至此已经大功搞成了。

标签:部署JenkinsPHP 发布于:2019-11-13 15:46:32