Files
athens/docs/content/install/_index.zh.md
Wang Qilin ace301e4ec Add chinese translation of install section (#1444)
* add index translation of install section

* add translation of build-from-source

* add chinese translation of install-on-aci.md

* add chinese translation of intall-on-kubernetes

* add zh translation of managing-private-repos

* fix some typos
2019-10-30 17:47:01 +01:00

3.3 KiB
Executable File
Raw Blame History

title, date, weight
title date weight
安装 Athens 2018-09-20T15:38:01-07:00 2

Go的生态系统一直是联合的完全开放的。任何拥有GitHub或GitLab或任何其他支持的VCS帐户的人都可以轻松地通过git push或类似命令来提供库服务。 无需创建额外的帐户或设置凭据。

一个联合的生态系统

我们认为Athens应该保持社区的联合与开放并且用户在构建应用程序和库时无需更改工作流。 因此为确保社区能够保持联合与开放我们已为每个人提供了轻松安装Athens的方式以便

-任何人都可以运行自己的全功能镜像,无论是公共镜像还是私有镜像 -任何组织都可以运行自己的私有镜像,这样他们就可以像管理公共代码一样管理自己的私有代码

不变性

如您所知,go getgo mod download 命令将直接从GitHub等版本控制系统中获取软件包。 这个方式对于软件包开发人员和相关应用程序都非常好,但是与此同时,我们长期以来一直遇到一个基本问题。即,版本控制系统中的代码即使在提交之后也可以随时更改。例如,包开发人员可以运行"git push -f"并覆盖项目中依赖的提交或标记。在这些情况下,您经常会看到校验和验证错误,相关例子可参见这里

Athens通过将代码存储在其自己的不可变数据库中 来防止这些问题的发生。下面是当你运行go get时,发生的交互情况:

  1. go get向Athens请求一个模块
  2. Athens接受请求并开始搜寻该模块
  3. 首先在后端存储中查找如果找到了这个模块Athens将立即返回1中发出请求的go get 客户端
  4. 如果找不到这个模块则从版本控制系统中获取模块保存在后端存储中然后返回到1中的客户端

一旦将模块保存到存储中Athens就不会更改任何内容因此Athens具有以下两个重要属性

  • 对某个模块的一个版本Athens永远只调用 go mod download 一次 。换句话说对于任何给定的模块和版本Athens只会执行步骤4一次。
  • Athens处理存储的策略为仅追加因此一旦模块被保存它就永远不会改变即使开发人员在GitHub上对其进行了更改

发布规则

我们遵循semver语义化版本号。 同时我们的Docker镜像打上了下列标签以表示镜像的稳定性:

  • latest = 最新的稳定版本
  • canary = mater分支最新构建出的版本

我们强烈建议您使用带标签的发行版镜像,例如 gomods/athens:v0.3.0, 而不是使用latest或canary标签的镜像。

拓展资源

为了确保易于安装我们尝试提供尽可能多的方式来安装和运行Athens: