Skip to content

taptap/features

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TapTap DevContainer Features

用途

TapTap 团队的 DevContainer Features 集合,提供标准化的开发环境配置。这个 monorepo 包含多个可复用的 features,用于在开发容器中快速搭建一致的开发环境。

Features 列表

1. 🧪 git-config

配置组织级 Git 设置,包括:

  • 安装最新版 Git(支持 PPA)
  • 配置标准化的系统级 gitconfig
  • 设置统一的 gitignore 规则
  • 自动安装 git-lfs

2. ⌛️ dotfiles

让用户方便 bootstrap 自己的 dotfiles

3. ⌛️ git-delta

安装和配置 delta 作为 Git 的 diff 工具

目录结构

.
├── src/                               # Features 源代码
├── test/                              # 测试文件
└── .github/
    └── workflows/                     # CI/CD 工作流

使用方法

在项目中使用

在你的项目 .devcontainer.json 中添加需要的 features:

{
  "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "features": {
    "ghcr.io/taptap/features/git-config": {
      "version": "latest",
      "ppa": true
    },
    "ghcr.io/taptap/features/dotfiles": {},
    "ghcr.io/taptap/features/git-delta": {}
  }
}

本地开发与测试

  1. 安装 devcontainer CLI

    bun add -g @devcontainers/cli
  2. 测试单个 feature

    devcontainer features test --features src/git-config
  3. 测试所有 features

    devcontainer features test --features src
  4. 运行特定测试场景

    devcontainer features test --features src/git-config --skip-autogenerated

发布

Features 会自动发布到 GitHub Container Registry:

# 手动发布(需要适当的权限)
devcontainer features publish src --namespace ghcr.io/taptap/features

开发指南

添加新 Feature

  1. src/ 下创建新目录
  2. 创建必需文件:
    • devcontainer-feature.json - Feature 元数据
    • install.sh - 安装脚本(需要可执行权限)
  3. test/ 下创建对应的测试目录
  4. 编写测试脚本和场景

测试要求

  • 每个 feature 必须有对应的测试
  • 测试应覆盖主要的 Linux 发行版(Ubuntu、Debian、Alpine)
  • 使用 dev-container-features-test-lib 进行断言

CI/CD

所有 PR 会自动运行测试,合并到 main 分支后会自动发布到 registry。

贡献

欢迎提交 PR!请确保:

  1. 新 feature 有完整的测试覆盖
  2. 更新本 README 的 features 列表
  3. 遵循现有的代码风格和结构

License

MIT

About

General features for Devcontainer and CI

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages