1个稳定版本

1.7.0 2023年10月30日

#216 in 模板引擎

Apache-2.0

15KB

自动机CI

AutomataCI

这是一个模板型git仓库,配备了一个名为自动机CI的本地内置半自动化的CI工具。它允许您在不完全依赖于任何第三方服务提供商的情况下运行全力的CI作业,这使得项目在2021-2023年间至少对供应链威胁极为脆弱。

为什么这很重要

使用自动机CI的一些良好商业理由

  1. 从坚实的基础和经过测试的起点开始 - 所有模板和CI作业都经过测试,并默认配置为立即进行软件开发。
  2. 避免受到恶意供应商的威胁 - CI是您产品的神经系统;内部和本地处理,而不是让它裸露地暴露于任何第三方勒索。
  3. 持续改进 - 自动机CI本身被设计为能够适应市场变化、自我改进并满足常见用例。
  4. 简单且可扩展 - 只使用POSIX shell和PowerShell,因此无需大量外部安装即可本地运行。

支持的技术

可部署的发行版

第三方 CI 集成

AutomataCI 通过与以下集成无缝工作:

  1. GitHub Actions
  2. GitLab CI (即将推出)

文档与规范

请查看 automataCI/docs/AutomataCI-Engineering-Specification.pdf 中的 PDF 文件。

这些文档会定期在每次发布之间进行更新。

如何使用 AutomataCI

整个 Git 仓库实际上是一个模板仓库。因此,您可以选择使用 git clone 命令克隆它,或者从 发布 部分下载最新源代码的副本。然后,执行以下步骤以确保一切正确。

刷新 Git 钩子

解压后,您需要刷新 git 钩子,通过删除仓库根目录下隐藏的 .git 目录,然后再次运行 git init。POSIX Shell 命令如下所示:

$ rm -rf .git
$ git init --initial-branch=main
$ git remote add origin <YOUR REMOTE URL>

更新软件许可

默认情况下,展示的产品许可(LICENSE.txt)使用 AutomataCI 许可证。目标是更改并更新它与您自己的产品许可证匹配。

您还应更新 src/licenses 目录中的所有文件,以匹配您自己的项目。文件 src/licenses/LICENSE-EN.odt 是一个 LibreOffice Writer 文件。因此,只要您可以使用生成 src/licenses/LICENSE-EN.pdf 的文档生成产品,就可以自由使用其他文档生成产品。

默认情况下,所提供的图标和横幅为AutomataCI内部src/icons/目录中的图标,由src/icons/principle-canvas中的材料使用Inkscape设计软件生成。只要能生成所需输出工件,您可以使用其他设计软件。

完成在src/icons/principle-canvas目录中的产品品牌设计后,请按照以下方式生成优化和可用的图形工件

  1. src/icons/icon.svg - 用于到处使用的通用和广泛兼容的图标文件。
  2. src/icons/icon-48x48.png - 在Linux系统图标和快捷方式中使用的PNG 48x48图标文件。
  3. src/icons/icon-128x128.png - 在Linux系统图标和快捷方式中使用的PNG 48x48图标文件。
  4. src/icons/icon-1200x400.svg - 用于README.md或市场推广。

更新CODE_OF_CONDUCT.md

如有需要,请更新CODE_OF_CONDUCT.md,以包含您适当的法律条款。

更新CONFIG.toml

默认情况下,AutomataCI正在部署其自己的CONFIG.toml产品数据。您应该完全更新它以匹配您的产品。

技术选择

AutomataCI可以在存储库中运行多种支持的技术。例如,您可以通过定义PROJECT_PYTHON目录名称(默认为srcPYTHON)启用Python技术,并通过定义PROJECT_GO目录名称(默认为srcGO)同时启用Go技术。

请明智选择,因为多重技术功能仅针对那些想为其他目的使用专用技术的人(例如,为静态文档生成使用SCULLY)。

更新所选技术的CI特定作业配方

默认源代码目录(src[TECH])在其src[TECH]/.ci目录内包含其技术特定的AutomataCI作业配方。请自由修改它们以匹配您的需求,使用您的POSIX Shell和PowerShell知识。

更新所有分发资源文件

src/{docs,packages,publishers}中的所有数据资源文件应更新以匹配您产品的需求。它们的规范可在automataCI/AutomataCI-Engineering-Specification.pdf文档中找到。

更新GitHub集成配置

通常不需要,您可以在.github目录内更新GitHub集成文件。值得注意的是文件包括:

  1. .github/ISSUE_TEMPLATES/* - 问题模板。
  2. .github/PULL_REQUEST_TEMPLATE/* - 提交请求模板。
  3. .github/workflows/* - GitHub Actions 工作流程食谱。
  4. .github/FUNDING.yml - GitHub 赞助按钮(参考 规格)。

更新 README.md

最后,请更新这个 README.md 文件。目前,它是为 AutomataCI 项目编写的。您可以将其删除并编写一个新的。

清理未使用的源目录

AutomataCI 通过技术提供大量源目录。一旦您确定了技术,您可能需要删除所有未使用的源目录(src[TECH])并清理存储库。

Git 提交初始设置

到这一点,您的存储库现在已经准备好。您可以自由地提交初始化(假设您使用 main 作为主分支)

$ git add .
$ git commit -s
... WRITE YOUR COMMIT ...
$ git push -u origin main:main
$ git switch --orphan gh-pages
$ git commit --allow-empty -m "Initial Commit"
$ git push origin gh-pages:gh-pages
$ git checkout main

操作 AutomataCI

要操作 AutomataCI,请执行 ci.cmd 帮助部分

$ ./ci.cmd help

Please try any of the following:
        To seek commands' help 🠚        $ ./ci.cmd help
        To initialize environment 🠚     $ ./ci.cmd env
        To setup the repo for work 🠚    $ ./ci.cmd setup
        To prepare the repo 🠚           $ ./ci.cmd prepare
        To start a development 🠚        $ ./ci.cmd start
        To test the repo 🠚              $ ./ci.cmd test
        Like build but only for host 🠚  $ ./ci.cmd materialize
        To build the repo 🠚             $ ./ci.cmd build
        To notarize the builds 🠚        $ ./ci.cmd notarize
        To package the repo product 🠚   $ ./ci.cmd package
        To release the repo product 🠚   $ ./ci.cmd release
        To stop a development 🠚         $ ./ci.cmd stop
        To clean the workspace 🠚        $ ./ci.cmd clean
        To purge everything 🠚           $ ./ci.cmd purge

CI 作业从上到下按故事情节排列。您可以自由地相应地执行。

要贡献

AutomataCI 的成功离不开 (Holloway) Chew、Kean Ho 的贡献以及外部人士的支持。如果您使用过 AutomataCI 并希望做出贡献,有 2 种方式可以做到这一点

财务

要财务支持该项目,请访问 Holloway 的赞助商店

Sponsor

小额购买会很有帮助。

工艺

如果您想贡献代码、错误报告和想法,请随时参考位于 automataCI/ 目录中的 PDF 工程规范。

许可证

AutomataCI 在 OSI 兼容的 Apache 2.0 许可证 下许可

无运行时依赖