| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #!/usr/bin/env groovy
- def call(Map args = [:]) {
- String distName = args.distName ?: env.DIST_NAME ?: 'dist'
- String distPath = args.distPath ?: env.DIST_PATH ?: "${env.WORKSPACE}/dist"
- String remoteHost = args.remoteHost ?: env.REMOTE_HOST ?: error('REMOTE_HOST 未配置')
- String remotePath = args.remotePath ?: env.REMOTE_PATH ?: error('REMOTE_PATH 未配置')
- String remoteDist = "${remotePath}/${distName}"
- String backupName = "${distName}-\$(date +%Y%m%d%H%M)"
- PrintMes("开始发布 ${distName} 到 ${remoteHost}", 'yellow')
- try {
- /* 1. 判断远程是否存在同名目录,存在则备份 */
- sh """
- ssh -o StrictHostKeyChecking=no ${remoteHost} \
- 'if [ -d ${remoteDist} ]; then
- mv ${remoteDist} ${remotePath}/${backupName} &&
- echo "备份完成:${backupName}"
- fi'
- """
- /* 2. 上传新包 */
- sh """
- scp -o StrictHostKeyChecking=no -r ${distPath} ${remoteHost}:${remoteDist}
- """
- /* 3. 刷新服务 */
- sh """
- ssh -o StrictHostKeyChecking=no ${remoteHost} \
- 'chmod -R 755 ${remoteDist} &&
- chown -R www-data:www-data ${remoteDist} &&
- nginx -t && nginx -s reload'
- """
- PrintMes("发布成功 ${distName}", 'green')
- } catch (Exception e) {
- PrintMes("发布失败 ${distName} : ${e.message}", 'red')
- error('deployDist failed')
- }
- }
|