我正在尝试在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);
}
});
2条答案
按热度按时间sigwle7e1#
我在docker容器中尝试从git仓库添加包时收到了相同的错误。
我认为yarn试图解析我使用的URL时有问题;你可以使用不同的变体(如https,git+https,ssh)。后来发现,我所在的docker容器没有安装git。因此,当yarn被要求尝试检索git仓库时,它没有git二进制文件来执行此操作。
解决方案:在docker容器中安装git
希望即使我的解决方案的上下文是不同的(我是在docker容器中,而不是在Jenkins作业中),如果你确保
git
在Jenkins作业中是可访问的,它可能会帮助解决你的问题。你可以通过运行
git --version
来测试,应该会有一个版本输出来证明你是否有可用的git。m3eecexj2#
如果通过
git+https
添加了一个软件包,它将在yarn install
期间通过git clone
在本地下载。但是
git clone <repo-url> <directory>
要求<directory>
是不存在的目录或空目录。如果
yarn install
由于git clone
而失败,则很可能该软件包已经存在于YARN缓存目录中,并且具有文件。解决方案之一是:在
yarn install
之前,执行yarn cache clean
以清除该高速缓存。