惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
T
Threat Research - Cisco Blogs
小众软件
小众软件
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tailwind CSS Blog
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
博客园 - 【当耐特】
C
Cybersecurity and Infrastructure Security Agency CISA
Hugging Face - Blog
Hugging Face - Blog
The Cloudflare Blog
The Last Watchdog
The Last Watchdog
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
S
Secure Thoughts
O
OpenAI News
P
Proofpoint News Feed
S
SegmentFault 最新的问题
Forbes - Security
Forbes - Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
宝玉的分享
宝玉的分享
Scott Helme
Scott Helme
T
Tenable Blog
A
Arctic Wolf
L
LINUX DO - 热门话题
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V
Visual Studio Blog
Hacker News: Ask HN
Hacker News: Ask HN
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
博客园 - Franky
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
博客园_首页
雷峰网
雷峰网
IT之家
IT之家
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
H
Heimdal Security Blog

Intro on Athens

Configuring Athens - Athens Introduction to Athens - Athens The Design of Athens - Athens Contributing to Athens - Athens Try it out! - Athens Walkthrough - Athens FAQ - Athens
Installing Athens - Athens
2018-09-21 · via Intro on Athens

The Go ecosystem has always been federated and completely open. Anyone with a GitHub or GitLab (or any other supported VCS) account can effortlessly provide a library with just a git push (or similar). No extra accounts to create or credentials to set up.

A Federated Ecosystem

We feel that Athens should keep the community federated and open, and nobody should have to change their workflow when they’re building apps and libraries. So, to make sure the community can stay federated and open, we’ve made it easy to install Athens for everyone so that:

  • Anyone can run their own full-featured mirror, public or private
  • Any organization can run their own private mirror, so they can manage their private code just as they would their public code

Immutability

As you know, go get and go mod download will fetch packages directly from version control systems like GitHub. This system has been mostly great for both package developers and the dependent apps, but at the same we’ve suffered from a fundamental problem for a long time.

Code in version control systems can always change even after it’s been committed. For example, a package developer can run git push -f and overwrite a commit or tag that you depend on in your project. In these cases, you’ll often see checksum verification errors (for example, see here).

Athens prevents these issues by storing code in its own, immutable database. Here’s what happens when you run go get:

  1. go get requests a module from Athens
  2. Athens accepts the request and begins looking for the module
  3. First, it looks in its storage. If it finds the module, Athens immediately sends it back to the go get client from (1)
  4. If it doesn’t find the module, it fetches the module from the version control system, saves in storage, and returns to the client from (1)

Athens never changes anything once it saves a module to storage, so the system has the following two important properties:

  • Athens will only ever call go mod download once per module version. In other words, Athens will only hit step (4) once for any given module & version
  • Athens treats storage as append-only, so once a module is saved, it never changes, even if a developer changes it in GitHub

Release Scheme

We follow semver. Our Docker images are tagged to indicate stability:

  • latest = the most recent stable release
  • canary = the most recent build of master

We strongly recommend using a tagged release, e.g. gomods/athens:v0.3.0, instead of the latest or canary tags.

Where to Go from Here

To make sure it’s easy to install, we try to provide as many ways as possible to install and run Athens: