在我的build.xml
我定义了一些工作,应由工具执行,installed global
ly通过Composer。这意味着,二进制文件存储在/root/.composer/vendor/bin/
(我在我的本地VM上工作为root
)。
我在作曲家配置中设置了PATH
环境变量(没有它,构建过程是failing):
现在构建过程正在权限问题中运行:
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
中的二进制文件对每个人都是可执行的:
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 plugin并尝试运行构建"作为触发构建"的用户,但它没有帮助。
但这似乎还不够。
如何解决这些权限问题并让Jenkins使用global
安装的Composer软件包的二进制文件?
答案 0 :(得分:0)
可执行文件不是可执行文件,而是另一个文件的符号链接,并且THOSE权限需要正确。你检查过了吗?
答案 1 :(得分:0)
似乎不可能从Jenkins执行存储在另一个(root
)用户的子文件夹中的(Composer)二进制文件。
对我有用的解决方法是将COMPOSER_HOME
移动到一个文件夹,Jenkins可以访问,例如:
$ mv /root/.composer /usr/share/.composer
$ nano /etc/environment
...
PATH=...
COMPOSER_HOME="/usr/share/.composer"
...
$ nano ~/.profile
...
export PATH=$PATH:$COMPOSER_HOME/vendor/bin
...
然后需要在Jenkins配置(PATH
)到Manage Jenkins -> Configure System -> Global properties -> Environment variables
中设置$PATH:$COMPOSER_HOME/vendor/bin/
个环境变量: