README 未给出安装步骤,需先查阅官方文档;Run 定义需提交在 Git 仓库中并由 push 或 PR 触发;任务依赖容器执行器(如 Docker 或 Kubernetes),需提前准备
agola
agola-ioApache-2.0长期未更新自托管的分布式 CI/CD 平台,支持 GitHub、GitLab、Gitea 等 Git 源,用容器化方式跑流水线,适合想自己掌控构建与部署流程的团队。
Agola: CI/CD Redefined
v0.11.0发布于 2025-09-25 07:59 UTC1,629star122fork同步于 2026-11-07 07:32 UTC
README 未给出安装命令,仅指向 https://agola.io/tryit 与 https://agola.io/doc/ 硬件要求按 README 说明
README 未说明具体硬件要求;任务在容器执行器中运行,可部署于 Kubernetes、IaaS 或裸金属。
自托管 CI/CD 平台,从单进程到分布式部署,用容器化 Run 跑构建与部署
自托管的分布式 CI/CD 平台,支持 GitHub、GitLab、Gitea 等 Git 源,用容器化方式跑流水线,适合想自己掌控构建与部署流程的团队。
核心能力
- Run 工作流支持 fan-in、fan-out 与矩阵任务
- Run 定义随代码提交进 Git 仓库,可追踪可复现
- 支持从失败任务或从头重启 Run,复用同一提交与变量
- 同时接入 GitHub、GitLab、Gitea 等多个 Git 提供方
- 用 jsonnet 模板生成 Run 配置,而非扩展 YAML
容易踩的坑
内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README
- v0.11.0最新正式版2025-09-25 · 2025-09-25 07:59 UTC
v0.11.0
- gateway: simplify mux configuration (@sgotti) #551
- *: update dependencies (@sgotti) #550
- *: update to go 1.25 (@sgotti) #549
- Update to golangci-lint v2.4.0 (@sgotti) #548
- *: update gorilla CSRF version (@sgotti) #547
- config: validate allowed origins (@sgotti) #546
- *: update gotests.tool to latest version (@sgotti) #545
- *: update to go 1.24 (@sgotti) #544
- Update to golangci-lint v2.1.6 (@sgotti) #543
- examples: add missing web config for notification service (@sgotti) #542
- *: update dependencies (@sgotti) #539
- *: use log Msg when passing a string. (@sgotti) #538
- errors: add WithAPIErrorMsgf (@sgotti) #537
- *: update to go 1.23 (@sgotti) #535
- errors: add WithWrapperErrorMsgf (@sgotti) #536
- *: explicitly create services local directories (@sgotti) #534
- services/config: check valid sqlite3 db connstring (@sgotti) #533
- services/config: fix db config validation (@sgotti) #532
- gateway: add detailed errors to get project response (@alessandro-sorint) #530
- v0.10.02025-09-25 · 2025-09-25 07:59 UTC
查看更新说明
v0.10.0
- gateway: unify/improve handling of authenticated user (@sgotti) #525
- gateway: move remaining get of current user from api to action (@sgotti) #524
- gateway: fix commit status and run webhook deliveries api (@alessandro-sorint) #521
- tests: fix wrong ProjectCommitStatusRedelivery test (@alessandro-sorint) #522
- cmd/export: close file descriptor (@testwill) #516
- objectstorage: multiple updates and changes (@sgotti) #519
- runservice: fix objectsCleaner lock key usage (@sgotti) #520
- util: use generic Ptr function (@sgotti) #518
- *: update dependencies (@sgotti) #517
- api: add some missing http content types headers. (@sgotti) #514
- config: add docker registries auth nil check (@alessandro-sorint) #513
- configstore: move logic from db to action handler (@sgotti) #511
- *: update dependencies (@sgotti) #512
- *: add detailed errors to api responses (@sgotti) #507
- *: use do method in http handlers (@sgotti) #508
- gateway: add action.APIErrorFromRemoteError (@sgotti) #506
- errors: split wrapped error from APIError message (@sgotti) #505
- configstore: move last bits of logic from api to action (@sgotti) #504
- configstore: fix wrong error handling (@sgotti) #503
- validation: add min/max length check to name validation (@sgotti) #499
- *: update to go 1.22 (@sgotti) #498
- sqlg updates (@sgotti) #495
- v0.9.22024-05-20 · 2024-05-20 14:32 UTC
查看更新说明
v0.9.2
- api: add some missing http content types headers (@sgotti) #515
- v0.9.12024-05-03 · 2024-05-03 14:56 UTC
查看更新说明
v0.9.1
- update golang.org/x/net to v0.24.0
- rebuild with updated go version.
- v0.9.02024-05-03 · 2024-05-03 14:55 UTC
查看更新说明
v0.9.0
- agolademo: use docker compose (@sgotti) #494
- executor: add option to define docker driver network (@sgotti) #493
- Dockerfile: agolademo: create agola directories (@sgotti) #491
- Dockerfile: update final image (@sgotti) #489
- notification: fix cleaners infinite loop. (@sgotti) #487
- *: add cursor fetching to GetRuns api (@sgotti) #484
- tests: always check testutil.Wait error (@sgotti) #485
- tests: improve and simplify some tests (@sgotti) #483
- tests: split tests in multiple files. (@sgotti) #482
- *: actions: ensure a default sort direction (@sgotti) #480
- *: commitstatus/runwebook delivery save filter inside cursor (@sgotti) #481
- configstore: simplify/improve Get tests (@sgotti) #478
- notification: simplify/improve Get tests (@sgotti) #479
- tests: simplify Get API with cursor tests (@sgotti) #477
- runservice: add AGOLA_RUN_COUNTER variable (@alessandro-sorint) #473
- gateway: add api to redeliver a commit status delivery (@alessandro-sorint) #472
- gateway: fix api cursors (@alessandro-sorint) #471
- notification: fix db func GetProjectRunWebhookDeliveriesAfterSequenceByProjectID (@alessandro-sorint) #470
- notification: fix db func GetProjectCommitStatusDeliveriesAfterSequenceByProjectID (@alessandro-sorint) #468
- tests: use assert helpers (@sgotti) #469
- testutil: Add NilError helper to log detailed test errors (@sgotti) #466
- testutil: add detailed errors for zerolog output in tests (@sgotti) #465
- notification: rename GetProjectRunWebhookDeliveriesAfterSequence func (@alessandro-sorint) #467
- gateway: add api to get commit status deliveries (@alessandro-sorint) #460
- runservice: remove time.sleep from tests (@sgotti)
用户点评
登录用户的真实使用记录,可按版本和硬件筛选共 0 条
还没有人点评。第一个说出真实体验的人最有价值。
Agola
CI/CD redefined
For an introduction to agola you can take a look at this post
Try it
Features
- Easy to install and manage.
- Scalable and High Available: go from a single instance (single process) deployment to a distributed deployment.
- Deploy anywhere: Kubernetes, IaaS, bare metal and execute the "tasks" anywhere (currently containers executors like docker or orchestrators and Kubernetes, but easily extensible to future technologies or VMs instead of containers).
- Support any language, deployment system etc... (just use the right image)
- Integrate with multiple git providers at the same time: you could add repos from github, gitlab, gitea (and more to come) inside the same agola installation.
- Use it to manage the full development lifecycle: from build to deploy.
- Tasks Workflows (that we called Runs) with ability to achieve fan-in, fan-out, matrixes etc..., everything containerized to achieve maximum reproducibility.
- Git based workflow: the run definition is committed inside the git repository (so everything is tracked and reproducible). A run execution is started by a git action (push, pull-request).
- Design it with the ability to achieve at most once runs: during a deployment to production we don't want multiple concurrent execution of the deploy...
- Restartable and reproducible Runs (restart a run from scratch or from failed tasks using the same source commit, variables etc...)
- User Direct Runs: give every user the power to test their software using the same run definition used when pushing to git/opening a pull request inside the Agola installation with just one command like if they were running tests locally (without requiring a super powerful workstation).
- Testable "Runs" (what is a CI/CD environment if you cannot test your changes to the Runs definitions?): use the same run definition but use a powerful secrets and variables system to access different resources (environments, docker registries etc...).
- Don't try to extend YAML to be a templating language but use a real templating language (as of now jsonnet) to easily generate the run configuration without side effects.
- An advanced permissions system (work in progress).
- Dependency Caching to speed up tasks
Documentation
Local development
Contributing to Agola
Agola is an open source project under the Apache 2.0 license, and contributions are gladly welcomed! To submit your changes please open a pull request.
Contacts
- For bugs and feature requests file an issue
- For general discussion about using and developing Agola, join the agola forum