记录服务器上自动拉取GIT服务器代码部署流程

记录服务器上自动拉取GIT服务器代码部署流程

下面是需要安装的:
1.git安装
2.Expect安装 Expect是一个用来处理交互的工具,通常用于需要手动输入数据的场景,可在脚本中使用expect来实现自动化.

网上很多资料上面的安装步骤就不说了。

代码服务器

首先必须有一台管理代码的服务器(Git服务器搭建网上很多资料),我们自己没有搭建使用的是https://coding.net平台管理代码。

基本思路:
#我们本地执行git push命令到git服务器,git服务器触发一个访问我们项目的URL通知。
#我们项目服务器接收到通知后,执行shell脚本(shell脚本定时检查git是否有新的通知)拉取git服务器上的最新代码。

具体步骤如:
1.coding.net平台管理代码(注册账号、创建项目、设置项目中成员可以访问、设置项目中WebHook项的通知地址(http://www.xxx.com/updated/git_code.php 项目服务器中的地址)
2.项目服务器部署
1)创建通知代码
2)创建shell脚本循环检查拉取代码
3.执行shell脚本在后台运行

具体实现:
1.coding.net平台管理具体操作这里就不说了,上面有相应的操作文档.

2.主要说一下服务器上的部署:

1) 创建通知代码,文件名为:git_code.php 这个文件需放到PHP可以执行的地方.
如:http://www.xxx.com/updated/git_code.php 
文件内容(创建一个新的文件updated_pull.lock,里面写一点内容 updated file):
    <?php
        $myfile  = fopen("/local/webroot/updated_pull.lock", "w") or die("Unable to open file!");//打开文件
        $txt = "updated file\n";//写入文件的内容
        fwrite($myfile, $txt);//内容写入文件
        fclose($myfile);//关闭文件
   ?>
2) 创建shell脚本循环检查拉取代码(文件名:/local/webroot/updated_pull.sh)
		#!/bin/bash
		myFile="/local/webroot/updated_pull.lock";
		while true
		do
		    if [ -f $myFile ]; then

						cd "/local/webroot/project_test";
						/usr/bin/expect <<-EOF
						set time 30
						spawn git pull origin master:master
						expect "Username" {send "[email protected]\r"}
						expect "Password" {send "123456\r"}
						expect eof
						EOF

		                rm $myFile;
		        fi
		        sleep 5;
		done

3.执行shell脚本在后台运行即可

	//启动自动更新脚本
	nohup /local/webroot/updated_pull.sh &

    nohup命令一般linux都会有,如果没有安装即可。

猜你喜欢

转载自blog.csdn.net/weixin_44779326/article/details/88576476