Java 代码编译为环境无关的可执行文件 问题背景 在分布式构建系统项目的研究过程中,为了实现任务能够在用户指定的自定义镜像中运行的目的,采用 sidecar 模式,用户自定义镜像作为 sidecar 容器,运行一个执行器程序,与 buildfarm worker 通过某种机制通信,执行发来的指令。 由于 buildfarm 是 java 程序,因此 sidecar 中的执行器采用 Java RMI 机制进行通信。 从易用性出发,用户需 2024-08-15 Java #编译 #java
Logstream API (go version) 解析 结构体 日志流 12345678910111213141516171819202122232425262728293031// 一个日志的句柄(有序的字节序列)。type LogStream struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownF 2024-08-15 Remote Execution #remote execution api #grpc #构建系统
ByteStream API (proto version) 解析 ByteStream不由Remote APIs所定义,而是归于Google APIs的范畴。 ByteStream API允许客户端从资源中读写字节流。资源有名称,这些名称在下面的API调用中提供,以标识正在读取或写入的资源。 ByteStream API的所有实现导出这里定义的接口: Read() :读取资源的内容。 Write() :写入资源的内容。客户端可以使用相同的资源多次调用 Writ 2024-08-15 Remote Execution #grpc #构建系统 #bytestream api
Buildfarm 任务队列简要分析 Buildfarm中,Server 与 Worker之间通过redis传递消息,进行协作 任务实体 Server向redis写入形如下面的json字符串,以发布任务。 12345678910111213141516{ "operationName": "shard/operations/b5f16f00-edbf-4ac4-b4b8-5aabca68de 2024-08-15 Remote Execution #buildfarm #构建系统 #消息队列 #redis
BuildFarm Worker 配置自定义镜像 官方文档: https://bazelbuild.github.io/bazel-buildfarm/docs/configuration/configuration/#all-configurations (不全) 步骤总结 配置文件中开启flag 123worker: publicName: "localhost:8981" allowBringYourOwnCo 2024-08-15 Remote Execution #buildfarm #构建系统 #docker
BuildFarm Worker 简要分析 仅关注任务队列和具体执行 worker 官方文档:https://bazelbuild.github.io/bazel-buildfarm/docs/architecture/workers/ 启动 启动流程 1234567main() -> SpringApplication.run(Worker.class, args) -> @PostConstruct init() 2024-08-15 Remote Execution #buildfarm #构建系统
BuildFarm Server 简要分析 框架 BuildaFarm Server使用Spring Boot框架,实现了构建系统的调度等功能。 service/xxxxxService.java: 一系列的gRPC服务 controller/WebController.java: 基于http服务提供了一些管理界面、健康检查、监控等内容服务。 利用 HTTP 服务的简单性来提供管理和监控接口,而使用 gRPC 来提供高性能和强类型 2024-08-15 Remote Execution #buildfarm #remote execution api #grpc #构建系统
vim 粘贴后开头字符丢失 描述 https://stackoverflow.com/questions/19544680/losing-text-while-pasting-into-vi 向 vim 中粘贴文本(尤其是长文本)时,有时会出现开头部分字符丢失的问题。有时候,还会发现最前面的部分字符还会移动到文本的最后。 经过验证,排除了终端、用户、远程机器的问题。 解决办法 在进入了 paste 模式后 1:set p 2024-08-12 杂项 #linux #vim
Bazel 编译 java 代码为独立运行的 jar 包的方法 以buildfarm v2.10.2 https://github.com/bazelbuild/bazel-buildfarm 为例。 根目录下存在BUILD文件,定义了构建规则。 123456789101112131415161718192021222324252627282930313233343536373839load("//:jvm_flags.bzl", &quo 2024-08-12 Remote Execution #bazel #编译 #java
BuildFarm 低版本遇到的 re api 兼容性问题 问题描述 在尝试使用pcc连接buildfarm进行构建时,如构建参数如下图: 报错如下 12/usr/bin/ld: cannot open output file apsara/jiaomian.wjw/pcc/pcc-mega/pcc/hello: No such file or directorycollect2: error: ld returned 1 exit status 直接 2024-08-12 Remote Execution #软件构建 #buildfarm #remote execution api