【问题标题】:yarn install fails on cloning github packages in git post-receive hookyarn install 在 git post-receive 钩子中克隆 github 包时失败
【发布时间】:2019-01-30 10:52:38
【问题描述】:

我创建了一个 post-receive 挂钩来部署对应用程序的更改并通过 Yarn 安装包。它看起来像这样:

#!/bin/sh

echo "Checking out changes..."
git --work-tree=/home/me/apps/app --git-dir=/home/me/repos/repo.git 
checkout -f

echo "Yarn install..."
cd /home/me/apps/app
yarn install

注意事项(有效的东西):

第一部分工作正常。钩子肯定在运行。主应用文件按预期更新。

当从命令行执行yarn install 并通过 ssh 进入服务器时,所有软件包都安装成功。 (通过 ssh 进入服务器的用户是推送提交和运行钩子的同一用户。)

已检查所有目录的权限问题。

问题:

在尝试通过 Yarn 安装软件包时,钩子每次都会失败。具体来说,它在尝试从 Github 安装包依赖项时失败。它确实 似乎检索了这些包(或者至少它没有告诉我检索它们有任何问题),它只是在尝试将它们移动到node_modules 目录时做错了。

我收到以下两个错误之一:

remote: error Command failed.
remote: Exit code: 128
remote: Command: git
remote: Arguments: pull
remote: Directory: 
/home/me/.cache/yarn/v2/.tmp/45d918f2ecb73f845db6f9b2f91617a3
remote: Output:
remote: fatal: Not a git repository: '.'

或者:

remote: error Command failed.
remote: Exit code: 128
remote: Command: git
remote: Arguments: clone https://github.com/Account/package.git /home/me/.cache/yarn/v2/.tmp/45d918f2ecb73f845db6f9b2f91617a3
remote: Directory: /home/me/apps/app
remote: Output:
remote: fatal: Working tree '/home/me/apps/app' already exists

上面的一些包和用户详细信息做了一点修改,但是任何与git相关的包安装都失败了,但只是在post-receive钩子中。

在第二个错误中,这很奇怪,因为 git 命令似乎暗示它正在尝试将 repo 克隆到缓存中,但随后有一条消息表明它正在尝试将包克隆到主应用程序目录中。

我竟然用钩子把package.json复制到一个新目录,cd进去,然后尝试yarn install。产生了同样的错误。

我完全糊涂了。

【问题讨论】:

  • 您可以在脚本开头使用:export GIT_DIR=/home/me/repos/repo.gitexport GIT_WORK_TREE=/home/me/apps/app 吗?
  • 请不要将答案添加到问题中。按下面的“回答您的问题”按钮。见Can I answer my own question?
  • 感谢@VonC,您的评论帮助我发现问题出在环境变量上。
  • 干得好。好答案。 +1

标签: git yarnpkg git-post-receive


【解决方案1】:

我不知道 Git 操作使用 GIT_DIRGIT_WORK_TREE 环境变量这一事实,因此我设置的变量会干扰 Yarn 的 Git 操作。

解决办法,取消设置yarn install之前的变量:

#!/bin/sh

export GIT_WORK_TREE=/home/me/apps/app

echo "Checking out changes..."
git --work-tree=$GIT_WORK_TREE --git-dir=/home/me/repos/repo.git 
checkout -f

echo "Yarn install..."
cd $GIT_WORK_TREE
unset GIT_WORK_TREE
yarn install

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-24
    • 2012-02-17
    • 2014-05-13
    • 2014-10-28
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多