76 lines
1.5 KiB
Bash
76 lines
1.5 KiB
Bash
#!/bin/bash
|
||
|
||
log_file="auto_build.log"
|
||
lock_file="auto_build.lock"
|
||
timeout=600 # 超时时间,单位为秒
|
||
|
||
# 记录日志函数
|
||
log() {
|
||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$$] $1" >> "$log_file"
|
||
}
|
||
|
||
# 记录开始执行日志
|
||
log "start"
|
||
|
||
# 检查是否有其他进程正在执行
|
||
while [ -f "$lock_file" ]; do
|
||
another_pid=$(cat "$lock_file")
|
||
log "另一个进程[$another_pid]正在执行,等待中……"
|
||
sleep 5
|
||
timeout=$((timeout - 1))
|
||
if [ "$timeout" -le 0 ]; then
|
||
log "等待超时,退出"
|
||
exit 1
|
||
fi
|
||
done
|
||
|
||
# 创建锁文件
|
||
echo $$ > "$lock_file"
|
||
|
||
# 执行git pull
|
||
execute() {
|
||
log "$1"
|
||
result=$(eval "$1" 2>&1)
|
||
log "$result"
|
||
}
|
||
|
||
# 执行git pull
|
||
execute "git pull"
|
||
|
||
# 检查git pull执行结果
|
||
if [ $? -eq 0 ]; then
|
||
# git pull执行成功,执行yarn install
|
||
execute "yarn install"
|
||
|
||
# 检查yarn install执行结果
|
||
if [ $? -eq 0 ]; then
|
||
# yarn install执行成功,执行yarn build
|
||
execute "yarn build"
|
||
|
||
# 检查yarn build执行结果
|
||
if [ $? -ne 0 ]; then
|
||
# yarn build执行失败,异常退出
|
||
log "yarn build执行失败"
|
||
rm "$lock_file"
|
||
exit 1
|
||
fi
|
||
else
|
||
# yarn install执行失败,异常退出
|
||
log "yarn install执行失败"
|
||
rm "$lock_file"
|
||
exit 1
|
||
fi
|
||
else
|
||
# git pull执行失败,异常退出
|
||
log "git pull执行失败"
|
||
rm "$lock_file"
|
||
exit 1
|
||
fi
|
||
|
||
# 记录完成执行日志
|
||
log "done"
|
||
|
||
# 删除锁文件并正常退出
|
||
rm "$lock_file"
|
||
exit 0
|