如何让Jenkins WAR文件在其他用户下运行?

时间:2015-10-26 17:35:05

标签: tomcat jenkins permissions

我已经在这种Linux版本上将最新的Jenkins WAR部署到Tomcat 6服务器......

[daveaip-30-888-22-999 ~]$ uname -a
Linux ip-30-888-22-999 4.1.7-99.99.amzn1.x86_64 #1 SMP Mon Sep 14 23:20:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

我有一个构建Gradle项目的工作。构建成功后,我想将新生成的WAR文件复制到Tomcat 6目录。我有这个shell脚本作为额外的构建步骤...

cp ./build/libs/myproject.war /usr/share/tomcat6/webapps

Tomcat6 webs目录具有以下权限......。

[daveaip-30-888-22-999 ~]$ ls -al /var/lib/tomcat6/webapps
total 77876
drwxrwxr-x  4 tomcat tomcat     4096 Oct 23 19:52 .

但命令因此错误而失败......

+ cp ./build/libs/myproject.war /usr/share/tomcat6/webapps
cp: cannot create regular file ‘/usr/share/tomcat6/webapps/myproject.war’: Permission denied

我需要做些什么来授予Jenkins复制此文件的权限?我不想将目录的perms更改为777。

编辑:在回答给出的答案时,我添加了一个" whoami"进入构建脚本......

whoami
cp ./build/libs/myproject.war $CATALINA_HOME/webapps

输出

+ whoami
tomcat
+ cp ./build/libs/myproject.war /usr/share/tomcat6/webapps

所以我已经在作为目录所有者的用户下运行。

1 个答案:

答案 0 :(得分:1)

  1. 然后查看运行cp ./build/libs/myproject.war /usr/share/tomcat6/webapps命令的用户,您可以向该用户授予权限。

  2. build - >中运行此命令Shell Script的{​​{1}}部分。{/ 1}}。{/ 1}}

    configure

    然后,从teminal本地运行此命令以更改目录的所有权。

    $ whoami    // show the user, say 'xyz'
    
  3. 如果两个或更多用户需要该目录的权限,那么您可以使用$ sudo chown -R xyz: /var/lib/tomcat6/webapps // give permission to that user 创建group,然后只授予该users权限。见this& this