# 快速上手 修网的知识需要在实践中不断积累,网维的wiki做为每一个网维成员经验的总结,自然也需要不断的更新,但是,wiki本身大部分时间都是由开发组的仅仅几个人来维护,难以时刻更新到最新情况,所以,我们想让网维的每个人都能加入wiki的维护,这篇文章就是写给希望为wiki添砖加瓦,却不太了解相关方法的小伙伴的,希望这篇文章能够快速让你上手wiki的维护工作。 在这篇文章里我们将教你:\ 将我们在github上的主仓库fork一份,然后将fork仓库clone到你的电脑;修改网站源代码;将你的修改传回fork仓库,提交pull request :::info 信息 在正式开始编辑前,你可以看看我们的成品网站,每篇文章的下面会有一个`Edit This Page`的链接,是这篇文章的源代码,这里是网站的链接:[Click Me ](https://zscdev-demo.pages.dev/) ::: ## 准备 我们假设你所使用的是windows系统。 首先,我们需要安装必要的开发工具:git 和 Node.js。 访问如下链接:[git下载](https://git-scm.com/download/win) , [Node.js下载](https://nodejs.org/zh-cn/download/prebuilt-installer)。 :::info 信息 你也可以通过windows自带的WinGet包管理器下载,详见:[微软文档](https://learn.microsoft.com/zh-cn/windows/package-manager/winget/)。 ::: :::tip git是什么? git是一个版本控制工具,他会记录一个项目从创建之初任何人对任何文件的任何改动,大大方便了多人协作工程的管理,wiki的源代码托管在基于git设计的github上。 ::: :::tip Node.js是什么? Node.js是一个在后端运行javascript的运行时,我们使用基于这个平台设计的docusaurus框架来将wiki从一堆markdown文档变成一个网站。 ::: 访问github,如果没有账号,就注册一个,然后,打开https://github.com/ZSCNetSupportDept/website。 点击上面的fork,创建仓库的一个分支,点击create fork。 进入你刚才fork的仓库,点击Code,选择HTTPS,复制下面的那一串内容。 然后,请打开你的终端,你可以在“开始”菜单栏里搜索"PowerShell"来打开。 如果你的系统没有安装PowerShell,你可以使用cmd,按`Win+R`,在弹出框里输入`cmd`打开。 输入`git clone 你复制的内容`,这将在你的当前目录下创建一个名为`website`的文件夹,并将开发组网站的全部内容复制到这个文件夹里面。 :::tip 提示 你可能会需要科学上网的手段来访问github。 ::: 然后,输入`cd website`。 切换到我们的项目目录下后,运行`npm install`来安装项目的所有依赖。 :::tip 提示 为了加速下载,你可能会需要配置npm镜像,可以输入`npm config set registry https://registry.npmmirror.com`。 ::: 现在,输入`npm start`,程序就会在你的电脑上构建并部署网站。 然后在你的浏览器上输入`https://localhost:3000` 如果没有出错的话,你会看到我们开发组网站的主页。 :::tip 提示 每次启动测试版网站,都需要在这里再输入一次`npm start` ::: ## 编辑 打开`website`下的`docs`文件夹,再打开`wiki`文件夹,这里就是我们的wiki内容仓库了。 仓库里的所有的文章都是以md结尾的markdown文件,你需要熟悉markdown的写法,才能对文章的内容修改和完善,markdown并不是特别复杂,你可以花一点时间去学会他。 :::info 信息 这里是一些学习markdown的资源:https://markdown.com.cn/ \ https://github.highlight.ink/mastering-markdown/intro \ https://commonmark.org/ (英文) ::: 如果想要在文本中添加图片,视频,或者其他资源,请将这些素材放入static中,以方便管理。 对代码的修改将会自动同步到刚才打开的网页里,你可以在那里确认修改的结果满意与否,注意,你需要保存文件才会同步更改。 修改完毕后,输入`git add .`再输入`git commit`,并对你的修改做出一个简短的说明。 ### 改什么? 你可以校对已有的条目,增加一些内容,或者加入一些图片之类的。 你也可以添加新条目,撰写一些你觉得有价值的修网心得。 或是帮助我们改善网站本身,比如改一改主题,写一个首页等(如果有相关能力,需要react基础) ### 文件名 你会发现,所有文件的名字前面都有一个数字,那就是文章在sidebar中出现的顺序,增添文件,请按照`order-filename.md`的格式修改名字。 在文件名前加一个下划线,系统就不会将文章加入成品网站中。 :::tip 提示 关于如何修改wiki的更多提示,可以去看docusaurus的官方文档:[链接](https://docusaurus.cn) ::: ## 推送到仓库 在修改完毕并且在本地检查完毕后,你需要将你的修改同步到你在github的远程fork仓库,然后再提交一个pull request请求主仓库合并你在fork仓库所做的修改。 首先,你需要验证你的身份,让github允许你的电脑向它提交push :::tip 提示 你可以使用github desktop或github cli来简化这个流程,不过我们想让你在这个过程中学习SSH的用法,如果你想方便一点,直接跳到“使用github-cli”。 ::: ### 选项1:使用SSH 首先,确保你安装了SSH,你可以看微软的这片文档:[链接](https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui)。 打开终端,输入 ```PowerShell ssh-keygen -t ed25519 ``` 然后在接下来的选项中检查密钥的存放路径,以及使用一个密码来加密这个密钥,我们建议你设置一个密码。 然后我们设置开机自动启动ssh-agent服务。 确保你使用了管理员权限运行了下面的PowerShell代码: ```PowerShell Get-Service ssh-agent | Set-Service -StartupType Automatic Start-Service ssh-agent Get-Service ssh-agent ``` 最后一个命令应该会返回`Running`状态。 然后,你就可以输入`ssh-add`来加载你的密钥。 ```PowerShell ssh-add 你的私钥位置 ``` :::tip 提示 每次重启电脑,你都要重新输入一遍`ssh-add`。 ::: :::info 信息 关于SSH的配置,参考了这片[微软文档](https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_keymanagement)。 ::: 接下来,我们配置github的SSH访问。 打开与私钥同目录下的公钥文件(以pub结尾),然后复制他,注意要全部复制,不要多出或减少任何内容。 点一下你的github头像,选择Settings,然后在侧边栏的Access板块找到SSH and GPG keys。 点击 `New SSH key`。 把密钥粘贴到下面,然后保存就行了。 在终端里输入 ```PowerShell ssh git@github.com ``` 如果返回的文本里出现了你的用户名,配置就大概成功了。 现在就可以输入`git push`了 ```PowerShell git push ``` 这个命令会向远端的仓库提交你在本地提交的commit,检查你的fork仓库,有没有更新到你本地的修改? :::info 信息 参考了github的文档:[Click Me ](https://docs.github.com/zh/authentication/connecting-to-github-with-ssh/about-ssh) ::: ### 选项2:使用github-cli 访问https://github.com/cli/cli/releases , 下载最新版本。 输入`gh`以检查安装的成功状况。 没问题的话,输入`gh auth login`,会弹出一个浏览器窗口,在弹出的窗口中完成登录。 然后,你应该就可以直接使用`git push`了,输入`git push`,然后查看你在github中的fork仓库,有没有更新到你本地的修改。 :::info 信息 这里有更多关于github cli 的信息:[Click Me ](https://docs.github.com/zh/github-cli/github-cli/about-github-cli) ::: ### 提交pull request 一个pull request 是一个请求,将修改建议发送给主仓库,并让主仓库合并这些修改。 打开主仓库,选择上面的Pull Requests,然后选择New Pull Request,如果没有出现你的fork仓库,点击compare accross forks。 然后就可以Create Pull Request了。 提交后,开发组成员会校对你的修改,将你的修改应用到主仓库中,这就是我们的开发流程了。 :::info wiki的分层更新模型 按照我们的设计,wiki的内容从新到旧,一共分为三个版本: - 最新的版本是大家在自己的电脑上运行的测试版网站,这个版本包含了最新的想法和更改,等待完善后推送到主仓库。 - 然后是我们的demo版本网站[zscdev-demo.pages.dev](zscdev-demo.pages.dev),这个版本立即反应了任何被合并进去主仓库master分支的更改,大家可以对这个网站上的内容随便提意见,任何修改都将很快被同步到网站里。 - 当主仓库和demo网站的更新积累到一定程度的数量时,开发组成员会根据一个版本作为wiki的正式版,正式推送到我们的网站[developer.zsxyww.com](developer.zsxyww.com)里,这个版本通常要比demo要落后几次更新,但是那些在施工中的文章,和还在讨论的段落等不稳定的内容将不会被同步到这里,换句话说,这个版本是“稳定版”。 我们从许多大型软件,例如firefox(nightly,stable,ESR),windows(canary,dev,LTSC),debian(unstable/testing/stable)的开发中,借鉴了这一模型,它可以确保最终正式的wiki是严谨的,可信赖的,同时将想法和讨论的场地从正式文档中分离开,确保了开发的有序进行. 这样的设计是考虑了这样的场景:有许多人同时参与wiki的开发,而不是一年不一定更新一回的随意开发,还是希望大家能多多参与到wiki的维护工作中来。。。 :::