在工作中,我们最近开始使用Jenkins CI作为我们的Java代码。我们非常喜欢它,我们想将它用于一些PHP项目和我们维护的一些WordPress主题。
我已经设置了Jenkins运行gulp任务来构建主题,这很好。然后我有一个部署作业,删除旧主题并移动新代码。这就是问题所在。我有一个在部署作业中运行的bash脚本,如下所示:
whoami
mv /var/www/html/wordpress/wp-content/themes/my-theme /var/www/html/wordpress/wp-content/backups/theme/$(date '+%F')_$BUILD_NUMBER-backup_my-theme
mv $JENKINS_HOME/workspace/Build_MyTheme/build/my-theme /var/www/html/wordpress/wp-content/themes
当这个运行时,我会进入权限问题。很多“权限被拒绝”的错误。 whoami
命令打印tomcat
。然后,就像我提到的那样,之后的命令会为移动文件夹(其父文件夹和self,由apache
拥有)抛出权限被拒绝的错误。据我所知,为了使WordPress主题具有更新自身等便利功能,以及能够更新和删除的插件;主题和插件需要由apache
用户拥有。
我是Jenkins CI的新手,实际上是另一个开发者用Java编写的。所以我可能做错了,但我认为主要问题是权限问题。 如果tomcat
必须操纵apache
拥有的文件,您将如何克服权限错误?
我尝试将apache和tomcat添加到名为webusers
的组中,但在尝试使用Jenkins操作文件时,我仍然获得了权限被拒绝的错误。
我尝试将文件的所有者更改为tomcat
:
这是wp-content
目录。正如你所看到的,或者可能不是因为它如此像素化,插件和主题文件夹归tomcat和webusers目录所有。这个有效,但有一个主要缺点:
这是一个主要缺点,因为它会造成糟糕的用户体验。
我也试过让apache成为所有者,并使用该组(之前创建的),然后WordPress工作,但Jenkins无法部署:
我在这里不知所措,我已经多次搜索过关于“WordPress和Jenkins”的主题,“用Jenkins表达WordPress”等等。我能想到的品种很多。我甚至去了the Jenkins Documentation寻求帮助,但它反映了Drupal教程。
我read somewhere您可以部署Jenkins的Apache版本,这可能适用于我们的PHP项目,但是最好的做法是每种语言都有一个Jenkins实例吗? < / p>
任何帮助都会很棒。提前谢谢你。