菜单
文档面包屑箭头 Grafana k6面包屑箭头 扩展面包屑箭头 使用 Go 构建 k6 二进制文件
开源

使用 Go 构建 k6 二进制文件

要使用您在扩展页面xk6 GitHub 主题页面上找到的扩展,您需要使用 Go 构建一个二进制文件。

注意

不想设置 Go 环境?您可以改为使用 Docker

开始之前

  • 安装 GoGit
  • 确保您的 $PATH 环境变量已更新,以便 go version 返回正确的版本。

安装 xk6

在满足 Go 的先决条件设置后,安装 xk6 本身只需要以下命令

bash
go install go.k6.io/xk6/cmd/xk6@latest

要确认您的安装,请在 Linux 和 Mac 上运行 which xk6,或在 Windows 上运行 where xk6。确保命令返回有效的路径。

如果没有,请检查您是否正确定义了 $GOPATH 环境变量,以及 $GOPATH/bin 是否在您的 $PATH 中。详见Go 文档

构建您的第一个扩展

安装后,可以使用 xk6 build 命令构建包含一个或多个扩展的 k6 二进制文件,如下所示

bash
xk6 build latest \
  --with github.com/grafana/xk6-sql@v0.0.1 \
  --with github.com/grafana/xk6-output-prometheus-remote

完成后,当前目录将包含新构建的带有 xk6-sqlxk6-output-prometheus-remote 扩展的 k6 二进制文件。

bash
... [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 文档,命令行用法如下

plain
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 仓库,并希望将本地版本包含在您的自定义二进制文件中?在克隆目录中,我们将使用

bash
--with github.com/grafana/xk6-sql=.

基于上一节描述的命令用法,这告诉 xk6 使用当前目录作为模块替换

运行您的扩展二进制文件

现在我们已经有了新构建的 k6 二进制文件,我们可以使用捆绑扩展的功能来运行脚本。

bash
./k6 run my-script.js

请务必将当前目录中刚刚构建的二进制文件指定为 ./k6,否则 Linux/Mac 可能会执行系统路径中的另一个 k6 二进制文件。Windows Shell 会默认首先在当前目录中搜索二进制文件。