jenkins构建部署php项目

时间:2024-05-21 19:06:21

一、前期准备

  1. 代码发布服务器jenkins:47.103.2.240
  2. PHP服务器[需要部署代码的服务器]:106.14.67.208,47.101.34.240
  3. 配置SSH免秘钥,使发布服务器和PHP服务器相互之间都能够免秘钥远程登陆
  4. PHP服务器上启动rsync服务,centos默认启动

建议Jenkins 与需要部署代码的服务器最好是同一个区域的主机避免外网传输影响传输速度

配置jenkins

Jenkin环境使用dockerfile构建https://code.aliyun.com/web2020/jenkins.git

1、浏览http://47.103.2.240:81/jenkins/,访问jenkins发布服务器

2、登录后找到,系统管理->管理插件->可选插件,搜索Publish Over SSH,安装插件

3、配置需要集群部署的服务器ssh连接,系统管理->系统设置->Publish over SSH->SSH Servers ,点击新增配置ssh,点击高级可展开更多配置,如有多台就配置多台,配置图中几项即可,然后点击保存应用。

publish over ssh

    --passphrase : 生成rsa的时候设置的ssh key(密码),若没有设置则留空

--path to key : 填写秘钥的路径,默认路径 ~/.ssh/id_rsa

--key : 粘贴发布jenkins服务器的私钥

ssh servers

    --name : 定义名称

--Hosename : 填上集群部署服务器的IP

--username : 填上集群部署服务器的帐号,我选择root账户

--Remote Directory : 填写/[表示构建时的相对目录]

配置完成后测试连接是否成功: 点击Test Configuration, 出现Success即为连接成功

如果是多台web server,继续点击“增加”,重复以上操作。点左下角的“保存”jenkins构建部署php项目

jenkins构建部署php项目

 

 

构建服务器集群部署代码任务

新建任务,输入任务名,最好用项目域名或其他可识别项目的名称

选择à构建一个*风格的软件项目jenkins构建部署php项目

 

配置任务

点击任务à配置

1、General选项

配置  丢弃旧的构建à保持构建的天数输入10天,设置保持构建的最大个数输入10,可按需设置jenkins构建部署php项目

 

配置  参数化构建过程,添加设置两个文本参数

status-构建动作,默认值有deploy-发布,roll_back-回滚

version-构建记录id值,默认值为0,用于回滚操作

version-构建记录id值:相当于回滚版本,选择哪个构建记录的ID值,就回滚到哪个版本jenkins构建部署php项目

 

2、源码管理 选项

我这里使用的是阿里云的http://code.aliyun.com版本管理,拉取的是master分支

Credentials:秘钥相关设置,添加的是私钥,也可以用账户密码来认证代码的拉取

该选项只能添加,不能删除。秘钥的添加或删除可以在首页”凭证”选项进行操作jenkins构建部署php项目

 

3、构建 选项

增加构建步骤à执行shell

case $status in

  deploy)

    echo "status:$status"

    backup_path="${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${BUILD_NUMBER}/target"

    deploy_path="/data/${JOB_NAME}/deploy_target"

    if [ -d $backup_path ];then

        echo "$backup_path is exists!"

    else

        mkdir -p $backup_path

    fi

    if [ -d $deploy_path ];then

        echo "$deploy_path is exists!"

    else

        mkdir -p $deploy_path

    fi

    rsync -az ${WORKSPACE} $backup_path/ --delete

rsync -az ${WORKSPACE} $deploy_path/ --delete

echo "deploy done!"

    ;;

  roll_back)

    echo "status:$status"

    echo "build_id:$version"

    backup_path="${JENKINS_HOME}/jobs/${JOB_NAME}/builds/$version/target"

    deploy_path="/data/${JOB_NAME}/deploy_target"

    rm -rf $deploy_path

    cp -r $backup_path $deploy_path/

    echo "roll_back done!"

    ;;

  *)

    exit

    ;;

esac

 

jenkins构建部署php项目

构建过程的脚本功能说明:

脚本分为"发布"和"回滚"

发布:

先把git拉下来的代码,备份到backup_path这个变量的目录里,再复制到deploy_path这个变量的发布目录里

回滚:

根据构建记录ID找到对应的备份代码目录,然后复制到deploy_path这个变量的发布目录里

4、构建后操作 选项

选择Send build artifacts over SSH

SSH Server->Name :选择刚刚配置好的服务器集群的服务器

SSH Server->Transfers->Exec command,输入:

rsync -avz --exclude-from=/opt/exclude.list [email protected]:/jenkins/data/chandao.com/deploy_target/workspace/ /opt/chandao.com --delete

chmod -R 755 /opt/chandao.com

我这集群有2台服务器,所有点击Add Server再添加另外一台,如果有多台继续添加即可jenkins构建部署php项目

jenkins构建部署php项目

 

 

 

配置好后,保存

 

jenkins构建部署php项目

总结发布流程的思路

在”构建”选项中,把远程GIT仓库的代码拉倒jenkins发布服务器后,执行shell脚本,复制代码至相应目录

在”构建后”选项中,集群中的服务器使用rsync命令把发布服务器中的代码同步到本地的WEB目录

测试

1、发布

测试1:第一次发布项目

发布任务à选择build with parameters,参数选择deploy,点击开始构建jenkins构建部署php项目

jenkins构建部署php项目

 

 

点击构建ID,选择控制台输出,查看日志过程jenkins构建部署php项目

jenkins构建部署php项目

 

 

日志无报错A,B服务器都发布完成,检查服务器web项目访问正常测试功能正常成功

测试2:升级版本[更新或添加了代码文件]

Git仓库更新了代码,需要发布版本

删除test目录下的redis.php文件添加index.html文件

修改version文件内容,添加一个字符串--test

更新git项目master分支代码

按照上面发布的步骤,重新构建,查看控制台的输出日志,和服务器上文件的改动

检查日志正常

--A服务文件检验,成功:

jenkins构建部署php项目

 

--B服务文件检验,成功:

jenkins构建部署php项目

 

2回滚

目前的最新发布的版本为2,我们需要回滚至上一个版本,也就是标识1的位置jenkins构建部署php项目

 

点击 build with parameters

Status参数:roll_back   , version参数: 1jenkins构建部署php项目

 

校验A服务器

jenkins构建部署php项目

 

校验B服务器

jenkins构建部署php项目

 

已经回滚至上一个版本