构建系统
此仓库正在积极开发中 ⚠️请定期回来查看更新。
一个在任何地方都能工作的CI/CD,甚至在你的本地环境。
buildsys 是一个可定制的、可扩展的CI/CD系统,有多个后端。它有一个基于插件的系统,允许开发人员编写他们的自定义代码来部署
从源代码构建
你将需要Go 1.18以上的版本来构建这个项目:
cd cmd/togomak
go build .
运行二进制文件
./togomak ./config.yaml
概念
提供者
提供者是一种插件,它可以在以下方面提供帮助
- 收集信息
- 检查任务的所有前提条件是否得到满足
- 运行一个任务
来自 "收集信息 "步骤的提供者的数据可以在其他阶段使用。
可以在配置文件中定义一个提供者,如下所示:
providers:
- id: git
path: plugins/git/git
远程插件仍然是一个WIP。
阶段
阶段是默认情况下同时发生的工作。 它们可以并行或按顺序运行。 如果你需要阶段按顺序执行,你可以指定stages[].depends-on 参数
一个示例阶段可以这样定义:
stages:
id: myuniqueid # id needs to be unique
container: python
args:
- "-c"
- "print('Hello World')"
上面的阶段片段使用Docker(或Podman)从容器注册表中提取python 镜像,并执行args中提到的片段。
你也可以在容器中运行一个shell脚本。
stages:
id: helloworld
container: python
# the above container will run the following script in 'sh'
script: |
echo "Hello World"
要指定各阶段之间的依赖关系,你可以使用depends-on 参数。buildsys 将等待各阶段完成后再运行下一个阶段。
stages:
id: myuniqueid
container: python
args:
- "-c"
- "print('Hello World')"
depends-on:
- helloworld
配置
配置是在yaml 。目前支持的一些字段是,一些字段支持pongo 语法,这与django的模板语法非常相似。
目前支持的字段有:
.steps[].condition.steps[].script.steps[].args