5最佳实践 r GoLang-CI/CD

基于Java、JavaScript和Python编程,基于Art和wise的持续集成和持续交付工作流(CI/CD)的优化ArtifactoryAufzubauen, ziemlich vertraut。[1] [0] [0] [0] [0] [0] [0]Container-Lösungen威·多克两步走路线图。

阿贝尔·韦伯斯特(aberwie schwerist)在《高朗计划》(GoLang program)中提到,CI/CD mit der gleichen Effizienz zu between ?

她说:“我认为这是一种创造性的语言,是一种创造性的语言。”麻省理工学院祖国学教授:祖国学教授:高朗第1条:在第2条中,第1条为第2条。

Mit den neesten Innovationen in Go, Mit der nativen unterstentung von Artifactory, Mit der Weg zu inwandier CI/CD viel klarer。点击我的推特

最佳实践

Wir bei JFrog sgro ße fan von GoLang und verwenden es als Sprache f r mehrere unserer renommiertesten Lösungen。和wir praktizien一样,是wir propagien、indem wir Artifactory和herzst unserer CI/CD einsetzen。他的新发明是在Praktiken, die wiwilen können:

1.Go-Module verwenden

在此基础上,建立了一个新的程序,并在此基础上建立了一个新的版本,在此基础上建立了一个新的机制,并在此基础上建立了一个新的版本,在此基础上建立了一个新的版本。Stattdessen hatte das Go-Team andere Entwickler aufgefordert, Zusatz-Tools fzr die Versionierung von Go-Paketen zu entwickeln。

Das änderte sich mit der Veröffentlichung von Go 1.11 im August 2018, da ab diesem ZeitpunktGo-Moduleunterstutzt了。Go-Module sind Sammlungen von zusammengehörigen Go-Paketen, die als eine Einheit versionert werden, und bilden nun die native Lösung zur Verwaltung von Abhängigkeiten f r GoLang。Dies ermöglicht es Entwicklern, Code gemeinsam zu nutzen, ohne ihn wiederholt herunterzuladen。

in go - module wind - durchinego.mod-项目定义器,模块定义器,模块定义器,模块定义器,模块定义器,模块定义器。模具Modulabhängigkeit wind durch模块名和Versionsnummerangegeben。

摘要/ references: Wenn sigo - module noch night bernommen haben, msssen sidie folgenden Schritte ausfren:

  1. Verwenden您mod init嗯,好吧go.mod- - - - - - - - - - - - - - - - - - - - - - - - - -
  2. Verwenden您Go mod tidy整洁韦文德沃登(verwendet wurden)的经理。这似乎是贝菲尔德和他的同事们共同努力的结果。mod-Datei erzeugt。
  3. wenes ß ß ich um Version v2 und höher handelt, dannist die Änderung des Modulnamens erforderlich, um das entsprechende Suffix hinzuzuf, Aktualisierungen des Importpfads, die Verwendung von modulorientierten statischen Analysetools and schließlich die Aktualisierung von Codegenerator-Dateien wizum Beispiel.proto-Dateien, um den neuen Importpfad wiederzugeben。

她的名字叫zum Beispiel einego.mod-Datei f r ein öffentlich verf garesgo - module f_r einen strukturierten Logger

模块github.com/sirupsen/logrus require (github.com/davecgh/go-spew v1.1.1 // indirect github.com/konsorten/go-windows-terminal-sequences v1.0.1 github.com/pmezard/go-difflib v1.0.0 // indirect github.com/stretchr/objx v0.1.1 // indirect github.com/stretchr/testify v1.2.2 golang.org/x/sys v0.0.0-20190422165155-953cdadca894)

比奇顿小姐,我的朋友,我的朋友Semver-Konventionentsprechen m ssen (z. B. v1.2.1 anstelle von 20190812 oder 1.2.1) gemäß go-Befehl。@ solsolten es vermeiden, Pseudo-Versionen wie die been gezeigt (v0.0.0- yyyymmddhmss -abcdefabcdef) @ verwenden - obwohl Pseudo-Versionen mitcommittehashingefhrt wurden, @ Go-Module-Support fgr - nicht markierte Projekte zu ermöglichen, @ solsolten es vermeidus verwendet werden。模具Abhängigkeiten,模具benötigen, Release-Tags haben, verwenden - Sie -Tags in iren required - anweisungen。

在irem特征码können Sie dieses go - module zusammen mit anderen Abhängigkeiten importieren:

import ("fmt" "io/ioutil" "net/http" "os" // Öffentliches go - module f r das日志"github.com/sirupsen/logrus")

[endnoteref: 1] [endnoteref: 1] [endnoteref: 1] [endnoteref: 1] [endnoteref: 1]

// Text zum日志发送日志。Printf (" Hello日志!”)

2.Verwenden Sie GOPROXY, um die Unveränderlichkeit and verf gbarkeit sicherzustellen

Sobald Sie Ihre GoLang-Abhängigkeiten als versionerte Module pflegen, können Sie Ihre unveränderliche Instanzen behalten, indem Sie eine GOPROXY einrichten。audiese Weise können Sie immer garantien,是eine的最优版本eines modules enthält, sodre Builds immer widerholbar。

Werden Sie Go-Module verwenden, die öffentlich verf gbare Open Source-Pakete sind?亲爱的,亲爱的,我爱你,我爱你,我爱你。Module, die Sie nur f r Ihr Team private vorhalten?Hier finden Sie Möglichkeiten, wie Sie schrittweise vorgehen oder alles auf - mal machen können und schherstellen, ass diese unveränderten versionerten Module immer fre build verf gbar sind。

GOLANG。ORG

Das Go-Team bei谷歌unterhält einen Satz von GOPROXY-Diensten f r öffentlich verf模块。Ab Go 1.13 wind der Modulspiegelproxy.golang.org自动完成标准的goproxy功能,当Go安装时,可以自动完成。diener Dienst wch ch duch einen Indexdienst zum Auffinden neer Module unterst tzt (index.golang.org)(所以说,这是一个全球性的问题。中国进出口银行(深圳)有限公司sum.golang.org)。

go.dev-网站由Go- team gepflegt和list der Hub fgr Go- benutzer, der zentralisierte和kuratierte resourcen和dem gesamten Go-Ökosystem bereitstellt提供。Auf dieser网站können Siepkg.go.dev在Tausenden von Open-Source-Go-Paketen 下,berine bedienungsfreundliche Benutzeroberfläche suchen。

Artifactory Go-Registries

1 .当一个人的生命周期为1小时,他的生命周期为1小时,他的生命周期为1小时,他的生命周期为1小时。麻省理工学院人工工厂können我们的工厂也在外部Go-Registrieseinrichten, sodass öffentliche und private Module gleichermaßen f r Ihre Builds verfgbar sind。

Sie können den Go-Spiegeldienst als Proxy fendine external go - registererung in Artifactory verwenden, um Ihrem Build-System einen lokalen Cache zur verfgung zu stelen。dedeer beschleunigt Ihre Builds und trägt zum Schutz vor Ausfällen der netzwerkverindung bei。Das Einrichten ist einfach。

人工智能注册中心

Sie können auch eine oder mehrere lokale go - registererungen fr Module konfigureeren, die Sie innerhalb irer Organisation privlegen msssen。

在einem的本地和外部注册表virtuellen库kombinieren, können Ihre Builds Go-Modulabhängigkeiten auflösen, die sowohl von einer öffentlichen Quelle stammen als auch von Modulen, die Sie privat erstellen and pflegen。

Mehr darber, weih . weih .人工资源库配置的GOPROXY, weih . weih . weih . blog . itrag为Go-Module提供GOPROXY

3.Artifactory-Repository-Layouts verwenden

我不知道,当我在这里的时候去建立), die erzeugten binären Artefakte gespeichert?Build-Prozess kann disese Zwischenergebnisse and Repositories in einem Binärdatei-Repository-Manager wie Artifactory bergeben。

[中文]:[中文]:[中文]:[3]智能结构与生产系统集成集成系统集成系统集成系统集成系统集成系统集成系统集成系统集成系统集成系统集成系统集成系统集成系统集成系统集成系统。我爱你,我爱你,我爱你benutzerdefinierte Repository-Layout-Funktionvon Artifactory mit generischen知识库。

Erstellen Sie ein benutzerdefiniertes Layout, as ähnlich wie das folgende aussieht:

[机构]/[名称< + >]。/(模块)-[拱< + >]。[baseRev]。[ext]

您要是布局配置,熔融模具Artefakt-Pfadauflösung testen, um zu bestätigen,人工模具的模组信息是根据布局定义的Verwendung进行的。

4.动物庇护所和动物庇护所

当我们使用Ihre repository(存储库)或Ihre go - build(构建库)时,我们使用的是高效的数据库,können我们使用的是高效的数据库,Ihre Pipeline-Stufen(管道- stufen)之间。

Viele Software-Entwicklungsverfahren erfordern bei jedem Staging-Übergang von Entwicklung, Test and production einen vollständig der teilweise neen Build。aberda die Entwickler den gemeinsam genutzten Code immer wider ändern,带来新的构建新的ungewisheiten mitich;她können晚上睡得很好,我很激动。[1] [1] [2] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [2] [1] [2]

Erstellen Sie stattdessen Ihre go - baserten微服务终端和befördern Sie Sie dann auf die nächste Stufe, sobald Beförderungskriterien wie Tests order Scans erf。Wenn Sie planen, Ihren Go-Microservice - container - isieren, gilt das gleiche . Prinzip: Jedes Docker-Image - emateren和berine Reihe - stagingrepositories - heraufzustufen。Auf diese Weise können Sie garantien, dass das,是getestet wurde, genau das ist,是fgr die production freigegeben wind。

建立促销

5.Vermeiden Sie单片管道

Anstelle einer einzigen,单管式管道管道系统 (r)应用程序ist - es besser, mehrere zu haben, wobei jede eine andere Schicht erstellt, test, preft und heraufstut。Dadurch können Sie Ihren CI/CD-Prozess flexibler gestalten,这是由unterschiedliche Teams fre jede Schicht verantwortrich创建的。Außerdem wind ein ein "Fail Fast"-System gefördert, das hilft, Fehler fr hzetig zu erkennen。

Beispielsweise kann die Bereitstellung einer containerisierten Anwendung ausf - nf pipes Beispielsweise当时在der Regel der Fall list:

  1. Erstellen Sie die Go-Anwendung mit der JFrog CLI。Diese Pipeline ziieden Quellcode, erstellt die Anwendung mit Artifactory- repositories f Abhängigkeiten和Ausgabe-Binärdateien,测试和东西在Artifactory- herauf中的Dev-Repository和einem Staging-Repository。
  2. Erstellen sieine Basisschicht der containerintererapp, z. B. in Docker-Framework。jnach den visiko - und Upgrade-Richtlinien des unternehens können statische oderdynamictag verwendet werden。wenzum Beispiel在动力学中的应用高山:3.10也就是Docker-Frameworks的补丁更新,也就是Docker-Frameworks的补丁更新。管道非快速模具阶段测试,测试和分析。
  3. Rufen Sie die heraufgestuften Artefakte ab, die von von vorherigen Pipelines erzeugt wurden, and dersteine containerisierte App, der der derbenfalls die Phasen Erstellung, Test, Scan and Heraufstufen gehören。
  4. Erstellen Sie在Helm-Chart例如,自动统计集、自动统计集、自动统计集、自动统计集、自动统计集、自动统计集、自动统计集、自动统计集、自动统计集。
  5. 在Kubernetes版本中,steellen Sie die containerisiergo - app的helm - diagram。

人工真菌也“Quelle der Wahrheit”f r Ihre Go-Builds and bietet eine GOPROXY f r öffentliche and private Module sowie die Speicherung kompilierter Binärdateien。Die Verwendung der JFrog CLI zur Erstellung Ihrer Go-App hilft dem Build-Prozess, mit Artifactory zu interagieren and Die Build-Informationen zu erfassen, Die ire Builds vollständig nachvollziehbar machen。下面是beispiel代码片段:

//配置Artifactory jfrog rt c //配置项目的存储库jfrog rt go-config //使用go构建项目并从Artifactory解决项目依赖关系。jfrog rt go build——build-name=my-build——build-number=1 //将我们构建的包发布到Artifactoryjfrog rt gp go v1.0.0——build-name=my-build——build-number=1 //收集环境变量并将它们添加到构建信息中。jfrog rt bce my-build 1 //发布构建信息到Artifactory。Jfrog rt - my-build 1

Um mehr darber zu erfahren, werfen Sie einen Blick auf unsereBeispiel-Demo-Dateien r GoLang CI/CD我想我的朋友们都很高兴。

去吧,依法赫

在此基础上,können einige einfache Best Practices beder Verwaltung Ihrer GoLang-Anwendungen den wegzu effective CI/CD erleichteren。人工智能管理软件-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能-人工智能。

还有问吗?这是我在Gophercon写的一篇文章。Tauchen Sie mit ununein, um die besten Möglichkeiten zu erkunden, wie Sie Ihre Go-Anwendungen schnell und höchster Qualität veröffentlichen können。请können在每一个死亡之前kostenlose测试,von Artifactorynutzen, um die Möglichkeiten in der Praxis umzusetzen!