这里应该有一个错误,我尝试通过标签拉取v3.6.0.beta2,结果遇到下面的错误:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -H -E -u discourse bash -c '
set -o errexit
git fetch --tags --prune-tags --prune --force origin
if [[ $(git symbolic-ref --short HEAD) == v3.6.0.beta2 ]] ; then
git pull
else
git -c advice.detachedHead=false checkout v3.6.0.beta2
fi
' failed with return #<Process::Status: pid 146 exit 128>
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/exec_command.rb:138:in 'Pups::ExecCommand#spawn'
exec failed with the params {"cd" => "$home", "hook" => "code", "cmd" => ["sudo -H -E -u discourse git clean -f", "sudo -H -E -u discourse bash -c '\n set -o errexit\n git fetch --tags --prune-tags --prune --force origin\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"]}
bootstrap failed with exit code 128
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
adc8ef45e9ae880827c9294dbbf73dfe9ab413a050c83fe3f4722c2911876ce2
version只支持分支,不支持标签!
正确的应该是
params:
version: release/2025.11
根本原因是git symbolic-ref --short HEAD命令只能返回分支名称。如果需要支持标签或者hash需要改成下面的命令
git describe --exact-match --tags 2>/dev/null || git rev-parse --short HEAD
但是,不建议这么改,过多的自定义将导致潜在的技术债。除非官方自己修改。
至于我为什么要拉取release/2025.11因为现在生产环境是这个接近的版本,然后我想升级,但是怕出现问题,而且审核流程不允许我直接操作升级,必须先在测试环境验证升级过程(release/2025.11=>release/2026.1)没问题才能在生产环境操作。虽然这有些啰嗦,但是确实是流程正确的最佳选择。于是,我不得不在这里寻找拉取特定分支或标签的方法。
抱歉说了这么多废话。幸运的是,现在找到了还算过得去的解决方法。感谢大家。

