ainsleydev/webkit
GitHub: ainsleydev/webkit
将 `app.json` 清单转换为自动化 IaC 与 CI/CD 的全栈 Web 框架。
Stars: 1 | Forks: 0
Infrastructure-as-code framework for full-stack web applications
[](https://goreportcard.com/report/github.com/ainsleydev/webkit)
[](https://github.com/ainsleydev/webkit/releases)
[](https://codeclimate.com/github/ainsleydev/webkit/maintainability)
[](https://codecov.io/gh/ainsleydev/webkit)

[](https://pkg.go.dev/github.com/ainsleydev/webkit)
[](https://github.com/ainsleydev/webkit/blob/main/LICENSE)
[](https://ainsley.dev)
[](https://twitter.com/ainsleydev)
## WebKit
WebKit 是一个将单个 `app.json` 清单转换为生产级基础设施和 CI/CD 管线的 CLI 工具。它会生成 Terraform 配置、GitHub Actions 工作流以及项目文件——所有这些都不会在项目仓库中引入基础设施代码。
**关键特性:**
- **单一数据源**:在 `app.json` 中定义应用、资源与环境
- **干净的仓库**:无需 `infra/` 文件夹——工作流包含一切
- **基础设施即代码**:自动化的 Terraform 生成与集中式模块
- **密钥管理**:内置 SOPS/Age 加密,支持环境专属解密
- **CI/CD 自动化**:用于计划、部署与漂移检测的 GitHub Actions 工作流
- **开发者体验**:支持幂等更新、本地测试与零配置默认值
## 包管理
- 
- 
- 
## 安装
**快速安装:**
```
curl -sSL https://raw.githubusercontent.com/ainsleydev/webkit/main/bin/install.sh | sh
```
或从 [最新发布版本](https://github.com/ainsleydev/webkit/releases/latest) 下载二进制文件。
**验证安装:**
```
webkit version
```
## 开发环境搭建
运行以下命令以配置 `webkit` 环境。
```
make setup
```
### 前置条件
- **Go** 1.23 或更高版本
- **pnpm**(用于任务运行器与本地工作流测试)
- **act**(用于本地测试 GitHub Actions)
- **age**(用于密钥加密)
### 项目结构
```
webkit/
├── cmd/webkit/ # CLI entry point
├── internal/
│ ├── appdef/ # App manifest parsing and validation
│ ├── cmd/ # CLI command implementations
│ │ ├── cicd/ # GitHub Actions workflow generation
│ │ ├── env/ # Environment variable management
│ │ ├── docs/ # Documentation generation
│ │ ├── files/ # Project file generation
│ │ ├── infra/ # Terraform infrastructure commands
│ │ └── secrets/ # SOPS encryption/decryption
│ ├── infra/ # Terraform wrapper and state management
│ ├── manifest/ # File tracking and manifest source tagging
│ ├── scaffold/ # Template scaffolding system
│ ├── secrets/ # SOPS/Age integration
│ ├── templates/ # Embedded project templates
│ └── util/ # Shared utilities
└── platform/ # Terraform modules (separate infra repository)
├── providers/ # Provider-specific modules (DO, B2, etc.)
└── modules/ # Orchestration modules (apps, resources)
```
### 架构概述
**关键组件:**
- **appdef**:定义 `app.json` 结构并处理反序列化与校验
- **scaffold**:模板渲染引擎,支持文件跟踪与幂等更新
- **manifest**:追踪哪些文件由生成及其来源(应用/资源/项目)
- **secrets**:SOPS 集成,用于加密/解密环境变量
- **infra**:Terraform 封装,管理状态与 tfvars 生成
## 本地工作流测试
你可以使用 [act](https://github.com/nektos/act) 在本地模拟 GitHub Actions 工作流。`act`
会在本地运行,读取当前工作目录中的文件(包括所有未提交的更改)。
```
# 测试 lint 工作流
pnpm act:lint
# 测试 test 工作流
pnpm act:test
# Dry-run 发布工作流(显示将要运行的内容而不执行)
pnpm act:release
```
## 发布
*仅维护者使用*
WebKit 使用 [GoReleaser](https://goreleaser.com/) 进行自动化发布。发布流程通过创建并推送 Git 标签触发。
### 快速发布
使用交互式标签工具:
```
pnpm tag
```
它将引导你完成以下步骤:
1. 选择创建或删除标签
2. 选择版本提升类型(`patch`、`minor` 或 `major`)
3. 确认版本号
4. 创建并推送标签
推送标签后,版本号会被注入,随后 GitHub Actions 会自动触发 GoReleaser 工作流,为各平台构建二进制文件并创建附带二进制文件的 GitHub 发布。
### 语义化版本管理
WebKit 遵循 [语义化版本控制](https://semver.org/)。
- **补丁版本**(v1.0.1):错误修复与微小变更
- **次要版本**(v1.1.0):新功能,向后兼容
- **主版本**(v2.0.0):破坏性变更
## 发布 npm 包
WebKit 使用 [Changesets](https://github.com/changesets/changesets) 实现自动化包版本管理与发布。在 `packages/` 目录中合并变更时,创建 changeset 以记录变更并指定版本提升类型。详见 [packages/README.md](packages/README.md)。
## 版权
除非获得我们明确的书面许可,否则不得分发或以商业方式利用本仓库中的内容或任何书面文本。也不得
传输
或以任何其他形式在网站或其他电子检索系统中存储。
任何形式的全部或部分内容分发均被禁止,但以下情况除外:
- 你可以将内容下载或打印到本地硬盘,仅用于个人和非商业用途
- 你可以将内容复制给单个第三方,仅用于个人用途,但必须标明
网站
作为内容来源,
## 许可证
代码版权 2023 ainsley.dev。代码根据 [BSD-3 Clause](LICENSE) 发布。标签:EVTX分析, Go语言, Runtime Enforcement, Syscall, Web开发, Web框架, 云端部署, 代码覆盖率, 全栈应用, 前端构建, 单文件清单, 可维护性, 应用清单, 开发者文档, 开源框架, 快速启动, 持续交付, 持续集成, 搜索引擎优化, 文档驱动开发, 日志审计, 模块化开发, 模板引擎, 版本发布, 特权提升, 生产环境准备, 程序破解, 自动化部署, 静态站点生成