在我的build.xml我定义了一些工作,应该由工具来执行,我安装global立法院通过作曲。这意味着,二进制文件存储在/root/.composer/vendor/bin/(我在root本地VM上工作)。
我PATH在composer configs中设置了环境变量(没有它,构建过程将失败):
现在,构建过程正在运行权限问题:
Started by user anonymous Running as anonymous Building in workspace /path/to/myproject [myproject] $ ant Buildfile: /path/to/myproject/build.xml phpcs: BUILD FAILED /path/to/myproject/build.xml:30: Execute failed: java.io.IOException: Cannot run program "phpcs": error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047) ... at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028) ... 24 more Total time: 0 seconds Build step 'Invoke Ant' marked build as failure Finished: FAILURE
二进制COMPOSER_HOME/bin文件对于每个人都是可执行的:
COMPOSER_HOME/bin
root@ubuntuvm:~# chmod 777 /root/.composer/vendor/bin/ root@ubuntuvm:~# ls -lia /root/.composer/vendor/bin/ total 8 ... 29651 lrwxrwxrwx 1 root root 42 Feb 17 14:49 phpcs -> ../squizlabs/php_codesniffer/scripts/phpcs ...
我已经安装了Authorize Project插件,并试图以“触发构建的用户”身份运行该构建,但是并没有帮助。
但这似乎还不够。
如何解决这些权限问题,并使Jenkins使用已安装的Composer软件包的二进制文件global?
从詹金斯执行/由詹金斯执行存储在另一个(root)用户的子文件夹中的(Composer)二进制文件似乎是不可能的。
一种对我有效的解决方法是将移至 Jenkins可以访问COMPOSER_HOME的文件夹,例如:
$ mv /root/.composer /usr/share/.composer $ nano /etc/environment ... PATH=... COMPOSER_HOME="/usr/share/.composer" ... $ nano ~/.profile ... export PATH=$PATH:$COMPOSER_HOME/vendor/bin ...
然后PATH需要在Jenkins配置(Manage Jenkins -> Configure System -> Global properties -> Environment variables)中将环境变量设置为$PATH:$COMPOSER_HOME/vendor/bin/
PATH
Jenkins
Manage Jenkins -> Configure System -> Global properties -> Environment variables
$PATH:$COMPOSER_HOME/vendor/bin/