Skip to content
taptapPublic

About

General features for Devcontainer and CI

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

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

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages