Files
aitbc/.gitea/workflows/systemd-sync.yml
aitbc1 799e387437
All checks were successful
AITBC CLI Level 1 Commands Test / test-cli-level1 (push) Successful in 16s
api-endpoint-tests / test-api-endpoints (push) Successful in 33s
package-tests / test-python-packages (map[name:aitbc-agent-sdk path:packages/py/aitbc-agent-sdk python_version:3.13]) (push) Successful in 5s
package-tests / test-python-packages (map[name:aitbc-cli path:. python_version:3.13]) (push) Successful in 7s
package-tests / test-python-packages (map[name:aitbc-core path:packages/py/aitbc-core python_version:3.13]) (push) Successful in 6s
package-tests / test-python-packages (map[name:aitbc-crypto path:packages/py/aitbc-crypto python_version:3.13]) (push) Successful in 6s
package-tests / test-python-packages (map[name:aitbc-sdk path:packages/py/aitbc-sdk python_version:3.13]) (push) Successful in 6s
package-tests / test-javascript-packages (map[name:aitbc-sdk node_version:24 path:packages/js/aitbc-sdk]) (push) Successful in 7s
python-tests / test (push) Successful in 18s
integration-tests / test-service-integration (push) Successful in 1m23s
python-tests / test-specific (push) Has been skipped
security-scanning / audit (push) Successful in 18s
systemd-sync / sync-systemd (push) Successful in 5s
package-tests / cross-language-compatibility (push) Successful in 4s
package-tests / package-integration-tests (push) Successful in 10s
smart-contract-tests / test-solidity-contracts (map[config:hardhat.config.ts name:aitbc-token path:packages/solidity/aitbc-token tool:hardhat]) (push) Successful in 1m24s
smart-contract-tests / lint-solidity (push) Successful in 4s
fix: correct network URLs in all CI workflows - ROOT CAUSE FIX
🔥 REAL ROOT CAUSE: Network + URL mismatch (not CI logic)

 Before: https://gitea.bubuit.net (port 443, HTTPS)
 After:  http://gitea.bubuit.net:3000 (port 3000, HTTP)

Fixed Files:
- .gitea/workflows/systemd-sync.yml
- .gitea/workflows/security-scanning.yml
- .gitea/workflows/python-tests.yml
- .gitea/workflows/smart-contract-tests.yml
- .gitea/workflows/integration-tests.yml
- .gitea/workflows/cli-level1-tests.yml
- .gitea/workflows/api-endpoint-tests.yml
- .gitea/workflows/package-tests.yml

Root Cause Analysis:
- Service runs on: http://10.0.3.107:3000
- DNS resolves: gitea.bubuit.net → 10.0.3.107
- BUT wrong protocol: https (443) instead of http (3000)
- Connection failed: "Failed to connect to gitea.bubuit.net port 443"

Verification:
 curl -I http://gitea.bubuit.net:3000 → HTTP/1.1 200 OK
 git ls-remote http://gitea.bubuit.net:3000/oib/aitbc.git → refs returned

This fixes ALL CI workflow cloning failures.
No infrastructure changes needed - just correct URLs.
2026-03-29 12:21:48 +02:00

193 lines
7.3 KiB
YAML

name: systemd-sync
on:
push:
branches: [ main, develop ]
paths:
- 'systemd/**'
- '.gitea/workflows/systemd-sync.yml'
workflow_dispatch:
# Prevent parallel execution - run workflows serially
concurrency:
group: ci-workflows
cancel-in-progress: true
jobs:
sync-systemd:
runs-on: debian
steps:
- name: Setup workspace
run: |
echo "=== SYSTEMD SYNC SETUP ==="
echo "Current PWD: $(pwd)"
echo "Forcing absolute workspace path..."
# Clean and create isolated workspace
rm -rf /opt/aitbc/systemd-sync-workspace
mkdir -p /opt/aitbc/systemd-sync-workspace
cd /opt/aitbc/systemd-sync-workspace
# Ensure no git lock files exist
find . -name "*.lock" -delete 2>/dev/null || true
echo "Workspace PWD: $(pwd)"
echo "Cloning repository..."
git clone http://gitea.bubuit.net:3000/oib/aitbc.git repo
cd repo
echo "Repo PWD: $(pwd)"
echo "Files in repo:"
ls -la
- name: Sync Systemd Files
run: |
echo "=== SYNCING SYSTEMD FILES ==="
cd /opt/aitbc/systemd-sync-workspace/repo
echo "Repository systemd files:"
ls -la systemd/ | head -10
echo
echo "Active systemd files:"
ls -la /etc/systemd/system/aitbc-* | head -5 || echo "No active files found"
echo
# Check if running as root (should be in CI)
if [[ $EUID -eq 0 ]]; then
echo "✅ Running as root - can sync systemd files"
# Run the linking script
if [[ -f "scripts/link-systemd.sh" ]]; then
echo "🔗 Running systemd linking script..."
echo "Current directory: $(pwd)"
echo "Systemd directory exists: $(ls -la systemd/ 2>/dev/null || echo 'No systemd directory')"
# Update script with correct repository path
sed -i "s|REPO_SYSTEMD_DIR=\"/opt/aitbc/systemd\"|REPO_SYSTEMD_DIR=\"/opt/aitbc/systemd-sync-workspace/repo/systemd\"|g" scripts/link-systemd.sh
# Also fix the current working directory issue
sed -i "s|REPO_SYSTEMD_DIR=\"/opt/aitbc/api-tests-workspace/repo/systemd\"|REPO_SYSTEMD_DIR=\"/opt/aitbc/systemd-sync-workspace/repo/systemd\"|g" scripts/link-systemd.sh
# Fix any other potential wrong paths
sed -i "s|REPO_SYSTEMD_DIR=\"/opt/aitbc/.*/systemd\"|REPO_SYSTEMD_DIR=\"/opt/aitbc/systemd-sync-workspace/repo/systemd\"|g" scripts/link-systemd.sh
echo "Script updated, running linking..."
./scripts/link-systemd.sh
else
echo "❌ Link script not found, creating manual sync..."
# Manual sync as fallback
REPO_SYSTEMD_DIR="/opt/aitbc/systemd-sync-workspace/repo/systemd"
ACTIVE_SYSTEMD_DIR="/etc/systemd/system"
# Create backup
BACKUP_DIR="/opt/aitbc/systemd-backup-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BACKUP_DIR"
find "$ACTIVE_SYSTEMD_DIR" -name "aitbc-*" -type f -exec cp {} "$BACKUP_DIR/" \; 2>/dev/null || true
# Create symbolic links
for file in "$REPO_SYSTEMD_DIR"/aitbc-*; do
if [[ -f "$file" ]]; then
filename=$(basename "$file")
target="$ACTIVE_SYSTEMD_DIR/$filename"
source="$REPO_SYSTEMD_DIR/$filename"
echo "🔗 Linking: $filename"
ln -sf "$source" "$target"
# Handle .d directories
if [[ -d "${file}.d" ]]; then
target_dir="${target}.d"
source_dir="${file}.d"
rm -rf "$target_dir" 2>/dev/null || true
ln -sf "$source_dir" "$target_dir"
fi
fi
done
systemctl daemon-reload
echo "✅ Manual systemd sync completed"
fi
else
echo "⚠️ Not running as root - systemd sync requires root privileges"
echo " To sync manually: sudo ./scripts/link-systemd.sh"
fi
- name: Verify Sync
run: |
echo "=== VERIFYING SYSTEMD SYNC ==="
cd /opt/aitbc/systemd-sync-workspace/repo
if [[ $EUID -eq 0 ]]; then
echo "🔍 Verifying systemd links..."
# Check if links exist
echo "Checking symbolic links:"
for file in systemd/aitbc-*; do
if [[ -f "$file" ]]; then
filename=$(basename "$file")
target="/etc/systemd/system/$filename"
if [[ -L "$target" ]]; then
echo "✅ $filename -> $(readlink "$target")"
elif [[ -f "$target" ]]; then
echo "⚠️ $filename exists but is not a link (copied file)"
else
echo "❌ $filename not found in active systemd"
fi
fi
done
echo
echo "📊 Summary:"
echo " Repository files: $(find systemd -name 'aitbc-*' -type f | wc -l)"
echo " Active files: $(find /etc/systemd/system -name 'aitbc-*' -type f | wc -l)"
echo " Symbolic links: $(find /etc/systemd/system -name 'aitbc-*' -type l | wc -l)"
else
echo "⚠️ Cannot verify without root privileges"
fi
- name: Service Status Check
if: always()
run: |
echo "=== SERVICE STATUS CHECK ==="
if [[ $EUID -eq 0 ]]; then
echo "🔍 Checking AITBC service status..."
# Check if services are enabled
echo "Enabled services:"
systemctl list-unit-files 'aitbc-*' --state=enabled | head -5 || echo "No enabled services found"
echo
echo "Failed services:"
systemctl list-units 'aitbc-*' --state=failed | head -5 || echo "No failed services found"
echo
echo "Running services:"
systemctl list-units 'aitbc-*' --state=running | head -5 || echo "No running services found"
else
echo "⚠️ Cannot check service status without root privileges"
fi
- name: Instructions
run: |
echo "=== SYSTEMD SYNC INSTRUCTIONS ==="
echo
echo "🔧 Manual sync (if needed):"
echo " sudo ./scripts/link-systemd.sh"
echo
echo "🔄 Restart services:"
echo " sudo systemctl restart aitbc-blockchain-node"
echo " sudo systemctl restart aitbc-coordinator-api"
echo " sudo systemctl restart aitbc-*"
echo
echo "🔍 Check status:"
echo " sudo systemctl status aitbc-*"
echo
echo "🔍 Verify links:"
echo " ls -la /etc/systemd/system/aitbc-*"
echo " readlink /etc/systemd/system/aitbc-blockchain-node.service"