From 55366b1f16d35ddf9a7190a5ad5bd614f5347c45 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Thu, 2 Apr 2026 15:31:53 -0300 Subject: [PATCH] fix: revert to original workflow --- .forgejo/workflows/botserver.yaml | 99 +++++++++++++------------------ 1 file changed, 42 insertions(+), 57 deletions(-) diff --git a/.forgejo/workflows/botserver.yaml b/.forgejo/workflows/botserver.yaml index 46f43d6c..6ef0affb 100644 --- a/.forgejo/workflows/botserver.yaml +++ b/.forgejo/workflows/botserver.yaml @@ -7,8 +7,10 @@ on: branches: ["main"] env: - CARGO_BUILD_JOBS: 4 + CARGO_BUILD_JOBS: 8 CARGO_NET_RETRY: 10 + WORKSPACE: /opt/gbo/ci/botserver + CARGO_TARGET_DIR: /opt/gbo/ci/botserver/target PATH: /root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin jobs: @@ -21,20 +23,23 @@ jobs: git config --global http.sslVerify false git config --global --add safe.directory "*" - - name: Setup Workspace on host + - name: Setup Workspace run: | - mkdir -p /opt/gbo/ci/botserver - cd /opt/gbo/ci/botserver + mkdir -p $WORKSPACE + cd $WORKSPACE + # Update or clone botlib if [ -d botlib/.git ]; then git -C botlib fetch --depth 1 origin main && git -C botlib checkout FETCH_HEAD else git clone --depth 1 --branch main https://alm.pragmatismo.com.br/GeneralBots/botlib.git botlib fi + # Update or clone botserver if [ -d botserver/.git ]; then git -C botserver fetch --depth 1 origin main && git -C botserver checkout FETCH_HEAD else git clone --depth 1 --branch main https://alm.pragmatismo.com.br/GeneralBots/BotServer.git botserver fi + # Get workspace Cargo.toml from gb and strip unused members git clone --depth 1 --branch main https://alm.pragmatismo.com.br/GeneralBots/gb.git /tmp/gb-ws cp /tmp/gb-ws/Cargo.toml Cargo.toml for m in botapp botdevice bottest botui botbook botmodels botplugin bottemplates; do @@ -42,73 +47,53 @@ jobs: done rm -rf /tmp/gb-ws - - name: Transfer source to system container + - name: Install system dependencies run: | - echo "=== Transferring source to container ===" - ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 system "mkdir -p /opt/gbo/ci/botserver" - tar cf - -C /opt/gbo/ci/botserver botlib botserver Cargo.toml | \ - ssh -o StrictHostKeyChecking=no -o ConnectTimeout=120 -o ServerAliveInterval=10 system "tar xf - -C /opt/gbo/ci/botserver && echo 'Transfer complete'" + PKGS="libpq-dev libssl-dev liblzma-dev pkg-config" + MISSING="" + for pkg in $PKGS; do + dpkg -s "$pkg" >/dev/null 2>&1 || MISSING="$MISSING $pkg" + done + if [ -n "$MISSING" ]; then + sudo apt-get update -qq -o Acquire::Retries=3 -o Acquire::http::Timeout=30 + sudo apt-get install -y --no-install-recommends $MISSING + else + echo "All system dependencies already installed" + fi - - name: Install system dependencies in container + - name: Build BotServer + working-directory: /opt/gbo/ci/botserver run: | - ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 system " - PKGS='libpq-dev libssl-dev liblzma-dev pkg-config' - MISSING='' - for pkg in \$PKGS; do - dpkg -s \"\$pkg\" >/dev/null 2>&1 || MISSING=\"\$MISSING \$pkg\" - done - if [ -n \"\$MISSING\" ]; then - apt-get update -qq -o Acquire::Retries=3 -o Acquire::http::Timeout=30 - apt-get install -y --no-install-recommends \$MISSING - else - echo 'All system dependencies already installed' - fi - " - - - name: Install Rust in container - run: | - ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 system " - export PATH=/root/.cargo/bin:\$PATH - if ! command -v rustup &>/dev/null || [ \$(rustc --version | grep -oP '\d+\.\d+' | head -1 | cut -d. -f1) -lt 1 ]; then - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - fi - rustc --version - cargo --version - " - - - name: Build BotServer inside container - run: | - echo "=== Building inside container ===" - ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 system " - export PATH=/root/.cargo/bin:\$PATH - export CARGO_BUILD_JOBS=4 - cd /opt/gbo/ci/botserver - cargo build -p botserver --features chat 2>&1 | tee /tmp/build.log - ls -lh target/debug/botserver - " + cargo build -p botserver --features chat -j 8 2>&1 | tee /tmp/build.log + ls -lh target/debug/botserver - name: Save build log if: always() - run: | - ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 system "cat /tmp/build.log" > /tmp/build.log 2>/dev/null || true - sudo cp /tmp/build.log /tmp/botserver-$(date +%Y%m%d-%H%M%S).log || true + run: sudo cp /tmp/build.log /tmp/botserver-$(date +%Y%m%d-%H%M%S).log || true - - name: Deploy BotServer + - name: Deploy via ssh tar gzip run: | set -e echo "=== Deploy started ===" - echo "Step 1: Killing old botserver..." + echo "Step 1: Checking binary..." + ls -lh /opt/gbo/ci/botserver/target/debug/botserver + echo "Step 2: Killing old botserver..." ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 system "pgrep -f botserver && killall botserver 2>/dev/null || echo 'No running botserver'" - echo "Step 2: Copying binary inside container..." - ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 system " - cp /opt/gbo/ci/botserver/target/debug/botserver /opt/gbo/bin/botserver - chmod +x /opt/gbo/bin/botserver - chown gbuser:gbuser /opt/gbo/bin/botserver - ls -lh /opt/gbo/bin/botserver - " + echo "Step 3: Removing old binary..." + ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 system "rm -f /opt/gbo/bin/botserver && echo 'Old binary removed'" + echo "Step 4: Starting tar+gzip transfer..." + tar cf - -C /opt/gbo/ci/botserver/target/debug botserver | gzip -1 | ssh -o StrictHostKeyChecking=no -o ConnectTimeout=60 -o ServerAliveInterval=10 system "gzip -d | tar xf - -C /opt/gbo/bin && echo 'Transfer complete'" + echo "Step 5: Verifying transfer..." + ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 system "ls -lh /opt/gbo/bin/botserver" + echo "Step 6: Setting permissions..." + ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 system "chmod +x /opt/gbo/bin/botserver && chown gbuser:gbuser /opt/gbo/bin/botserver" echo "=== Deploy completed ===" - name: Verify botserver started run: | sleep 10 ssh -o StrictHostKeyChecking=no system "pgrep -f botserver && echo 'OK: botserver is running' || (echo 'ERROR: botserver not running' && cat /opt/gbo/logs/error.log | tail -20 && exit 1)" + + - name: Save deploy log + if: always() + run: sudo cp /tmp/deploy.log /tmp/deploy-$(date +%Y%m%d-%H%M%S).log || true