-
Notifications
You must be signed in to change notification settings - Fork 950
项目编译
ChaosBlade 工具包含很多领域的混沌实验,不同领域的混沌实验由不同的项目实现,本文详细介绍如何编译这些项目,打包出 ChaosBlade 工具包。
你可以在 Mac 或者 Linux 平台上编译 ChaosBlade 各个项目,而且在 Mac 平台上可通过 docker 实现跨平台编译,编译 Linux 平台下运行的包,下面会详细介绍各项目编译所需环境及编译方式。
ChaosBlade CLI 工具,使用 golang 编程语言实现,使用 go.mod 做包管理,项目地址: https://github.com/chaosblade-io/chaosblade 。只编译此项目,会生成一个 blade 文件,用于执行 chaosblade 混沌实验。作为 ChaosBlade 项目的主项目,可以通过其编译 ChaosBlade 相关的所有的项目,下面分阶段介绍如何编译。 编译结果目录:target/chaosblade-VERSION
在 Mac 上编译 Linux 版本
编译环境:Mac、Docker 目标平台:Linux 平台 编译目标:build_with_linux 编译命令:
ARGS="cli" make build_with_linux
编译结果:
» tree
.
├── bin
├── blade
└── lib
在 Mac 上编译 Mac 版本 编译环境:Mac、go1.13+ 目标平台:Mac 编译目标:build_with 编译命令:
make build_with cli
在 Linux 上编译 Linux 版本 编译环境:Linux、go1.13+ 目标平台:Linux 编译目标:build_with 编译命令:
make build_with cli
通过 git clone 命令下载 chaosblade-exec-os 仓库,根据 Makefile 中指定的 BLADE_EXEC_OS_BRANCH
分支进行编译。
在 Mac 上编译 Linux 版本 编译环境:Mac、Docker、git 目标平台:Linux 平台 编译目标:build_with_linux 编译命令:
ARGS="cli os" make build_with_linux
编译结果:
» tree
.
├── bin
│ ├── chaos_burncpu
│ ├── chaos_burnio
│ ├── chaos_burnmem
│ ├── chaos_changedns
│ ├── chaos_dropnetwork
│ ├── chaos_filldisk
│ ├── chaos_killprocess
│ ├── chaos_occupynetwork
│ ├── chaos_stopprocess
│ ├── chaos_tcnetwork
│ └── chaosblade-os-spec-0.6.0.yaml
├── blade
└── lib
在 Mac 上编译 Mac 版本 编译环境:Mac、git、go1.13+ 目标平台:Mac 编译目标:build_with 编译命令:
make build_with cli os_darwin
在 Linux 上编译 Linux 版本 编译环境:Linux、git、go1.13+ 目标平台:Linux 编译目标:build_with 编译命令:
make build_with cli os
包含除 java 场景之外的 cli、os、docker、kubernetes、cplus 场景,java 场景需要单独编译,然后复制到指定的chaosblade 目录中,详见 chaosblade-exec-jvm 编译篇。
在 Mac 上编译 Linux 版本 编译环境:Mac、Docker、git 目标平台:Linux 平台 编译目标:build_linux 编译命令:
make build_linux
编译结果:
» tree
.
├── bin
│ ├── chaos_burncpu
│ ├── chaos_burnio
│ ├── chaos_burnmem
│ ├── chaos_changedns
│ ├── chaos_dropnetwork
│ ├── chaos_filldisk
│ ├── chaos_fuse
│ ├── chaos_killprocess
│ ├── chaos_occupynetwork
│ ├── chaos_stopprocess
│ ├── chaos_tcnetwork
│ ├── chaosblade-cplus-spec.yaml
│ ├── chaosblade-docker-spec-0.6.0.yaml
│ ├── chaosblade-k8s-spec-0.6.0.yaml
│ └── chaosblade-os-spec-0.6.0.yaml
├── blade
└── lib
└── cplus
├── chaosblade-exec-cplus.jar
└── script
├── shell_break_and_return.sh
├── shell_break_and_return_attach.sh
├── shell_check_process_duplicate.sh
├── shell_check_process_id.sh
├── shell_initialization.sh
├── shell_modify_variable.sh
├── shell_modify_variable_attch.sh
├── shell_remove_process.sh
├── shell_response_delay.sh
└── shell_response_delay_attach.sh
4 directories, 27 files
在 Mac 上编译 Mac 版本 编译环境:Mac、git、go1.13+ 目标平台:Mac 编译目标:build_darwin 编译命令:
make build_darwin
在 Linux 上编译 Linux 版本 编译环境:Linux、git、go1.13+ 目标平台:Linux 编译目标:build 编译命令:
make
Java 实验场景项目,项目地址:https://github.com/chaosblade-io/chaosblade-exec-jvm 。编译时会下载 jvm-sandbox 库。 编译结果目录:build-target/chaosblade-VERSION
编译环境:JDK8、Maven3.X 目标平台:Mac、Linux 编译目标:build 编译命令:
make
编译结果:
.
├── bin
│ ├── chaosblade-jvm-spec-0.6.0.yaml
│ └── tools.jar
└── lib
└── sandbox
├── bin
│ └── sandbox.sh
├── cfg
│ ├── sandbox-logback.xml
│ ├── sandbox.properties
│ └── version
├── example
│ └── sandbox-debug-module.jar
├── install-local.sh
├── lib
│ ├── sandbox-agent.jar
│ ├── sandbox-core.jar
│ └── sandbox-spy.jar
├── module
│ ├── chaosblade-java-agent-0.6.0.jar
│ └── sandbox-mgr-module.jar
├── provider
│ └── sandbox-mgr-provider.jar
└── sandbox-module
10 directories, 14 files
需要你将 build-target/chaosblade-VERSION/* 复制到 chaosblade 项目编译结果目录 target/chaosblade-VERSION/ 下执行,例如:
cp -R /Users/Shared/ChaosBladeProjects/chaosblade-opensource/chaosblade-exec-jvm/build-target/chaosblade-0.6.0/* /Users/Shared/ChaosBladeProjects/chaosblade-opensource/chaosblade/src/github.com/chaosblade-io/chaosblade/target/chaosblade-0.6.0/
复制结果:
target/chaosblade-0.6.0
├── bin
│ ├── chaos_burncpu
│ ├── chaos_burnio
│ ├── chaos_burnmem
│ ├── chaos_changedns
│ ├── chaos_dropnetwork
│ ├── chaos_filldisk
│ ├── chaos_fuse
│ ├── chaos_killprocess
│ ├── chaos_occupynetwork
│ ├── chaos_stopprocess
│ ├── chaos_tcnetwork
│ ├── chaosblade-cplus-spec.yaml
│ ├── chaosblade-docker-spec-0.6.0.yaml
│ ├── chaosblade-jvm-spec-0.6.0.yaml
│ ├── chaosblade-k8s-spec-0.6.0.yaml
│ ├── chaosblade-os-spec-0.6.0.yaml
│ └── tools.jar
├── blade
└── lib
├── cplus
│ ├── chaosblade-exec-cplus.jar
│ └── script
│ ├── shell_break_and_return.sh
│ ├── shell_break_and_return_attach.sh
│ ├── shell_check_process_duplicate.sh
│ ├── shell_check_process_id.sh
│ ├── shell_initialization.sh
│ ├── shell_modify_variable.sh
│ ├── shell_modify_variable_attch.sh
│ ├── shell_remove_process.sh
│ ├── shell_response_delay.sh
│ └── shell_response_delay_attach.sh
└── sandbox
├── bin
│ └── sandbox.sh
├── cfg
│ ├── sandbox-logback.xml
│ ├── sandbox.properties
│ └── version
├── example
│ └── sandbox-debug-module.jar
├── install-local.sh
├── lib
│ ├── sandbox-agent.jar
│ ├── sandbox-core.jar
│ └── sandbox-spy.jar
├── module
│ ├── chaosblade-java-agent-0.6.0.jar
│ └── sandbox-mgr-module.jar
├── provider
│ └── sandbox-mgr-provider.jar
└── sandbox-module
12 directories, 41 files
此项目编译用于 Kubernetes 场景所用的 yaml 文件和 chaosblade-operator 镜像。项目地址:https://github.com/chaosblade-io/chaosblade-operator
编译环境:go1.13+、operator-sdk、docker 目标平台:Linux、Mac 编译目标:build_all 编译命令:
make build_all
编译结果:
.
└── bin
├── chaos_fuse
└── chaosblade-k8s-spec-0.6.0.yaml
chaosblade-operator 镜像:
chaosblade-operator 0.6.0 c1cfb831e20f About a minute ago 126MB
包含 ChaosBlade 工具的镜像,在 chaosblade 项目 下编译,需要确保 chaosblade 已编译了 Linux 平台版本包,即在 chaosblade/target
目录下包含 Linux 版本的 chaosblade-VERSION.tar.gz
包。
编译环境:docker 目标平台:Linux 编译目标:build_image 编译命令:
make build_image
编译结果:
chaosblade-tool 0.6.0 e6ac3e3c5b8a 3 weeks ago 302MB