Add cron testbox auto deploy polling

This commit is contained in:
zhx 2026-05-09 14:34:43 +08:00
parent 8722d6cf7d
commit 3c374fbf66
3 changed files with 25 additions and 5 deletions

View File

@ -244,7 +244,7 @@ JAVA_BRANCH=test
GOLANG_REPO_URL=git@gitea.haiyihy.com:hy/chatapp3-golang.git
GOLANG_BRANCH=test
CRON_REPO_URL=git@gitea.haiyihy.com:hy/chatapp-cron.git
CRON_BRANCH=main
CRON_BRANCH=test
ADMIN_REPO_URL=git@gitea.haiyihy.com:hy/chatapp3-admin.git
ADMIN_BRANCH=test
TESTBOX_SRC_ROOT=/opt/chatapp-test/sources
@ -259,4 +259,5 @@ TESTBOX_AUTODEPLOY_ENABLED=1
TESTBOX_AUTODEPLOY_INTERVAL_SECONDS=30
TESTBOX_AUTODEPLOY_JAVA_BRANCH=test
TESTBOX_AUTODEPLOY_GOLANG_BRANCH=test
TESTBOX_AUTODEPLOY_CRON_BRANCH=test
TESTBOX_AUTODEPLOY_ADMIN_BRANCH=test

View File

@ -61,7 +61,7 @@ do not overwrite it.
## 自动拉取 test 分支
测试机安装后会启用 `chatapp-test-auto-deploy.service`。它每 30 秒读取一次
`admin``chatapp3-java``chatapp3-golang``test` 分支,如果远端 commit
`admin``chatapp3-java``chatapp3-golang``chatapp-cron``test` 分支,如果远端 commit
有变化,就只构建并重启变化对应的服务。
默认配置在 `/opt/chatapp-test/.env`
@ -71,6 +71,7 @@ TESTBOX_AUTODEPLOY_ENABLED=1
TESTBOX_AUTODEPLOY_INTERVAL_SECONDS=30
TESTBOX_AUTODEPLOY_JAVA_BRANCH=test
TESTBOX_AUTODEPLOY_GOLANG_BRANCH=test
TESTBOX_AUTODEPLOY_CRON_BRANCH=test
TESTBOX_AUTODEPLOY_ADMIN_BRANCH=test
```

View File

@ -167,6 +167,13 @@ build_and_restart_golang() {
compose ps golang | tee -a "$LOG_FILE"
}
build_and_restart_cron() {
log "cron build/restart"
compose build chatapp-cron >>"$LOG_FILE" 2>&1
compose up -d --no-deps --force-recreate chatapp-cron >>"$LOG_FILE" 2>&1
compose ps chatapp-cron | tee -a "$LOG_FILE"
}
build_and_restart_admin() {
local admin_dir="$1"
local admin_api_base_url
@ -187,9 +194,9 @@ build_and_restart_admin() {
}
run_once() {
local java_repo_url golang_repo_url admin_repo_url
local java_branch golang_branch admin_branch
local java_dir golang_dir admin_dir
local java_repo_url golang_repo_url cron_repo_url admin_repo_url
local java_branch golang_branch cron_branch admin_branch
local java_dir golang_dir cron_dir admin_dir
local rc
local java_before java_after
local services_line
@ -202,12 +209,15 @@ run_once() {
java_repo_url="$(env_value JAVA_REPO_URL git@gitea.haiyihy.com:hy/chatapp3-java.git)"
golang_repo_url="$(env_value GOLANG_REPO_URL git@gitea.haiyihy.com:hy/chatapp3-golang.git)"
cron_repo_url="$(env_value CRON_REPO_URL git@gitea.haiyihy.com:hy/chatapp-cron.git)"
admin_repo_url="$(env_value ADMIN_REPO_URL git@gitea.haiyihy.com:hy/chatapp3-admin.git)"
java_branch="$(env_value TESTBOX_AUTODEPLOY_JAVA_BRANCH test)"
golang_branch="$(env_value TESTBOX_AUTODEPLOY_GOLANG_BRANCH test)"
cron_branch="$(env_value TESTBOX_AUTODEPLOY_CRON_BRANCH test)"
admin_branch="$(env_value TESTBOX_AUTODEPLOY_ADMIN_BRANCH test)"
java_dir="$(env_value JAVA_SOURCE_DIR "$ROOT_DIR/sources/chatapp3-java")"
golang_dir="$(env_value GOLANG_SOURCE_DIR "$ROOT_DIR/sources/chatapp3-golang")"
cron_dir="$(env_value CRON_SOURCE_DIR "$ROOT_DIR/sources/chatapp-cron")"
admin_dir="$(env_value ADMIN_SOURCE_DIR "$ROOT_DIR/sources/chatapp3-admin")"
rc=0
@ -237,6 +247,14 @@ run_once() {
[ "$rc" -eq 10 ] || log "golang update skipped due to error rc=$rc"
fi
rc=0
if repo_changed "$cron_dir" "$cron_repo_url" "$cron_branch" cron; then
build_and_restart_cron
else
rc=$?
[ "$rc" -eq 10 ] || log "cron update skipped due to error rc=$rc"
fi
rc=0
if repo_changed "$admin_dir" "$admin_repo_url" "$admin_branch" admin; then
build_and_restart_admin "$admin_dir"