Shell - crontab 定时 git 拉取并执行 maven 打包
创始人
2024-05-31 22:14:33
0

目录

一.引言

二.踩坑与实践

1.原始代码

2.mvn package 未执行与解决 [导入环境变量]

3.git pull 未执行与解决 [添加绝对路径]

三.总结


一.引言

git 任务部署在通道机,每天6点需要定时更新 jar 包并打包上线,所以需要在 linux 服务器上:

A.部署 maven: 上一篇文章已经铺了完整过程:Linux 服务器 Maven 环境安装与测试

B.部署 git: 机器上已经有 git,所以省略了这一步,大家没有 git 可以搜索一下安装过程

C.crontab: 定时 git pull + mvn package,本文主要进行第三步实践。

二.踩坑与实践

1.原始代码

# 进入目标环境
echo `date`
echo cd 目录
cd $targetPath# 更新代码
echo git 更新
git pull# 重新打包
echo package...
sh $targetPath/package.sh

将代码添加至 corontab 并将输出流指向 log,发现到点后只有 echo 的日志,没有 pull 和 package 的日志:

Fri Mar 10 14:13:01 CST 2023
cd 目录
git 更新
package...

2.mvn package 未执行与解决 [导入环境变量]

package.sh 内部逻辑很简单即 mvn clean package 但是没有执行,通过网上查询发现是因为自己没有添加环境变量导致,在脚本前端增加 source 语句引入环境变量:

source /etc/profile
source /etc/bashrc

添加后发现重定向的 log 中 mvn package 信息已经正常输出,但是依旧不见 git 日志:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:57 min (Wall Clock)
[INFO] Finished at: 2023-03-10T14:16:00+08:00
[INFO] ------------------------------------------------------------------------

3.git pull 未执行与解决 [添加绝对路径]

上面明明已经添加了环境变量为什么 git 不生效呢,我们查看了一下 $PATH:

/usr/local/bin

再使用 whereis git 查看下 git 的位置:

git: /usr/bin/git /usr/share/man/man1/git.1.gz

git 在 /usr/bin 下,PATH 是 /usr/local/bin 所以 git 没找到,这里直接在脚本中指定为绝对路径:

source /etc/profile
source /etc/bashrc# 进入目标环境
echo `date`
echo cd 目录
cd $targetPath# 更新代码
echo git 更新
/usr/bin/git pull# 重新打包
echo package...
sh package.sh

再次添加至 crontab,这次终于有 git 的日志了:

Fri Mar 10 14:20:01 CST 2023
cd 目录
git 更新
Already up-to-date.
package...

三.总结

好久不写 shell 脚本,这么简单的逻辑搞了小半天实在不应该,深刻反思:

- shell 脚本一定要添加环境变量

- 添加环境变量找不到就用 whereis xxx 查找对应的绝对路径,下面是常用到的:

whereis java
whereis python
whereis maven

相关内容

热门资讯

老年大学太极专业联欢会主持词 老年大学太极专业联欢会主持词  老年大学太极专业联欢会主持词    尊敬的校领导,尊敬的*老师,亲爱...
公司年会主持词、活动内容 公司年会主持词、活动内容女:歌声袅袅辞旧岁男:舞姿翩翩贺新春 尊敬的各位来宾女:亲爱的同事们合:大家...
女儿婚礼父亲致辞 女儿婚礼父亲致辞15篇  在学习、工作或生活中,大家都尝试过写致辞吧,致辞是指在仪式上所讲的表示勉励...
家长会主持词 关于家长会主持词(通用13篇)  主持词要尽量增加文化内涵、寓教于乐,不断提高观众的文化知识和素养。...
简单婚礼主持词流程 简单婚礼主持词流程  开场前提示:现场的各位领导、来宾朋友们婚礼盛典即将开始,在婚礼开始之前温馨提示...
《我和僵尸有个约会》经典台词 《我和僵尸有个约会》经典台词  很多人问我金正中为何找这么泼辣的女人做师父,我也不离开她呢?第一、因...
教师节活动的主持词 教师节活动的主持词(通用10篇)  主持词需要富有情感,充满热情,才能有效地吸引到观众。在当今社会生...
参加小主持人自我介绍   导语:“千练万练,千盼万盼”,终于我们学校小主持人要开始比赛了。下面小编为你整理的参加小主持人自...
最新婚礼誓言主持词 最新婚礼誓言主持词(通用7篇)  根据活动对象的不同,需要设置不同的主持词。在各种集会、活动不断增多...
爷爷70大寿宴会主持词 爷爷70大寿宴会主持词尊敬的各位佳宾,亲爱的各位朋友,女士们,先生们:  中午好!  亲爱的朋友们,...
开幕主持词 开幕主持词  主持词已成为各种演出活动和集会中不可或缺的一部分。我们眼下的社会,各种场合可能都需要主...
文明班会的主持词 文明班会的主持词  男:说到文明礼仪,我们再熟悉不过了。  女:是啊,从生下来父母的教育,从入学后老...
广场舞比赛主持词 广场舞比赛主持词  主持词是在晚会、联欢会等大型联欢活动中,主持人把前后节目,把整台节目恰到好处地联...
中秋创意主持词 中秋创意主持词  主持词是主持人在节目进行过程中用于串联节目的串联词。在如今这个中国,主持词与我们不...
年终总结大会的主持词 年终总结大会的主持词(精选8篇)  主持词的写作需要将主题贯穿于所有节目之中。在当下的社会中,我们对...
开工仪式主持词 【必备】开工仪式主持词四篇  活动对象的不同,主持词的写作风格也会大不一样。在现在的社会生活中,各种...
幼儿园秋季运动会园长主持词 幼儿园秋季运动会园长主持词  主持词是主持人在台上表演的灵魂之所在。在人们积极参与各种活动的今天,主...
元旦联欢会主持词 元旦联欢会主持词  主持人在台上表演的灵魂就表现在主持词中。在当今社会生活中,各种场合中活跃现场气氛...