Обновление бинарника через .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}"
|
PUBLIC="${PUBLIC_URL:-https://gitea.hsrv.site}"
|
||||||
DL="${PUBLIC%/}/${GITHUB_REPOSITORY}/releases/download/${TAG}"
|
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' \
|
# Работающий бинарник нельзя перезаписать (Text file busy) — качаем
|
||||||
"${DL}" "${DL}" "${CHANGES}")"
|
# во временный файл и подменяем через 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" \
|
PAYLOAD="$(jq -n --arg tag "$TAG" --arg body "$NOTES" \
|
||||||
'{tag_name: $tag, name: $tag, body: $body, draft: false, prerelease: false}')"
|
'{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
|
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
|
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 -)
|
(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
|
backupctl version
|
||||||
|
|
||||||
# администратор веб-морды
|
# администратор веб-морды
|
||||||
|
|||||||
Reference in new issue
Block a user