使用 Go 构建 k6 二进制文件
要使用您在扩展页面或xk6 GitHub 主题页面上找到的扩展,您需要使用 Go 构建一个二进制文件。
注意
不想设置 Go 环境?您可以改为使用 Docker。
开始之前
安装 xk6
在满足 Go 的先决条件设置后,安装 xk6 本身只需要以下命令
go install go.k6.io/xk6/cmd/xk6@latest
要确认您的安装,请在 Linux 和 Mac 上运行 which xk6
,或在 Windows 上运行 where xk6
。确保命令返回有效的路径。
如果没有,请检查您是否正确定义了 $GOPATH
环境变量,以及 $GOPATH/bin
是否在您的 $PATH
中。详见Go 文档。
构建您的第一个扩展
安装后,可以使用 xk6 build
命令构建包含一个或多个扩展的 k6 二进制文件,如下所示
xk6 build latest \
--with github.com/grafana/xk6-sql@v0.0.1 \
--with github.com/grafana/xk6-output-prometheus-remote
完成后,当前目录将包含新构建的带有 xk6-sql
和 xk6-output-prometheus-remote
扩展的 k6
二进制文件。
... [INFO] Build environment ready
... [INFO] Building k6
... [INFO] Build complete: ./k6
xk6 has now produced a new k6 binary which may be different than the command on your system path!
Be sure to run './k6 run <SCRIPT_NAME>' from the '...' directory.
解读 xk6 命令
根据xk6 文档,命令行用法如下
xk6 build [<k6_version>]
[--output <file>]
[--with <module[@version][=replacement]>...]
[--replace <module=replacement>...]
Flags:
--output specifies the new binary name [default: 'k6']
--replace enables override of dependencies for k6 and extensions [default: none]
--with the extension module to be included in the binary [default: none]
应将
--replace
的使用视为高级功能,除非必要,否则应避免使用。
回顾我们执行的命令,请注意
- 我们将版本指定为
latest
,如果您未提供版本,这也将是默认值。latest
意味着我们将使用 k6 的最新源代码进行构建。最佳实践是考虑使用稳定的发布版本,除非您确实想要尝鲜。 - 对于每个
--with
,我们都指定了扩展仓库的完整 GitHub URI。如果未指定版本,默认值同样是latest
。请检查您的扩展仓库是否有可用的稳定发布版本,以便锁定您的版本,就像我们对xk6-sql@v0.0.1
所做的那样。 - 我们没有使用
--output
选项;因此,我们新构建的二进制文件位于当前目录中,名为k6
。如果使用--output k6-extended
,则我们的二进制文件将在当前目录中命名为k6-extended
。如果指定了目录,则新二进制文件将位于该目录中,名为k6
。如果指定了不存在的文件的路径,例如/tmp/k6-extended
,则这便是二进制文件的路径和文件名。
运行 ./k6 version
应该会显示您的构建基于相应的版本。
从本地仓库构建
假设您已经克隆了 xk6-sql
仓库,并希望将本地版本包含在您的自定义二进制文件中?在克隆目录中,我们将使用
--with github.com/grafana/xk6-sql=.
基于上一节描述的命令用法,这告诉 xk6 使用当前目录作为模块的替换。
运行您的扩展二进制文件
现在我们已经有了新构建的 k6 二进制文件,我们可以使用捆绑扩展的功能来运行脚本。
./k6 run my-script.js
请务必将当前目录中刚刚构建的二进制文件指定为
./k6
,否则 Linux/Mac 可能会执行系统路径中的另一个 k6 二进制文件。Windows Shell 会默认首先在当前目录中搜索二进制文件。