Get Go模块帮助与我们的社区支持日

更新:从2021年5月1日起,GoCenter中央存储库已经过期,所有功能将被弃用。有关中心日落的更多信息请阅读弃用博客
今天成为Golang开发人员的一个令人兴奋的事情是强大的社区支持在谷歌开发的语言的发展。Golang的创始人很早就愿意让工程师参与进来,以社区为中心的方法现在已经成为Go本身的一项资产。今天,世界各地的工程师继续贡献开源包、模块和框架,并不断帮助评论新想法,共同解决Go朝着2.0路线图前进的问题。JFrog社区工程团队在这一发展过程中发挥了一定作用,今天,我们将重点介绍那些从社区开始就为社区做出贡献的工程师GoCenter2019年1月。让我们来听听他们的故事:
Ankush -开发经理,社区工程@ JFrog解释了为什么你应该使用GoProxy
“GoCenter背后的动机是通过帮助开发者采用Golang来改善Golang生态系统去模块成功地提供丰富的元数据,允许开发人员做出决策。社区白班制让我们能够将这一愿景发扬光大。在轮班期间,我们观察到失败通知,它提供关于模块未被成功创建或服务的早期信号。这可能有多种原因;一个是缺少需求,例如不正确的模块名称等。我们使用Stack Overflow、社交媒体、各种Slack渠道和VCS系统来了解问题的背景。然后,我们可以通过与用户互动,帮助他们提交拉请求来解决问题。
“例如,几个月前,我在Kubernetes的Slack频道上发现其中一个软件包,Apache节俭没有提供给社区。我在谷歌上搜索了一下Apache Thrift,发现很多项目都失败了,因为他们没有使用GoProxy.当我在GoCenter上查看时,我注意到我们在那里有它。一旦我发现了这个问题,我帮助传播了这一意识,并解释了这正是为什么开发者应该使用GoProxy这保证了可用性和不可变性。在GoCenter上,我们存储了每个模块的每个版本,所以它总是可用的。在这之后,我花了更多的时间来寻找解决方案,以及如何帮助社区。在此过程中,我还意识到他们更改了模块的名称,从而帮助社区理解迁移到新版本的模块也将解决名称问题。”
高级软件工程师Elio解释伪版本问题
“我们在社区支持日的主要目标是确保GoCenter上的模块正常工作,尽我们所能为社区服务。我们不希望人们错过应该可用的Go模块内容;例如,如果他们拿不到,我们就积极地与他们合作,找出原因。我们监控系统以确保它是健康的,我们观察所有的事件,我们确保基于我们的安全和健康检查,我们可以有一个意见来解决不健康的模块。当我们发现某些东西丢失或可能存在延迟问题时,我们会修复这些问题。当我们发现由于某个模块的作者可能在他们这边造成了一个问题而导致某些东西不可用时,我们会与他们沟通,并与他们一起解决这个问题,这样人们就可以将这些模块作为依赖项使用。
“在Slack上的一个例子中,一位用户报告了我们如何处理GoCenter上的伪版本的问题。我们与用户一起描述了最佳和期望的用户体验,并能够在同一天解决问题。这就是我们引入伪版本修复特性的时候。我们让他们很容易,所以他们不需要去他们的mod文件,并在那里进行修复。我们刚刚出版了JFrog博客我为此写了一篇文章Dev.to上的伪版本问题.”
Mitali -软件工程师谈论安全缓解
“最近,我们增加了免费的安全扫描将模块转到GoCenter从那以后,我一直在为社区减轻安全问题。从我们的漏洞数据库中,我一直在GitHub上发出拉请求,让社区知道某个项目在CVE公共数据库中出现了一个问题。我的任务是跟踪安全问题是否得到解决,或者该模块版本中是否仍然存在问题。我还会查看依赖项列表,以确定在他们选择在特定项目中使用的模块之后,是否存在该模块的安全版本。在很多情况下,我可以建议模块作者使用哪个版本是最新的和最安全的。”
软件工程师Mahesh解释了Artifactory如何使用GoCenter作为GoProxy
“我帮助解决的大多数问题都与Artifactory和如何设置远程回购有关。去年,一个开发团队在Artifactory中创建了一些本地Go存储库,并将其用作他们的端点,但这对他们来说并不适用,因为Artifactory中的文档解释说,您首先需要创建一个虚拟回购,然后将本地回购添加到虚拟回购之下。在此之后,使用虚拟端点作为实际端点。一旦这一点得到了解释和理解,我便能够带领开发团队进行设置;我们帮助他们理解GoCenter作为GoProxy是如何工作的,以及环境变量在Artifactory中的位置。”
Shivaram -高级软件工程师谈论如何帮助团队迁移到Go模块
“我感到自豪的一件事是能够帮助我们的社区将Go项目迁移到使用Go 1.13版本的Go模块。将现有项目转换为使用Go模块可能是非常具有挑战性的,特别是如果该项目是通过Golang在包管理解决方案方面的许多早期尝试发展而来的。ETCD.io一个这样的项目是否也带来了其他复杂的挑战,因为它使用了代码生成器,比如protobufgolang静态分析工具不支持模块,构建中的各种类型的测试,包括单元测试、功能测试、集成测试和端到端测试,这些都必须修改才能与模块一起工作。我确保所有测试都通过了,提交有544个文件。这是GitHub上最大的一次提交,也是我个人最喜欢的时刻。”
在Go模块上与社区合作
正如上面的故事所强调的,随着Go中的依赖管理的发展,JFrog社区工程团队已经帮助解决了许多问题,并且能够直接帮助开发人员更好地理解如何开发他们的Go模块,处理依赖问题,理解伪版本,并降低安全风险。
“我喜欢社区支持的白班,这让我们作为GoCenter的用户了解到可能出现的问题。这些变化甚至帮助我们理解防止这些错误的最佳实践,这帮助我们理解Go社区是如何经历Go模块故障的,以及我们如何更好地解决这些问题。”- - -斯坦利
为了了解我们如何支持Golang的进化,我们邀请您参与进来!你可以评论我们的GitHub的问题或直接与我们的工程师之一通过加入我们的GoCenter松弛的通道。
我们是谁
![]() |
Ankush -社区工程开发经理 我的目标是确定和解决大型开发人员社区所面临的问题,并确保我的团队所产生的解决方案是高质量的。我喜欢创业的节奏。我最喜欢的突破是当我能够证明由于索引文件的设计,Helm并不能扩展超过10万张图表时——从那天起,我便完全投入到社区中。 |
![]() |
Arvind -高级软件工程师 在加入JFrog之前,我为联邦政府工作。真正驱使我去JFrog的是社区方面——为其他开发人员解决痛点。在JFrog,我负责为所有的中央存储库和我们构建的其他社区产品构建UI层。hth华体会最新官方网站 |
![]() |
Mitali -社区软件工程师 在JFrog之前,我在思科与Artifactory合作。我非常喜欢Artifactory的产品,并注意到JFrog有一个软件工程师的空缺,为GoCenter开发新功能。我还注意到这个角色与通常的软件开发人员角色有点不同,我被在社区团队工作的想法所吸引。 |
![]() |
Elio -高级软件开发人员 过去10年,我一直在巴西为大公司、电信公司、小型初创公司和银行担任工程师。在JFrog,我设计了体系结构并构建了我们的中央存储库,以支持负载的不可预测性。 |
![]() |
斯坦利-技术解决方案开发人员 我职业生涯的大部分时间都在从事软件开发管理。我对QA和DevOps有着强烈的热情,这让我渴望帮助开发人员构建和支持工具,以实现更快的发布。在JFrog,我解决bug,开发测试自动化,提供发行版中问题的状态,并对发行版的质量负责。 |
![]() |
Shivaram- - - - - -高级解决方案开发人员 我加入JFrog时是一名高级解决方案开发人员,最初是为合作伙伴团队做贡献,但很快就成为中心开发的核心贡献者。我喜欢接触新产品!hth华体会最新官方网站在JFrog,我们总是致力于新产品,并在现场学习所有我们不知道的hth华体会最新官方网站东西。我喜欢在Golang和ElasticSearch和Kubernetes的微服务器上工作。 |
![]() |
马赫什- - - - - -老的解决方案工程师 当我加入JFrog担任高级解决方案工程师时,我最初的工作是使用我们支持的模板,如Azure、Artifactory、AWS和OpenShift。我目前正致力于流水线工作的自动化——如何将代码部署到集群中。我未来的目标是将我们所有的解决方案与JFrog管道产品和支持新功能,特别是来自GoCenter。 |
![]() |
裂缝,高级解决方案工程师 在JFrog之前,我在Kubernetes工作,在那里我与人共同创立了Helm。在过去的15年里,我一直担任高级工程职位,主要是管理团队或做DevOps、CI/CD自动化、监督项目,以及在K8和Helm领域构建产品。hth华体会最新官方网站如今,我的工作涉及监控、警报、日志记录,并利用原生云计算使我们的工作更容易。我喜欢在支持开源项目的社区工程团队中工作。 |









