dev_1.0.0_yuyr_2:重新提交 PR,增加 master/agent 以及系统集成测试 #17
@ -1,26 +1,27 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# 帮助信息
|
|
||||||
show_help() {
|
show_help() {
|
||||||
cat << EOF
|
cat <<'EOF'
|
||||||
ARGUS Unified Build System - Image Build Tool
|
ARGUS Unified Build System - Image Build Tool
|
||||||
|
|
||||||
Usage: $0 [OPTIONS]
|
Usage: $0 [OPTIONS]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--intranet Use intranet mirror for Ubuntu 22.04 packages
|
--intranet Use intranet mirror for log/bind builds
|
||||||
|
--master-offline Build master offline image (requires src/master/offline_wheels.tar.gz)
|
||||||
-h, --help Show this help message
|
-h, --help Show this help message
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
$0 # Build with default sources
|
$0 # Build with default sources
|
||||||
$0 --intranet # Build with intranet mirror
|
$0 --intranet # Build with intranet mirror
|
||||||
|
$0 --master-offline # Additionally build argus-master:offline
|
||||||
|
$0 --intranet --master-offline
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# 解析命令行参数
|
|
||||||
use_intranet=false
|
use_intranet=false
|
||||||
|
build_master_offline=false
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
@ -28,22 +29,46 @@ while [[ $# -gt 0 ]]; do
|
|||||||
use_intranet=true
|
use_intranet=true
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--master-offline)
|
||||||
|
build_master_offline=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
show_help
|
show_help
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown option: $1"
|
echo "Unknown option: $1" >&2
|
||||||
show_help
|
show_help
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
# 获取项目根目录
|
|
||||||
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
cd "$root"
|
cd "$root"
|
||||||
|
|
||||||
|
master_root="$root/src/master"
|
||||||
|
master_offline_tar="$master_root/offline_wheels.tar.gz"
|
||||||
|
master_offline_dir="$master_root/offline_wheels"
|
||||||
|
|
||||||
|
if [[ "$build_master_offline" == true ]]; then
|
||||||
|
if [[ ! -f "$master_offline_tar" ]]; then
|
||||||
|
echo "❌ offline wheels tar not found: $master_offline_tar" >&2
|
||||||
|
echo " 请提前准备好 offline_wheels.tar.gz 后再执行 --master-offline" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "📦 Preparing offline wheels for master (extracting $master_offline_tar)"
|
||||||
|
rm -rf "$master_offline_dir"
|
||||||
|
mkdir -p "$master_offline_dir"
|
||||||
|
tar -xzf "$master_offline_tar" -C "$master_root"
|
||||||
|
has_wheel=$(find "$master_offline_dir" -maxdepth 1 -type f -name '*.whl' -print -quit)
|
||||||
|
if [[ -z "$has_wheel" ]]; then
|
||||||
|
echo "❌ offline_wheels extraction failed或无 wheel: $master_offline_dir" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo "======================================="
|
echo "======================================="
|
||||||
echo "ARGUS Unified Build System"
|
echo "ARGUS Unified Build System"
|
||||||
echo "======================================="
|
echo "======================================="
|
||||||
@ -59,17 +84,17 @@ fi
|
|||||||
echo "📁 Build context: $root"
|
echo "📁 Build context: $root"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 构建镜像的函数
|
|
||||||
build_image() {
|
build_image() {
|
||||||
local image_name=$1
|
local image_name=$1
|
||||||
local dockerfile_path=$2
|
local dockerfile_path=$2
|
||||||
local tag=$3
|
local tag=$3
|
||||||
|
local extra_args=$4
|
||||||
|
|
||||||
echo "🔄 Building $image_name image..."
|
echo "🔄 Building $image_name image..."
|
||||||
echo " Dockerfile: $dockerfile_path"
|
echo " Dockerfile: $dockerfile_path"
|
||||||
echo " Tag: $tag"
|
echo " Tag: $tag"
|
||||||
|
|
||||||
if docker build $build_args -f "$dockerfile_path" -t "$tag" .; then
|
if docker build $build_args $extra_args -f "$dockerfile_path" -t "$tag" .; then
|
||||||
echo "✅ $image_name image built successfully"
|
echo "✅ $image_name image built successfully"
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
@ -78,12 +103,10 @@ build_image() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 构建所有镜像
|
|
||||||
images_built=()
|
images_built=()
|
||||||
build_failed=false
|
build_failed=false
|
||||||
|
|
||||||
# 构建 Elasticsearch 镜像
|
if build_image "Elasticsearch" "src/log/elasticsearch/build/Dockerfile" "argus-elasticsearch:latest" ""; then
|
||||||
if build_image "Elasticsearch" "src/log/elasticsearch/build/Dockerfile" "argus-elasticsearch:latest"; then
|
|
||||||
images_built+=("argus-elasticsearch:latest")
|
images_built+=("argus-elasticsearch:latest")
|
||||||
else
|
else
|
||||||
build_failed=true
|
build_failed=true
|
||||||
@ -91,8 +114,7 @@ fi
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 构建 Kibana 镜像
|
if build_image "Kibana" "src/log/kibana/build/Dockerfile" "argus-kibana:latest" ""; then
|
||||||
if build_image "Kibana" "src/log/kibana/build/Dockerfile" "argus-kibana:latest"; then
|
|
||||||
images_built+=("argus-kibana:latest")
|
images_built+=("argus-kibana:latest")
|
||||||
else
|
else
|
||||||
build_failed=true
|
build_failed=true
|
||||||
@ -100,14 +122,25 @@ fi
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 构建 BIND9 镜像
|
if build_image "BIND9" "src/bind/build/Dockerfile" "argus-bind9:latest" ""; then
|
||||||
if build_image "BIND9" "src/bind/build/Dockerfile" "argus-bind9:latest"; then
|
|
||||||
images_built+=("argus-bind9:latest")
|
images_built+=("argus-bind9:latest")
|
||||||
else
|
else
|
||||||
build_failed=true
|
build_failed=true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
if [[ "$build_master_offline" == true ]]; then
|
||||||
|
echo "🏗️ Building master offline image"
|
||||||
|
pushd "$master_root" >/dev/null
|
||||||
|
if ./scripts/build_images.sh --offline --tag argus-master:offline; then
|
||||||
|
images_built+=("argus-master:offline")
|
||||||
|
else
|
||||||
|
build_failed=true
|
||||||
|
fi
|
||||||
|
popd >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
echo "======================================="
|
echo "======================================="
|
||||||
echo "📦 Build Summary"
|
echo "📦 Build Summary"
|
||||||
echo "======================================="
|
echo "======================================="
|
||||||
@ -130,9 +163,13 @@ if [[ "$use_intranet" == true ]]; then
|
|||||||
echo "🌐 Built with intranet mirror configuration"
|
echo "🌐 Built with intranet mirror configuration"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "$build_master_offline" == true ]]; then
|
||||||
|
echo ""
|
||||||
|
echo "🧳 Master offline wheels 已解压到 $master_offline_dir"
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "🚀 Next steps:"
|
echo "🚀 Next steps:"
|
||||||
echo " cd src/log && ./scripts/save_images.sh # Export log images"
|
echo " ./build/save_images.sh --compress # 导出镜像"
|
||||||
echo " cd src/bind && ./scripts/save_images.sh # Export bind images"
|
echo " cd src/master/tests && MASTER_IMAGE_TAG=argus-master:offline ./scripts/00_e2e_test.sh"
|
||||||
echo " cd src/log/tests && ./scripts/02_up.sh # Start log services"
|
|
||||||
echo ""
|
echo ""
|
@ -67,6 +67,7 @@ declare -A images=(
|
|||||||
["argus-elasticsearch:latest"]="argus-elasticsearch-latest.tar"
|
["argus-elasticsearch:latest"]="argus-elasticsearch-latest.tar"
|
||||||
["argus-kibana:latest"]="argus-kibana-latest.tar"
|
["argus-kibana:latest"]="argus-kibana-latest.tar"
|
||||||
["argus-bind9:latest"]="argus-bind9-latest.tar"
|
["argus-bind9:latest"]="argus-bind9-latest.tar"
|
||||||
|
["argus-master:offline"]="argus-master-offline.tar"
|
||||||
)
|
)
|
||||||
|
|
||||||
# 函数:检查镜像是否存在
|
# 函数:检查镜像是否存在
|
||||||
|
Loading…
x
Reference in New Issue
Block a user