ByteStream API (proto version) 解析 ByteStream不由Remote APIs所定义,而是归于Google APIs的范畴。 ByteStream API允许客户端从资源中读写字节流。资源有名称,这些名称在下面的API调用中提供,以标识正在读取或写入的资源。 ByteStream API的所有实现导出这里定义的接口: Read() :读取资源的内容。 Write() :写入资源的内容。客户端可以使用相同的资源多次调用 Writ 2024-08-15 #grpc #构建系统 #bytestream api
Buildfarm 任务队列简要分析 Buildfarm中,Server 与 Worker之间通过redis传递消息,进行协作 任务实体 Server向redis写入形如下面的json字符串,以发布任务。 12345678910111213141516{ "operationName": "shard/operations/b5f16f00-edbf-4ac4-b4b8-5aabca68de 2024-08-15 #buildfarm #构建系统 #消息队列 #redis
BuildFarm Worker 配置自定义镜像 官方文档: https://bazelbuild.github.io/bazel-buildfarm/docs/configuration/configuration/#all-configurations (不全) 步骤总结 配置文件中开启flag 123worker: publicName: "localhost:8981" allowBringYourOwnCo 2024-08-15 #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 #buildfarm #构建系统
BuildFarm Server 简要分析 框架 BuildaFarm Server使用Spring Boot框架,实现了构建系统的调度等功能。 service/xxxxxService.java: 一系列的gRPC服务 controller/WebController.java: 基于http服务提供了一些管理界面、健康检查、监控等内容服务。 利用 HTTP 服务的简单性来提供管理和监控接口,而使用 gRPC 来提供高性能和强类型 2024-08-15 #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 #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 #软件构建 #buildfarm #remote execution api
利用 Java RMI 实现 sidecar 远程构建 任务背景 在研究如何使用 sidecar 模式实现 Buildfarm Worker 在自定义镜像中运行构建任务的过程中,注意到如下类: 可以看到,ProcessBuilder的实例记录了一次构建任务的全部上下文,包括具体执行的指令,输出目录,环境变量。 Buildfarm Worker 在生成了这样一个对象后,运行start方法,生成Process类实例,在新的线程中执行任务,并通过Proc 2024-08-12 #软件构建 #java #k8s #RMI
cpp 编译工具一览 GCC(GNU Compiler Collection) GCC是一个强大的编译器套件,支持多种编程语言。GCC 由自由软件基金会(FSF)开发和维护,是 GNU 项目的一部分。GCC包含多个编译器前端和一个通用的后端。这个通用后端负责将中间表示(由前端生成的,通常是汇编代码)转换为目标机器代码。 gcc(GNU C Compiler) gcc 是 GCC 的一个组成部分,它是 GCC 编译器 2024-07-26 #编译 #gnu #c++