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文件里没有报错!!
后面技术精进了继续优化~