python语言编写的php laravel项目发布脚本(生产环境实测)

402 查看

python语言编写的php laravel项目发布脚本(生产环境实测)

使用

全部执行:./deploy.py --all

优化系统:./deploy.py --optimize

composer:./deploy.py --composer

使用帮助:./deploy.py --help

代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import subprocess, sys

def execute( args = [], runAll = False ):
    # composer必须是优先执行的
    if '--composer' in args:
        args.remove( '--composer' )
        args.insert( 0, '--composer' )

    if True == runAll:
        cmdList = getCommands( 'all' )
    else:
        cmdList = []
        for arg in args:
            cmdList += getCommands( arg )

    if ( 0 == len( cmdList ) ):
        if ( 1 < len( args ) ):
            showHelp()
        else:
            cmdList = getCommands( '--optimize' )

    for cmd in cmdList:
        subprocess.call( cmd, shell = True )

    print '发布成功!'
    sys.exit(0)

def showHelp():
    print '\n可用参数:'
    print '--optimize       更新配置缓存、更新路由缓存, 新增路由至数据库'
    print '--composer       更新composer依赖关系'
    print '';
    sys.exit(0)

def getCommands( option ):

    if 'all' == option:
        cmdList = []
        # 分多行时注意行尾加 "\"
        cmdList += getCommands( '--composer' ) \
        + getCommands( '--optimize' )

        return cmdList
    elif '--optimize' == option:
        return [
            'php artisan cache:clear',
            'php artisan config:cache',
            'php artisan route:cache',
        ]
    elif '--composer' == option:
        return [
            'composer update'
        ]
    else:
        return []

if __name__ == '__main__':
    args = sys.argv
    if '--help' in args:
        showHelp()
    elif '--all' in args:
        execute(args, True)
    else:
        execute(args)