build: 完善 deploy.py 校验逻辑(ssh -q 静默 + 完整 hash 比对)
This commit is contained in:
@@ -29,7 +29,7 @@ os.chdir(ROOT)
|
|||||||
# "The following paths are ignored by one of your .gitignore files")
|
# "The following paths are ignored by one of your .gitignore files")
|
||||||
|
|
||||||
DEFAULT_MSG = 'chore: 部署更新'
|
DEFAULT_MSG = 'chore: 部署更新'
|
||||||
SSH_BASE = ("ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null "
|
SSH_BASE = ("ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null "
|
||||||
"-o ConnectTimeout=10 ubuntu@106.55.169.92")
|
"-o ConnectTimeout=10 ubuntu@106.55.169.92")
|
||||||
REMOTE_DIR = "/var/www/qianshi"
|
REMOTE_DIR = "/var/www/qianshi"
|
||||||
TIMEOUT = 60
|
TIMEOUT = 60
|
||||||
@@ -104,16 +104,18 @@ def deploy(msg=DEFAULT_MSG):
|
|||||||
return False
|
return False
|
||||||
log(' %s' % out.splitlines()[-1] if out else ' ok')
|
log(' %s' % out.splitlines()[-1] if out else ' ok')
|
||||||
|
|
||||||
# 校验三端一致
|
# 校验两端一致(取完整 hash 的最末纯 hash 行,避免 pull 进度信息干扰)
|
||||||
_, local = sh(['git', 'rev-parse', '--short', 'HEAD'])
|
_, local = sh(['git', 'rev-parse', 'HEAD'])
|
||||||
_, srv = remote('git rev-parse --short HEAD', 30)
|
_, srv = remote('git rev-parse HEAD', 30)
|
||||||
srv = srv.strip().splitlines()[-1] if srv else '?'
|
srv_hash = next((l for l in srv.splitlines() if len(l) == 40 and all(
|
||||||
if local != srv:
|
c in '0123456789abcdef' for c in l)), '?')
|
||||||
log('!! 本地 %s != 服务器 %s,同步失败' % (local, srv))
|
if local != srv_hash:
|
||||||
|
log('!! 本地 %s != 服务器 %s,同步失败' % (local[:7], srv_hash[:7]))
|
||||||
return False
|
return False
|
||||||
|
log(' 服务器 HEAD: %s' % srv_hash[:7])
|
||||||
log('')
|
log('')
|
||||||
log('=== 部署完成 ===')
|
log('=== 部署完成 ===')
|
||||||
log('提交: %s %s' % (local, msg))
|
log('提交: %s %s' % (local[:7], msg))
|
||||||
log('本地/服务器 已同步,工作流无 commit 交叉')
|
log('本地/服务器 已同步,工作流无 commit 交叉')
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user