重建应用时的Git错误 - 找不到远程引用refs/heads/tests-passed

大家好,

我重建应用程序时遇到此错误:

Pups::ExecError: cd /var/www/discourse && sudo -H -E -u discourse bash -c ’
set -o errexit
if [ $(git rev-parse --is-shallow-repository) == “true” ]; then
git remote set-branches --add origin main
git remote set-branches origin tests-passed
git fetch --depth 1 origin tests-passed
else
git fetch --tags --prune-tags --prune --force origin
fi
’ failed with return #<Process::Status: pid 145 exit 128>

当我执行此命令时:

git fetch --tags --prune-tags --prune --force origin

我收到错误:

fatal: couldn’t find remote ref refs/heads/tests-passed

我是否做错了什么?

谢谢!

附注:忘了提。第一次检出成功,只有重建应用程序任务因这个错误而失败。所以我想(希望 :slight_smile: )不是我的 Git 问题。

刚注意到日志中还有更多问题 :frowning:

更新成功。5秒后重建。
正在构建应用
检测到 x86_64 架构。
确保启动器是最新版本
fatal: 找不到远程引用 refs/heads/tests-passed
fatal: 上游分支 ‘refs/heads/main’ 未存储为远程跟踪分支
fatal: 上游分支 ‘refs/heads/main’ 未存储为远程跟踪分支
./launcher: 第 794 行: [: 69d7558c98a3775f62b720a8393e76f2b42bd916: 期望一元运算符
./launcher: 第 797 行: [: 69d7558c98a3775f62b720a8393e76f2b42bd916: 期望一元运算符

当我使用 docker run -it --entrypoint /bin/bash … 运行容器并尝试使用 git 时,我得到了这个

git clone https://github.com/discourse/discourse.git/
Cloning into 'discourse'...
fatal: unable to access 'https://github.com/discourse/discourse.git/': server certificate verification failed. CAfile: none CRLfile: none

请发布完整的日志输出,并使用预格式化文本代码块,这将有所帮助。

我怀疑您是在使用会检查出站 Web 流量的 MITM 代理的企业网络上执行此操作?

如果是这样,您将需要配置您的服务器(以及 Docker 镜像)以信任您的企业 CA 根证书。

情况确实如此。
Discourse Docker(我是指 Docker 镜像,而不是服务器)是否有可用的标准功能来实现这一点,还是我必须手动完成?

提前表示感谢,并致以问候,

WS

更新:不,我错了。我实际上是在公司环境中进行此操作,但实例位于 ec2 实例上(标准的 Amazon Linux 2 AMI),该实例可以通过代理访问……
而且,正如我所说,第一次签出成功了,只有重建失败了。

再次检查,它在主机上可以工作,但在容器中不行 :frowning:

@Lilly,抱歉花了点时间,但这是日志(我猜是相关部分)

I, [2024-11-20T05:57:07.498456 #1]  INFO -- : > cd /var/www/discourse & sudo -H -E -u discourse git reset --hard
更新文件:100% (34680/34680),完成。
I, [2024-11-20T05:57:11.943323 #1]  INFO -- : HEAD 现在是 274e18622 FIX: 视频上传有时会无限期挂起 (#28523)

I, [2024-11-20T05:57:11.943867 #1]  INFO -- : > cd /var/www/discourse & sudo -H -E -u discourse git clean -f
I, [2024-11-20T05:57:12.079705 #1]  INFO -- : 
I, [2024-11-20T05:57:12.080107 #1]  INFO -- : > cd /var/www/discourse & sudo -H -E -u discourse bash -c '
  set -o errexit
  if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
fatal: 无法访问 'https://github.com/discourse/discourse.git/':服务器证书验证失败。CAfile: none CRLfile: none
I, [2024-11-20T05:57:12.186392 #1]  INFO -- : 
I, [2024-11-20T05:57:12.187130 #1]  INFO -- : 正在终止异步进程
I, [2024-11-20T05:57:12.187180 #1]  INFO -- : 发送 INT 到 HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 39
2024-11-20 05:57:12.187 UTC [39] LOG:  收到快速关机请求
I, [2024-11-20T05:57:12.187839 #1]  INFO -- : 发送 TERM 到 exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 107
107:signal-handler (1732082232) 收到 SIGTERM,正在调度关机...
2024-11-20 05:57:12.189 UTC [39] LOG:  正在中止任何活动事务
107:M 20 Nov 2024 05:57:12.193 # 用户请求关机...
107:M 20 Nov 2024 05:57:12.193 * 在退出前保存最终 RDB 快照。
2024-11-20 05:57:12.194 UTC [39] LOG:  后台工作进程“逻辑复制启动器”(PID 54)已退出,退出代码为 1
2024-11-20 05:57:12.194 UTC [49] LOG:  正在关闭
107:M 20 Nov 2024 05:57:12.197 * 数据库已保存到磁盘
107:M 20 Nov 2024 05:57:12.197 # Redis 现在准备退出,再见...
2024-11-20 05:57:12.227 UTC [39] LOG:  数据库系统已关闭


失败
--------------------
Pups::ExecError: cd /var/www/discourse & sudo -H -E -u discourse bash -c '
  set -o errexit
  if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
' 使用返回 #<Process::Status: pid 144 exit 128> 失败
失败位置:/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
使用参数 {“cd”=>“$home”, “hook”=>“code”, “cmd”=>[“sudo -H -E -u discourse git reset --hard”, “sudo -H -E -u discourse git clean -f”, “sudo -H -E -u discourse bash -c ‘\n  set -o errexit\n  if [ $(git rev-parse --is-shallow-repository) == \\\"true\\\" ]; then\n      git remote set-branches --add origin main\n      git remote set-branches origin $version\n      git fetch --depth 1 origin $version\n  else\n      git fetch --tags --prune-tags --prune --force origin\n  fi\n'”, “sudo -H -E -u discourse bash -c ‘\n  set -o errexit\n  if [[ $(git symbolic-ref --short HEAD) == $version ]] ; then\n      git pull\n  else\n      git -c advice.detachedHead=false checkout $version\n  fi\n'”, “sudo -H -E -u discourse git config user.discourse-version $version”, “mkdir -p tmp”, “chown discourse:www-data tmp”, “mkdir -p tmp/pids”, “mkdir -p tmp/sockets”, “touch tmp/.gitkeep”, “mkdir -p                    /shared/log/rails”, “bash -c \\\"touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\\\"”, “bash -c \\\"ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log\\\"”, “bash -c \\\"mkdir -p           /shared/{uploads,backups}\\\"”, “bash -c \\\"ln    -s           /shared/{uploads,backups} $home/public\\\"”, “bash -c \\\"mkdir -p           /shared/tmp/{backups,restores}\\\"”, “bash -c \\\"ln    -s           /shared/tmp/{backups,restores} $home/tmp\\\"”, “chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp”, “[ ! -d public/plugins ] || find public/plugins/ -maxdepth 1 -xtype l -delete”]” 执行失败
引导失败,退出代码为 128
** 引导失败 ** 请向上滚动并查找之前的错误消息,可能不止一个。
./discourse-doctor 可能有助于诊断问题。

抱歉各位,原来是代理问题。我不得不在 ~/.docker/config.json 中配置代理,以便它们能被注入到容器中,然后就好了……

天哪,我在代理问题上浪费了多少生命?:stuck_out_tongue:

3 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.