From 3c374fbf66236012557857702948001d179a1db9 Mon Sep 17 00:00:00 2001 From: zhx Date: Sat, 9 May 2026 14:34:43 +0800 Subject: [PATCH] Add cron testbox auto deploy polling --- testbox/.env.example | 3 ++- testbox/README.md | 3 ++- testbox/scripts/auto-pull-restart.sh | 24 +++++++++++++++++++++--- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/testbox/.env.example b/testbox/.env.example index 431805b..75d4afa 100644 --- a/testbox/.env.example +++ b/testbox/.env.example @@ -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 diff --git a/testbox/README.md b/testbox/README.md index 6ced94e..dfda0fe 100644 --- a/testbox/README.md +++ b/testbox/README.md @@ -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 ``` diff --git a/testbox/scripts/auto-pull-restart.sh b/testbox/scripts/auto-pull-restart.sh index 319ebc8..3bc79b0 100755 --- a/testbox/scripts/auto-pull-restart.sh +++ b/testbox/scripts/auto-pull-restart.sh @@ -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"