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
🔥 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.
193 lines
7.3 KiB
YAML
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"
|