mirror of
https://github.com/gabrie30/ghorg.git
synced 2025-09-21 21:51:14 +02:00
161 lines
4.9 KiB
Bash
Executable File
161 lines
4.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
# Bitbucket Server integration test script - AUTOMATED VERSION
|
|
# Usage: ./start-auto.sh [STOP_BITBUCKET_WHEN_FINISHED] [PERSIST_BITBUCKET_LOCALLY]
|
|
|
|
STOP_BITBUCKET_WHEN_FINISHED=${1:-'true'}
|
|
PERSIST_BITBUCKET_LOCALLY=${2:-'false'}
|
|
BITBUCKET_IMAGE_TAG=${3:-'latest'}
|
|
BITBUCKET_HOME=${4:-"${HOME}/ghorg/bitbucket-server-data"}
|
|
BITBUCKET_HOST=${5:-'bitbucket.example.com'}
|
|
BITBUCKET_URL=${6:-'http://bitbucket.example.com:7990'}
|
|
LOCAL_BITBUCKET_GHORG_DIR=${7:-"${HOME}/ghorg"}
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
echo "=== Bitbucket Server Integration Test - AUTOMATED ==="
|
|
echo "🗑️ Database will be wiped clean on startup"
|
|
echo "Stop when finished: ${STOP_BITBUCKET_WHEN_FINISHED}"
|
|
echo "Persist locally: ${PERSIST_BITBUCKET_LOCALLY}"
|
|
echo "Image tag: ${BITBUCKET_IMAGE_TAG}"
|
|
echo "Bitbucket home: ${BITBUCKET_HOME}"
|
|
echo "Bitbucket host: ${BITBUCKET_HOST}"
|
|
echo "Bitbucket URL: ${BITBUCKET_URL}"
|
|
echo "Local ghorg directory: ${LOCAL_BITBUCKET_GHORG_DIR}"
|
|
echo ""
|
|
|
|
# Complete cleanup - remove all data for fresh start
|
|
echo "🧹 Performing complete cleanup for fresh test run..."
|
|
|
|
# Stop and remove existing containers and volumes
|
|
if docker ps -aq -f name=bitbucket > /dev/null || docker ps -aq -f name=bitbucket-postgres > /dev/null; then
|
|
echo "Stopping and removing existing Bitbucket and PostgreSQL containers..."
|
|
cd "${SCRIPT_DIR}"
|
|
docker-compose down -v || true
|
|
sleep 2
|
|
fi
|
|
|
|
# Remove persistent data directories
|
|
echo "Cleaning up persistent data directories..."
|
|
if [ -d "${BITBUCKET_HOME}" ]; then
|
|
echo "Removing Bitbucket home directory: ${BITBUCKET_HOME}"
|
|
rm -rf "${BITBUCKET_HOME}" || true
|
|
fi
|
|
|
|
# Remove any Docker volumes related to Bitbucket
|
|
echo "Removing Docker volumes..."
|
|
docker volume ls -q | grep -i bitbucket | xargs -r docker volume rm || true
|
|
docker volume ls -q | grep -i postgres | xargs -r docker volume rm || true
|
|
|
|
# Clean up any leftover test directories
|
|
echo "Cleaning up test output directories..."
|
|
rm -rf "${HOME}/ghorg/local-bitbucket-"* || true
|
|
rm -rf "${HOME}/ghorg/bitbucket.example.com" || true
|
|
rm -rf "/tmp/bitbucket-custom-path" || true
|
|
|
|
# Prune unused Docker resources
|
|
echo "Pruning unused Docker resources..."
|
|
docker system prune -f || true
|
|
|
|
echo "✅ Cleanup completed - ready for fresh installation"
|
|
|
|
# Ensure fresh Bitbucket home directory exists
|
|
echo "Creating fresh Bitbucket home directory: ${BITBUCKET_HOME}"
|
|
mkdir -p "${BITBUCKET_HOME}"
|
|
|
|
echo "Starting Bitbucket Server..."
|
|
cd "${SCRIPT_DIR}"
|
|
./run.sh "${BITBUCKET_IMAGE_TAG}" "${BITBUCKET_HOME}" "${BITBUCKET_HOST}" "${PERSIST_BITBUCKET_LOCALLY}"
|
|
|
|
echo ""
|
|
echo "Waiting for Bitbucket Server to be ready..."
|
|
OUTPUT_DIR="${HOME}/ghorg-test-output"
|
|
mkdir -p "${OUTPUT_DIR}"
|
|
|
|
# Wait for server to be ready
|
|
echo "Waiting for Bitbucket Server to start..."
|
|
sleep 10
|
|
|
|
# Check if server is running
|
|
echo "Checking server status..."
|
|
max_attempts=30
|
|
attempt=0
|
|
while [ $attempt -lt $max_attempts ]; do
|
|
if curl -s "${BITBUCKET_URL}/status" | grep -q "RUNNING"; then
|
|
echo "✅ Bitbucket Server is running!"
|
|
break
|
|
fi
|
|
echo "⏳ Waiting for server... (attempt $((attempt + 1))/$max_attempts)"
|
|
sleep 5
|
|
attempt=$((attempt + 1))
|
|
done
|
|
|
|
if [ $attempt -eq $max_attempts ]; then
|
|
echo "❌ Server failed to start within expected time"
|
|
exit 1
|
|
fi
|
|
|
|
# Set up environment variables
|
|
export GHORG_SCM_TYPE=bitbucket
|
|
export GHORG_SCM_BASE_URL="${BITBUCKET_URL}"
|
|
export GHORG_BITBUCKET_USERNAME=admin
|
|
export GHORG_BITBUCKET_APP_PASSWORD=admin
|
|
export GHORG_INSECURE_BITBUCKET_CLIENT=true
|
|
|
|
# Save credentials for other scripts
|
|
mkdir -p "${OUTPUT_DIR}"
|
|
cat > "${OUTPUT_DIR}/bitbucket_credentials.env" << EOF
|
|
export GHORG_SCM_TYPE=bitbucket
|
|
export GHORG_SCM_BASE_URL=${BITBUCKET_URL}
|
|
export GHORG_BITBUCKET_USERNAME=admin
|
|
export GHORG_BITBUCKET_APP_PASSWORD=admin
|
|
export GHORG_INSECURE_BITBUCKET_CLIENT=true
|
|
EOF
|
|
echo "✅ Credentials saved"
|
|
|
|
echo ""
|
|
echo "Seeding Bitbucket Server with test data..."
|
|
if ./seed.sh; then
|
|
echo "✅ Seeding completed"
|
|
|
|
echo ""
|
|
echo "Running integration tests..."
|
|
if ./integration-tests.sh; then
|
|
echo "🎉 All integration tests passed!"
|
|
test_result=0
|
|
else
|
|
echo "❌ Some integration tests failed"
|
|
test_result=1
|
|
fi
|
|
else
|
|
echo "⚠️ Seeding failed, but running basic tests..."
|
|
echo ""
|
|
echo "Running basic integration tests..."
|
|
if ./integration-tests.sh; then
|
|
echo "🎉 Basic integration tests passed!"
|
|
test_result=0
|
|
else
|
|
echo "❌ Integration tests failed"
|
|
test_result=1
|
|
fi
|
|
fi
|
|
|
|
# Cleanup
|
|
if [ "${STOP_BITBUCKET_WHEN_FINISHED}" = "true" ]; then
|
|
echo ""
|
|
echo "Stopping Bitbucket Server and PostgreSQL (keeping volumes for next run)..."
|
|
cd "${SCRIPT_DIR}"
|
|
docker-compose down || true
|
|
fi
|
|
|
|
echo ""
|
|
if [ $test_result -eq 0 ]; then
|
|
echo "🎉 Bitbucket Server integration tests completed successfully!"
|
|
else
|
|
echo "❌ Bitbucket Server integration tests failed"
|
|
fi
|
|
|
|
exit $test_result
|