当前位置: 首页 > 面试题库 >

如何让Jenkins从root用户的子文件夹中使用二进制文件?

佘茂才
2023-03-14
问题内容

在我的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文件对于每个人都是可执行的:

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/



 类似资料:
  • 问题内容: 我正在开发一个项目,并希望使用Jenkins。该配置应由目标很少的简单对象完成: PHP Lint()工作可完美运行: Console Output But the executing of PHPDox is failing: 我在其他软件包中也遇到了同样的问题,这些软件包已 全局安装并从中使用(例如)。 我试图以另一种方式(例如)定义命令,但是它也无法 正常工作。 作品的直接执行。

  • 如何使用URI从资源文件夹的子文件夹中读取文件 资源文件夹中有一些json文件,如: 现在我想在我的课堂上读这个 这是我正在尝试的。 我的东西工作正常,但我遇到的问题是我不想使用< code>toURI,因为它会失败。

  • 我想从我的android studio drawable文件夹中选择image,现在我有两个名为example.jpg和sue.png的图像。我将数组定义为 我应该如何进一步开放他们作为一个画廊,并让用户从中挑选一个?(如下第二幅图所示)

  • 问题内容: 使用带有角的ResponseEntity下载任何文件不起作用 我需要在客户端使用angular下载文件,该文件可以具有pdf或excel或image或txt的任何格式…我的方法仅适用于txt文件,但给我excel和image的失败格式,对于pdf,它会给出一个空的pdf。 所以在我的控制器中,这里是调用service方法的函数: 而我的service.js具有: 我的服务方法是这样的:

  • 如何从资源文件夹的子文件夹中读取文件。 我在资源文件夹中有一些json文件,例如: 现在我想在我的课堂上读到这个 这是我正在尝试的,但是失败了。 不起作用,那么我正在尝试: 这两样东西都不工作。

  • 问题内容: 为了将二进制文件上传到URL,建议使用本指南。但是,该文件不在目录中,而是存储在MySql db的BLOB字段中。BLOB字段在JPA中映射为属性: 我以这种方式稍微修改了指南中的代码: 我没有使用分块流。使用的标头是: 主机正确接收了所有标头。它还接收上载的文件,但不幸的是,它抱怨该文件不可读,并且断言所接收文件的大小比我的代码输出的大小大37个字节。 我对流,连接和byte []的