yarn install for repositories with git+https not working in Jenkins

pgpifvop  于 2023-05-06  发布在  Jenkins
关注(0)|答案(2)|浏览(180)

我正在尝试在Jenkins上配置我的项目,以便每次提交都会导致自动构建。当我使用Jenkins NodeJS脚本运行yarn install时,它拒绝安装从git存储库导入的依赖项。我是这样做的。

"some-component": "git+https://bitbucket.org/owner/repo.git"

显示以下错误:

error Command failed.
Exit code: 128
Command: git
Arguments: clone git+https://bitbucket.org/owner/repo.git
Output:
fatal: destination path 'some path' already exists and is not an empty directory.
error Command failed with exit code 1.

如果文件为空,则显示以下错误

error Couldn't find the binary git
error Command failed with exit code 1.

虽然相同的yarn install在IDE上工作得很好,例如VS代码。
我使用以下代码在Jenkins上的NodeJS脚本中执行yarn install

var exec = require('child_process').exec,
    child;

 child = exec('yarn install ',
 function (error, stdout, stderr) {
     console.log('stdout: ' + stdout);
     console.log('stderr: ' + stderr);
     if (error !== null) {
          console.log('exec error: ' + error);
     }
 });
sigwle7e

sigwle7e1#

我在docker容器中尝试从git仓库添加包时收到了相同的错误。

$ yarn add git+https://git@github.com/username/some_repo.git
error Couldn't find the binary git
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

我认为yarn试图解析我使用的URL时有问题;你可以使用不同的变体(如https,git+https,ssh)。后来发现,我所在的docker容器没有安装git。因此,当yarn被要求尝试检索git仓库时,它没有git二进制文件来执行此操作。
解决方案:在docker容器中安装git
希望即使我的解决方案的上下文是不同的(我是在docker容器中,而不是在Jenkins作业中),如果你确保git在Jenkins作业中是可访问的,它可能会帮助解决你的问题。
你可以通过运行git --version来测试,应该会有一个版本输出来证明你是否有可用的git。

m3eecexj

m3eecexj2#

如果通过git+https添加了一个软件包,它将在yarn install期间通过git clone在本地下载。
但是git clone <repo-url> <directory>要求<directory>是不存在的目录或空目录。
如果yarn install由于git clone而失败,则很可能该软件包已经存在于YARN缓存目录中,并且具有文件。
解决方案之一是:在yarn install之前,执行yarn cache clean以清除该高速缓存。

相关问题