溯本求源=>奇怪的现象1:python脚本jenkins执行和本地执行效果不一样——找到原因啦~

  • Post author:
  • Post category:python


python脚本jenkins执行和本地执行效果不一样

脚本内容:

cmd0 = ‘cd /GITREPO/U490_0611.git && git log > /home/fuxin/git_log’

commands.getoutput(cmd0)

fo=open(“/home/fuxin/git_log”,mode=‘r’)

for line in fo.readlines(1):

line = line.strip()

print line

fo.close()

在本地执行能每次都生成新的git_log并覆盖之前的git_log;

在jenkins上执行可以生成git_log文件,远程查看到的git_log文件却没有更新

因为jenkins可以生成文件,所以我采取每次都删掉重新生成来解决整个问题

cmd01 = ‘rm /home/fuxin/git_log’

commands.getoutput(cmd01)


后来又尝试把去掉删除文件的命令,恢复到最初的脚本,又好了???一脸问号

好了之后我就突然醒悟了


溯本求源=>


这个git_log文件能不能更新的原因是因为我之前是在本地用root账号创建的;

而jenkins是用fuxin账号管理的,所以它管理不了这个文件

root@GC-GIT-Server:/home/fuxin# ls -l

total 1544

-rw-r–r– 1 root root 43783 Jun 29 14:32 git_log

后来我好了是因为我在本地删除了该文件,用jenkins生成了fuxin账号的git_log文件,所以每次它能管理这个文件,所以可以更新

-rw-rw-r– 1 fuxin fuxin 44201 Jun 29 14:43 git_log

有3种解决方法

1.规避的方法,每次删掉原来的文件,生成新文件,其实归根结底是由jenkins的账号fuxin生成了文件;

2.由jenkins生成基础文件git_log,使其属主为fuxin

3.本地用fuxin账号生成基础文件git_log,使其属主为fuxin

最好的能在python脚本里加打印,如果fuxin的权限更新不了文件,那用fuxin账号执行这几条命令时到底做了什么事?因为这个简单还能一步步手动排除,如果复杂了必须加打印来定位问题

手动执行发现有bash错误:

cd /GITREPO/U490_0611.git && git log > /home/fuxin/git_log

bash: /home/fuxin/git_log: Permission denied

但是这个log在python文件里没有报错!!

后面技术精进了继续优化~



版权声明:本文为qq_33411994原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。