Обновление бинарника через .new + mv: запущенный файл нельзя перезаписать
CI / test (push) Successful in 1m18s
CI / test (push) Successful in 1m18s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
897ad48a2d
commit
c6942605c1
2 files changed
+24
-3
No files matched your search
@@ -74,8 +74,27 @@ jobs:
|
||||
|
||||
PUBLIC="${PUBLIC_URL:-https://gitea.hsrv.site}"
|
||||
DL="${PUBLIC%/}/${GITHUB_REPOSITORY}/releases/download/${TAG}"
|
||||
NOTES="$(printf '## Обновление сервера\n\n```bash\nsudo curl -fsSL %s/backupctl-linux-amd64 -o /usr/local/bin/backupctl\nsudo chmod 755 /usr/local/bin/backupctl\nsudo install -d /opt/backup-master/dist\nfor a in amd64 arm64; do sudo curl -fsSL %s/backupctl-linux-$a -o /opt/backup-master/dist/backupctl-linux-$a; done\nsudo systemctl restart backup-master\n```\n\nАгенты обновляются той же командой `agent.sh` без `--token`: конфиг сохраняется.\n\n## Изменения\n\n%s\n' \
|
||||
"${DL}" "${DL}" "${CHANGES}")"
|
||||
# Работающий бинарник нельзя перезаписать (Text file busy) — качаем
|
||||
# во временный файл и подменяем через mv.
|
||||
NOTES="$(cat <<EOF
|
||||
## Обновление сервера
|
||||
|
||||
\`\`\`bash
|
||||
REL=${DL}
|
||||
sudo install -d /opt/backup-master/dist
|
||||
for a in amd64 arm64; do sudo curl -fsSL "\$REL/backupctl-linux-\$a" -o "/opt/backup-master/dist/backupctl-linux-\$a"; done
|
||||
sudo install -m 755 "/opt/backup-master/dist/backupctl-linux-\$(dpkg --print-architecture)" /usr/local/bin/backupctl.new
|
||||
sudo mv -f /usr/local/bin/backupctl.new /usr/local/bin/backupctl
|
||||
sudo systemctl restart backup-master && backupctl version
|
||||
\`\`\`
|
||||
|
||||
Агенты обновляются той же командой \`agent.sh\` без \`--token\`: конфиг сохраняется.
|
||||
|
||||
## Изменения
|
||||
|
||||
${CHANGES}
|
||||
EOF
|
||||
)"
|
||||
|
||||
PAYLOAD="$(jq -n --arg tag "$TAG" --arg body "$NOTES" \
|
||||
'{tag_name: $tag, name: $tag, body: $body, draft: false, prerelease: false}')"
|
||||
|
||||
@@ -25,7 +25,9 @@ sudo install -d /opt/backup-master/dist
|
||||
for a in amd64 arm64; do sudo curl -fsSL "$REL/backupctl-linux-$a" -o "/opt/backup-master/dist/backupctl-linux-$a"; done
|
||||
sudo curl -fsSL "$REL/checksums.txt" -o /tmp/backupctl-checksums.txt
|
||||
(cd /opt/backup-master/dist && grep backupctl-linux /tmp/backupctl-checksums.txt | sha256sum -c -)
|
||||
sudo install -m 755 "/opt/backup-master/dist/backupctl-linux-$ARCH" /usr/local/bin/backupctl
|
||||
# через .new + mv: запущенный бинарник напрямую не перезаписать (Text file busy)
|
||||
sudo install -m 755 "/opt/backup-master/dist/backupctl-linux-$ARCH" /usr/local/bin/backupctl.new
|
||||
sudo mv -f /usr/local/bin/backupctl.new /usr/local/bin/backupctl
|
||||
backupctl version
|
||||
|
||||
# администратор веб-морды
|
||||
|
||||
Reference in new issue
Block a user