From f694e4a8184f15537fdf2b90a143767a729af928 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Thu, 23 Apr 2026 22:40:38 +0000 Subject: [PATCH 01/13] fix: Use management v1 API for Zitadel user search (PAT token compat) The v2 user search API rejects PAT tokens (returns Token.Invalid). The management v1 API accepts PAT tokens correctly. Also adds fallback for user ID field (id vs userId) in login response. --- botserver/src/directory/auth_routes.rs | 4 ++-- botserver/src/directory/client.rs | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/botserver/src/directory/auth_routes.rs b/botserver/src/directory/auth_routes.rs index 3ac8196e..09f59442 100644 --- a/botserver/src/directory/auth_routes.rs +++ b/botserver/src/directory/auth_routes.rs @@ -174,7 +174,7 @@ pub async fn login( admin_token }; - let search_url = format!("{}/v2/users", client.api_url()); + let search_url = format!("{}/management/v1/users/_search", client.api_url()); let search_body = serde_json::json!({ "queries": [{ "emailQuery": { @@ -228,7 +228,7 @@ pub async fn login( .get("result") .and_then(|r| r.as_array()) .and_then(|arr| arr.first()) - .and_then(|u| u.get("userId")) + .and_then(|u| u.get("id").or_else(|| u.get("userId"))) .and_then(|v| v.as_str()) .map(String::from); diff --git a/botserver/src/directory/client.rs b/botserver/src/directory/client.rs index a2759867..c3b15b2c 100644 --- a/botserver/src/directory/client.rs +++ b/botserver/src/directory/client.rs @@ -257,14 +257,15 @@ impl ZitadelClient { pub async fn list_users(&self, limit: u32, offset: u32) -> Result> { let token = self.get_access_token().await?; let url = format!( - "{}/v2/users?limit={}&offset={}", + "{}/management/v1/users/_search?limit={}&offset={}", self.config.api_url, limit, offset ); let response = self .http_client - .get(&url) + .post(&url) .bearer_auth(&token) + .json(&serde_json::json!({})) .send() .await .map_err(|e| anyhow!("Failed to list users: {}", e))?; @@ -290,7 +291,7 @@ impl ZitadelClient { pub async fn search_users(&self, query: &str) -> Result> { let token = self.get_access_token().await?; - let url = format!("{}/v2/users/_search", self.config.api_url); + let url = format!("{}/management/v1/users/_search", self.config.api_url); let body = serde_json::json!({ "queries": [{ From 4224df807016c2badfa30020d4c2555e8c6a4eaf Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Thu, 23 Apr 2026 23:10:59 +0000 Subject: [PATCH 02/13] fix(ci): sync botui UI to /opt/gbo/botui/ui/ (relative to botserver at /opt/gbo/bin/) --- .forgejo/workflows/botserver.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index 57ed95cc..e8d98cb9 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -35,4 +35,4 @@ jobs: ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "curl -sf http://localhost:8080/health && echo 'BotServer Deployed' || echo 'Failed'" - name: Sync UI Files to Stage run: | - rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/data/botui/ui/ + rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ From b87d58dc5b29bfd0004894fae46a2233c3d85543 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Thu, 23 Apr 2026 23:40:40 +0000 Subject: [PATCH 03/13] fix(ci): sync botui UI to both /opt/gbo/botui/ui and /opt/gbo/bin/botui/ui paths --- .forgejo/workflows/botserver.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index e8d98cb9..d5dae796 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -35,4 +35,6 @@ jobs: ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "curl -sf http://localhost:8080/health && echo 'BotServer Deployed' || echo 'Failed'" - name: Sync UI Files to Stage run: | + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "mkdir -p /opt/gbo/botui/ui /opt/gbo/bin/botui/ui" rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ + rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/bin/botui/ui/ From 424fe4752f58cb22a201cb793832e6cacf440460 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Thu, 23 Apr 2026 23:59:56 +0000 Subject: [PATCH 04/13] fix(ci): debug UI sync paths and botserver CWD on stage --- .forgejo/workflows/botserver.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index d5dae796..ee93d4a0 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -35,6 +35,7 @@ jobs: ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "curl -sf http://localhost:8080/health && echo 'BotServer Deployed' || echo 'Failed'" - name: Sync UI Files to Stage run: | - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "mkdir -p /opt/gbo/botui/ui /opt/gbo/bin/botui/ui" + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "ls -la /opt/gbo/bin/botui/ui/suite/chat/ 2>/dev/null; ls -la /opt/gbo/botui/ui/suite/chat/ 2>/dev/null; cat /proc/\$(pgrep -x botserver)/cwd 2>/dev/null; readlink /proc/\$(pgrep -x botserver)/cwd 2>/dev/null; echo '---'; cat /proc/\$(pgrep -x botserver)/environ 2>/dev/null | tr '\0' '\n' | grep BOTUI 2>/dev/null; echo '---end'" rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/bin/botui/ui/ + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "ls -la /opt/gbo/bin/botui/ui/suite/chat/chat.html /opt/gbo/botui/ui/suite/chat/chat.html 2>/dev/null; wc -c /opt/gbo/bin/botui/ui/suite/chat/chat.html /opt/gbo/botui/ui/suite/chat/chat.html 2>/dev/null" From 181137695b8cb864ae3ae5c70c8273b0ef672371 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 24 Apr 2026 00:17:45 +0000 Subject: [PATCH 05/13] fix(ci): add prepare-workspace step to create dirs and clone if missing --- .forgejo/workflows/botserver.yaml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index ee93d4a0..463060a8 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -12,6 +12,12 @@ jobs: SYSTEM_HOST: ${{ vars.SYSTEM_HOST }} SYSTEM_USER: gbuser steps: + - name: Prepare workspace + run: | + mkdir -p /opt/gbo/work/generalbots /opt/gbo/work/target /opt/gbo/bin + if [ ! -d /opt/gbo/work/generalbots/.git ]; then + git clone https://alm.pragmatismo.com.br/GeneralBots/generalbots.git /opt/gbo/work/generalbots + fi - name: Setup run: | cd /opt/gbo/work/generalbots @@ -19,8 +25,6 @@ jobs: git clean -fd git pull git submodule update --init --recursive - mkdir -p /opt/gbo/work/target - mkdir -p /opt/gbo/bin - name: Build run: | cd /opt/gbo/work/generalbots @@ -35,7 +39,7 @@ jobs: ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "curl -sf http://localhost:8080/health && echo 'BotServer Deployed' || echo 'Failed'" - name: Sync UI Files to Stage run: | - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "ls -la /opt/gbo/bin/botui/ui/suite/chat/ 2>/dev/null; ls -la /opt/gbo/botui/ui/suite/chat/ 2>/dev/null; cat /proc/\$(pgrep -x botserver)/cwd 2>/dev/null; readlink /proc/\$(pgrep -x botserver)/cwd 2>/dev/null; echo '---'; cat /proc/\$(pgrep -x botserver)/environ 2>/dev/null | tr '\0' '\n' | grep BOTUI 2>/dev/null; echo '---end'" + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "readlink /proc/\$(pgrep -x botserver)/cwd 2>/dev/null || echo 'botserver not running'" rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/bin/botui/ui/ - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "ls -la /opt/gbo/bin/botui/ui/suite/chat/chat.html /opt/gbo/botui/ui/suite/chat/chat.html 2>/dev/null; wc -c /opt/gbo/bin/botui/ui/suite/chat/chat.html /opt/gbo/botui/ui/suite/chat/chat.html 2>/dev/null" + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "ls -la /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/botui/ui/suite/chat/chat.html 2>/dev/null" From 98fbc498613ea24b82c75f5f5d3dbc656452e6b2 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 24 Apr 2026 00:35:01 +0000 Subject: [PATCH 06/13] feat(ci): add UI file sync to stage in botui workflow --- .forgejo/workflows/botui.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.forgejo/workflows/botui.yaml b/.forgejo/workflows/botui.yaml index 7563d225..184226e5 100644 --- a/.forgejo/workflows/botui.yaml +++ b/.forgejo/workflows/botui.yaml @@ -32,3 +32,8 @@ jobs: ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo mv /opt/gbo/bin/botui-new /opt/gbo/bin/botui && sudo chmod +x /opt/gbo/bin/botui && sudo systemctl enable botui && sudo systemctl start botui" sleep 3 ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "pgrep -x botui && echo 'BotUI Deployed' || echo 'Failed'" + - name: Sync UI Files to Stage + run: | + rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ + rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/bin/botui/ui/ + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "ls -la /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/botui/ui/suite/chat/chat.html 2>/dev/null; wc -c /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/botui/ui/suite/chat/chat.html 2>/dev/null" From 38d5a046f59f71a2db24afd17bec9e373cf3d2b4 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 24 Apr 2026 00:58:00 +0000 Subject: [PATCH 07/13] fix(ci): add defaults.working-directory and prepare-workspace to both workflows --- .forgejo/workflows/botserver.yaml | 9 ++++----- .forgejo/workflows/botui.yaml | 13 +++++++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index 463060a8..980419a5 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -2,6 +2,9 @@ name: BotServer CI on: push: branches: [main] +defaults: + run: + working-directory: /opt/gbo/work/generalbots jobs: build: runs-on: gbo @@ -18,16 +21,12 @@ jobs: if [ ! -d /opt/gbo/work/generalbots/.git ]; then git clone https://alm.pragmatismo.com.br/GeneralBots/generalbots.git /opt/gbo/work/generalbots fi - - name: Setup - run: | - cd /opt/gbo/work/generalbots git reset --hard HEAD git clean -fd git pull git submodule update --init --recursive - name: Build run: | - cd /opt/gbo/work/generalbots CARGO_BUILD_JOBS=4 cargo build -p botserver --bin botserver - name: Deploy to Stage run: | @@ -42,4 +41,4 @@ jobs: ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "readlink /proc/\$(pgrep -x botserver)/cwd 2>/dev/null || echo 'botserver not running'" rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/bin/botui/ui/ - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "ls -la /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/botui/ui/suite/chat/chat.html 2>/dev/null" + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "wc -c /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/botui/ui/suite/chat/chat.html 2>/dev/null" diff --git a/.forgejo/workflows/botui.yaml b/.forgejo/workflows/botui.yaml index 184226e5..8e883480 100644 --- a/.forgejo/workflows/botui.yaml +++ b/.forgejo/workflows/botui.yaml @@ -2,6 +2,9 @@ name: BotUI CI on: push: branches: [main] +defaults: + run: + working-directory: /opt/gbo/work/generalbots jobs: build: runs-on: gbo @@ -12,9 +15,12 @@ jobs: SYSTEM_HOST: ${{ vars.SYSTEM_HOST }} SYSTEM_USER: gbuser steps: - - name: Setup + - name: Prepare workspace run: | - cd /opt/gbo/work/generalbots + mkdir -p /opt/gbo/work/generalbots /opt/gbo/work/target /opt/gbo/bin + if [ ! -d /opt/gbo/work/generalbots/.git ]; then + git clone https://alm.pragmatismo.com.br/GeneralBots/generalbots.git /opt/gbo/work/generalbots + fi git reset --hard HEAD git clean -fd git pull @@ -22,7 +28,6 @@ jobs: mkdir -p /opt/gbo/bin - name: Build run: | - cd /opt/gbo/work/generalbots CARGO_BUILD_JOBS=4 cargo build -p botui --bin botui - name: Deploy run: | @@ -36,4 +41,4 @@ jobs: run: | rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/bin/botui/ui/ - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "ls -la /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/botui/ui/suite/chat/chat.html 2>/dev/null; wc -c /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/botui/ui/suite/chat/chat.html 2>/dev/null" + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "wc -c /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/botui/ui/suite/chat/chat.html 2>/dev/null" From 86be26b9e09adb471427ef729d3dae0b3bddb4a7 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 24 Apr 2026 01:28:50 +0000 Subject: [PATCH 08/13] fix(ci): sync UI to /opt/gbo/bin/ui/ path for STAGE-GBO project --- .forgejo/workflows/botserver.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index 980419a5..298f5039 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -21,6 +21,7 @@ jobs: if [ ! -d /opt/gbo/work/generalbots/.git ]; then git clone https://alm.pragmatismo.com.br/GeneralBots/generalbots.git /opt/gbo/work/generalbots fi + cd /opt/gbo/work/generalbots git reset --hard HEAD git clean -fd git pull @@ -38,7 +39,7 @@ jobs: ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "curl -sf http://localhost:8080/health && echo 'BotServer Deployed' || echo 'Failed'" - name: Sync UI Files to Stage run: | - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "readlink /proc/\$(pgrep -x botserver)/cwd 2>/dev/null || echo 'botserver not running'" + # Sync to both possible paths, then copy bin/ui to botui/ui for consistency rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ - rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/bin/botui/ui/ - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "wc -c /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/botui/ui/suite/chat/chat.html 2>/dev/null" + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo incus exec system --project STAGE-GBO -- cp /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/ui/suite/chat/chat.html" + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo incus exec system --project STAGE-GBO -- ls -la /opt/gbo/bin/ui/suite/chat/chat.html" From 7f7fa80c2a7b690ec96b14a9405e4a668960982d Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 24 Apr 2026 01:30:49 +0000 Subject: [PATCH 09/13] fix(ci): build with embed-ui feature instead of syncing files --- .forgejo/workflows/botserver.yaml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index 298f5039..1da23b91 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -26,9 +26,9 @@ jobs: git clean -fd git pull git submodule update --init --recursive - - name: Build + - name: Build with embedded UI run: | - CARGO_BUILD_JOBS=4 cargo build -p botserver --bin botserver + CARGO_BUILD_JOBS=4 cargo build -p botserver --bin botserver --features embed-ui - name: Deploy to Stage run: | BINARY=/opt/gbo/work/target/debug/botserver @@ -37,9 +37,3 @@ jobs: ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo mv /opt/gbo/bin/botserver-new /opt/gbo/bin/botserver && sudo chmod +x /opt/gbo/bin/botserver && sudo systemctl enable botserver && sudo systemctl start botserver" sleep 10 ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "curl -sf http://localhost:8080/health && echo 'BotServer Deployed' || echo 'Failed'" - - name: Sync UI Files to Stage - run: | - # Sync to both possible paths, then copy bin/ui to botui/ui for consistency - rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo incus exec system --project STAGE-GBO -- cp /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/ui/suite/chat/chat.html" - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo incus exec system --project STAGE-GBO -- ls -la /opt/gbo/bin/ui/suite/chat/chat.html" From f0275f994137559a940d3bb603adbbd3dd22f06c Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 24 Apr 2026 01:31:28 +0000 Subject: [PATCH 10/13] fix(ci): remove UI sync from botui workflow --- .forgejo/workflows/botui.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.forgejo/workflows/botui.yaml b/.forgejo/workflows/botui.yaml index 8e883480..5f7559f3 100644 --- a/.forgejo/workflows/botui.yaml +++ b/.forgejo/workflows/botui.yaml @@ -21,6 +21,7 @@ jobs: if [ ! -d /opt/gbo/work/generalbots/.git ]; then git clone https://alm.pragmatismo.com.br/GeneralBots/generalbots.git /opt/gbo/work/generalbots fi + cd /opt/gbo/work/generalbots git reset --hard HEAD git clean -fd git pull @@ -37,8 +38,3 @@ jobs: ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo mv /opt/gbo/bin/botui-new /opt/gbo/bin/botui && sudo chmod +x /opt/gbo/bin/botui && sudo systemctl enable botui && sudo systemctl start botui" sleep 3 ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "pgrep -x botui && echo 'BotUI Deployed' || echo 'Failed'" - - name: Sync UI Files to Stage - run: | - rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ - rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/bin/botui/ui/ - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "wc -c /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/botui/ui/suite/chat/chat.html 2>/dev/null" From 171a6466aca8e7f3ffef324b0f95d106cb6e8a74 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 24 Apr 2026 10:01:42 +0000 Subject: [PATCH 11/13] fix(ci): copy botui/ui to botserver/ui before build with embed-ui --- .forgejo/workflows/botserver.yaml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index 1da23b91..058469c8 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -26,12 +26,17 @@ jobs: git clean -fd git pull git submodule update --init --recursive - - name: Build with embedded UI + - name: Build botui (to embed UI files) run: | - CARGO_BUILD_JOBS=4 cargo build -p botserver --bin botserver --features embed-ui + cargo build -p botui --bin botui --release + - name: Build botserver with embedded UI + run: | + # Copy botui/ui to botserver/ui so rust-embed can find it + cp -r botui/ui botserver/ui + CARGO_BUILD_JOBS=4 cargo build -p botserver --bin botserver --features embed-ui --release - name: Deploy to Stage run: | - BINARY=/opt/gbo/work/target/debug/botserver + BINARY=/opt/gbo/work/target/release/botserver ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo systemctl stop botserver 2>/dev/null; sudo pkill -x botserver 2>/dev/null; sleep 1" scp -o StrictHostKeyChecking=no "$BINARY" ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/bin/botserver-new ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo mv /opt/gbo/bin/botserver-new /opt/gbo/bin/botserver && sudo chmod +x /opt/gbo/bin/botserver && sudo systemctl enable botserver && sudo systemctl start botserver" From 77257b9f5614962c24af114f934975ff926dc17f Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 24 Apr 2026 10:09:53 +0000 Subject: [PATCH 12/13] fix(ci): restore simple build + sync UI to /opt/gbo/bin/ui/ --- .forgejo/workflows/botserver.yaml | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index 058469c8..f2d253ba 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -2,9 +2,6 @@ name: BotServer CI on: push: branches: [main] -defaults: - run: - working-directory: /opt/gbo/work/generalbots jobs: build: runs-on: gbo @@ -15,30 +12,31 @@ jobs: SYSTEM_HOST: ${{ vars.SYSTEM_HOST }} SYSTEM_USER: gbuser steps: - - name: Prepare workspace + - name: Setup run: | - mkdir -p /opt/gbo/work/generalbots /opt/gbo/work/target /opt/gbo/bin - if [ ! -d /opt/gbo/work/generalbots/.git ]; then - git clone https://alm.pragmatismo.com.br/GeneralBots/generalbots.git /opt/gbo/work/generalbots - fi cd /opt/gbo/work/generalbots git reset --hard HEAD git clean -fd git pull git submodule update --init --recursive - - name: Build botui (to embed UI files) + mkdir -p /opt/gbo/work/target + mkdir -p /opt/gbo/bin + - name: Build run: | - cargo build -p botui --bin botui --release - - name: Build botserver with embedded UI - run: | - # Copy botui/ui to botserver/ui so rust-embed can find it - cp -r botui/ui botserver/ui - CARGO_BUILD_JOBS=4 cargo build -p botserver --bin botserver --features embed-ui --release + cd /opt/gbo/work/generalbots + CARGO_BUILD_JOBS=4 cargo build -p botserver --bin botserver - name: Deploy to Stage run: | - BINARY=/opt/gbo/work/target/release/botserver + BINARY=/opt/gbo/work/target/debug/botserver ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo systemctl stop botserver 2>/dev/null; sudo pkill -x botserver 2>/dev/null; sleep 1" scp -o StrictHostKeyChecking=no "$BINARY" ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/bin/botserver-new ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo mv /opt/gbo/bin/botserver-new /opt/gbo/bin/botserver && sudo chmod +x /opt/gbo/bin/botserver && sudo systemctl enable botserver && sudo systemctl start botserver" sleep 10 ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "curl -sf http://localhost:8080/health && echo 'BotServer Deployed' || echo 'Failed'" + - name: Sync UI Files to Stage + run: | + # Sync UI files to stage container + rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ + # Copy to the path where botserver serves from + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo incus exec system --project STAGE-GBO -- cp /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/ui/suite/chat/chat.html" + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo incus exec system --project STAGE-GBO -- ls -la /opt/gbo/bin/ui/suite/chat/chat.html" From 5c3c941bc1b44a548c98c4efe185ecac5d0fd105 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 24 Apr 2026 10:14:08 +0000 Subject: [PATCH 13/13] fix(ci): sync UI without sudo, botserver reads from /opt/gbo/botui/ui/ --- .forgejo/workflows/botserver.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index f2d253ba..cbca391a 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -35,8 +35,7 @@ jobs: ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "curl -sf http://localhost:8080/health && echo 'BotServer Deployed' || echo 'Failed'" - name: Sync UI Files to Stage run: | - # Sync UI files to stage container + # Sync UI files - botserver reads from /opt/gbo/botui/ui/ rsync -az --delete -e "ssh -o StrictHostKeyChecking=no" /opt/gbo/work/generalbots/botui/ui/ ${SYSTEM_USER}@${SYSTEM_HOST}:/opt/gbo/botui/ui/ - # Copy to the path where botserver serves from - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo incus exec system --project STAGE-GBO -- cp /opt/gbo/botui/ui/suite/chat/chat.html /opt/gbo/bin/ui/suite/chat/chat.html" - ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "sudo incus exec system --project STAGE-GBO -- ls -la /opt/gbo/bin/ui/suite/chat/chat.html" + # Verify sync + ssh -o StrictHostKeyChecking=no ${SYSTEM_USER}@${SYSTEM_HOST} "wc -c /opt/gbo/botui/ui/suite/chat/chat.html"