为 KubeVirt.io 做贡献
The kubevirt.io 网站是一个由 Jekyll 驱动、托管于 GitHub Pages 的网站。
非常欢迎为 KubeVirt 网站做出贡献!请就新内容创意或现有内容问题与我们联系!
入门指南
Git 语义
从开发到生产环境的代码迁移遵循一套半标准化的流程。
基本流程是 ...
Fork -> Clone -> Branch -> Commit -> Push -> Pull Request -> Approve -> Merge
Fork
通过点击仓库页面顶部的 Fork 按钮,将仓库的分支副本创建到你的 账户中。只要定期执行与上游的分支同步和变基操作以妥善维护该分支,这应该是唯一需要创建分支副本的时候。
Clone
要在本地克隆分支仓库,请访问 https://www.github.com/*github_name*/kubevirt.github.io 查看你的分支。点击 Code 按钮。选择一种克隆方法并将 url 复制到剪贴板。打开一个终端窗口并 ...
git clone *clipboard paste url*
Remotes
默认情况下,本地 git 仓库会有一个名为 origin 的远程别名,指向你在 GitHub 上的 fork。KubeVirt 仓库有许多贡献者,因此需要定期工作来同步本地和 origin 分支与上游分支。要在你的本地克隆中启用此工作流程,请向仓库添加一个新的远程。按照惯例,此远程命名为 upstream。
要添加一个额外的远程,执行以下命令...
git remote add upstream http/ssh url
然后你应该会看到类似以下内容...
$ git remote -v
origin git@github.com:mazzystr/kubevirt.github.io.git (fetch)
origin git@github.com:mazzystr/kubevirt.github.io.git (push)
upstream git@github.com:kubevirt/kubevirt.github.io.git (fetch)
upstream git@github.com:kubevirt/kubevirt.github.io.git (push)
要从上游仓库同步 main 分支,请执行以下 ...
git checkout main; git fetch upstream; git reset --hard upstream/main; git push origin main -f
注意 main 分支对于此仓库纯属外观上的。合并到 main 不被接受。
所有工作必须从 main 分支创建分支。执行以下操作以从上游同步 ...
git checkout main; git fetch upstream; git reset --hard upstream/main; git push origin main -f
功能分支
尽管来自本地 main 分支的更改会被接受,但这并不建议这样做,可能会引起混淆并可能导致数据丢失。请通过运行以下命令,从 main 创建功能分支 ...
git checkout main; git fetch upstream; git reset --hard upstream/main; git push origin main -f; git branch feat_branch; git checkout feat_branch; git push --set-upstream origin feat_branch
Rebase
随着本地和 origin 落后于 upstream,功能分支需要定期执行 rebase。执行以下操作以进行 rebase ...
git checkout main; git fetch upstream; git reset --hard upstream/main; git push origin main -f; git checkout feat_branch; git rebase origin/main; git push -f
合并冲突的可能性始终很大。解决时请谨慎操作。每个冲突都必须手动编辑。执行以下操作以解决每个冲突 ...
# Modify and save the filename
git add filename; git rebase --continue
工作
网站的每个部分都划分到各自的文件夹中。
./pages: 网站./blogs: 博客文章./docs: 文档。./videos: 视频
所有网站图片都位于 ./assets/images 下。请勿编辑这些图片。
博客文章的 Markdown 文件位于 ./posts 下。请遵循现有的文件命名方案。
与博客条目相关的图片放置在 ./assets/images/BLOG_POST_TITLE 下。
BLOG_POST_TITLE 应与在 /_posts 下创建的 Markdown 文件名相匹配。
如果你是一名 UI/UX 开发者,网站的结构和布局将非常受益于你的关注。欢迎浏览 网站问题 或贡献其他想法。
测试工作
该仓库根目录下的 Makefile 为编辑器提供了在本地运行与 CI 用于验证更改相同的测试的能力。这比等待在线 CI 资源启动以发现拉取请求存在阻止合并的问题要节省时间。
- 在本地构建测试镜像
$ make build_img
注意 如果你使用 docker,你可能需要设置 CONTAINER_ENGINE 和 BUILD_ENGINE:
$ export CONTAINER_ENGINE=docker
$ export BUILD_ENGINE=docker
注意 如果您使用的是启用了 SELinux 的操作系统,您需要设置 SELINUX_ENABLED:
$ export SELINUX_ENABLED=True
- 验证页面渲染
make run
在 Web 浏览器中打开 http://0.0.0.0:4000
- 测试所有超链接
make check_links
- 测试拼写
make check_spelling
如果您发现一个被标记的拼写错误,但您认为它并非错误,请随意将该词添加到位于 GitHub 仓库 kubevirt/project-infra/images/yaspeller/.yaspeller.json 中的字典文件。请尽量保持字典文件的良好排序,并使用正则表达式来处理常见模式。
- 检查 Markdown
make check_lint
如果您发现一个您认为应该被忽略的 markdown 错误,您应该考虑将其添加到 markdownlint.yaml 配置文件中。如果有一个文件需要跳过 linting,它可以被添加到 .markdownlintignore 配置文件中。
提交前请确保所有测试通过!
提交你的代码
- 提交你的代码并签署你的提交!
git commit -s -m "The commit message" file1 file 2 file3 ...
提交必须经过签名验证!没有例外!
您将在事务日志中看到以下内容
git log
commit hashbrowns (HEAD -> feat_branch, upstream/main, origin/main, main)
Author: KubeVirt contributer <kubevirt_contributer@kubevirt.io>
Date: Mon Jan 01 00:00:00 2021 -0700
<your commit message>
Signed-off-by: <your configured git identity>
-
浏览至
https://www.github.com/*you*/kubevirt.github.io -
你经常会看到一个
Compare & Pull Request按钮……点击它 -
确保你的基础分支是
main,比较分支是feat_branch,并且文件差异是正确的。 -
为拉取请求创建一个合适的标题和正文。务必标记相关的问题、相关人员,并点击“创建拉取请求”按钮。
维护者会自动收到已创建拉取请求的通知,并进一步指导如何合并贡献。
Makefile 帮助
$ make help
Makefile for website jekyll application
Usage:
make <target>
Env Variables:
CONTAINER_ENGINE Set container engine, [*podman*, docker]
BUILD_ENGINE Set build engine, [*podman*, buildah, docker]
SELINUX_ENABLED Enable SELinux on containers, [*False*, True]
Targets:
help Show help
build_img Build image localhost/kubevirt-kubevirt.github.io
check_links Check external, internal links and links/selectors to userguide on website content
check_lint Check markdown linting
check_spelling Check spelling on content
run Run site. App available @ http://0.0.0.0:4000
status Container status
stop Stop site
环境变量
CONTAINER_ENGINE: 我们中的一些人使用docker。我们中的一些人使用podman(默认:podman)。BUILD_ENGINE: 我们中的一些人使用docker。我们中的一些人使用podman(默认:podman)SELINUX_ENABLED: 我们中的一些人运行启用了 SELinux 的环境。设置为True以启用容器挂载标签
目标:
build_img: 使用此目标来构建一个包含 Jekyll、casperjs、yaspeller 和 HTMLProofer 的镜像。check_links: HTMLProofer 用于检查指向外部网站的链接以及任何跨页面链接。Casperjs 用于解析包含 markdown 选择器的用户指南 URL,并确保它们存在。check_lint: 使用 markdownlint 来检查 markdown 代码规范。可以通过 .markdownlint.yaml 和 .markdownlintignore 配置文件进行配置。check_spelling: yaspeller 用于检查拼写。如有需要,请随时更新字典文件(kubevirt/project-infra/images/yaspeller/.yaspeller.json)。status: 基本上,${BUILD_ENGINE} ps提供了一种轻松查看正在运行内容的方式。stop: 停止容器和应用
采用者
如果您是 KubeVirt 的采用者并希望看到您的标志出现在网站上:
- 确保您已将自己添加到 kubevirt/kubevirt 仓库中的 adopters file。共有三种 adopter types,每个列表均按字母顺序排列。在您可以提交 PR 在此处添加您的 logo 之前,该 PR 必须已合并。
- 创建此仓库的一个分支,并以 png 或 svg 格式在
assets/images/adopters中添加您的 logo。 - 在同一分支中,从
_data文件夹内运行_data/adopters.py脚本。该脚本会检查 kubevirt/kubevirt 中的 ADOPTERS 文件,并自动更新我们网站代码中关联的 adopters 文件以包含您的 logo。 - (可选但推荐)通过构建网站的本地副本来 Test your changes。
- 提交 PR 以在仓库中合并您的分支。应更改两个文件:您的 logo 新文件和
_data中编辑过的adopters.yml文件。 - 如果审查者在一两周内未响应,请随时提醒他们。
Getting Help
- Mailing list: https://groups.google.com/g/kubevirt-dev
- Slack: https://kubernetes.slack.com/messages/virtualization
- Twitter: https://twitter.com/kubevirt
Developer
- Github project: https://github.com/kubevirt
- Community meetings: Google Calendar
Privacy
- Check our privacy policy at: https://kubevirt.io/privacy/