Pourquoi un GOPROXY est-il important et leel choisir ?

标记:Ce博客一个été mis à jour pour illustrer laJFrog GoCenter.
À partir de la version 1.13 de Go, les modules Go sont le gestionnaire de paquets standard dans Golang, activé automatiquement à l 'installation avec un GOPROXY par défaut。
Mais avec ce GOPROXY ainsi que vos propres paquets de modules Go que vous devez conser à l 'abri des regards, quel type de configuration devez-vous choisir ?评论éviter que vos resources Golang publiques et privées ne deviennent un nconfinud enchevêtré ?
Voyons à quoi sert un GOPROXY et comment le configurer pour obtenir un système rapide, fiable et sûr。
Qu 'est-ce Qu 'un GOPROXY ?
Un GOPROXY contrôle la source de vos téléchargements de modules Go et peut aider à garantir des builds reproductibles et sécurisés。
倒développer en Golang avant l ' ère GOPROXY, les dépendances des模块étaient téléchargées direcmentdepuis leurs dépôts source dans des systèmes VCS告诉que GitHub, Bitbucket, Bazaar, Mercurial ou SVN。Les dépendances externes sont généralement téléchargées à partir de dépôts sources publics。Les dépendances privées doivent s ' authenticfier auprès du système VCS où elles sont stockées pour télécharger Les fichiers sources du module。

工作流程对照表été大型utilisé,工作程序répondait建设基础程序等双紧急情况développement déterministe et sécurisé: immuabilité et disponibilité。Les modules peuvent être effacés par l 'auteur ou Les versions peuvent être modifiées。我们在一起scénarios我们在一起considérés我们在一起fréquemment。
GOPROXY的使用
Le fait de configure un GOPROXY pour votre environment de développement ou de CI Golang rerige les requêtes de téléchargement de modules Go vers un dépôt en cache。
L 'utilisation d 'un GOPROXY pour les dépendances des module contribution à mettre en eure vre L 'exigence d 'immuabilité。En renvoyant le模块à partir du cache du GOPROXY, il fournit toujours le même code pour une version demandée, même si le模块a été modifié de manière inappropriée加上récemment dans le dépôt VCS。
Le cache du GOPROXY permet également de s ' sure que Le module est toujours disponble, même si 'original se trouvant dans Le dépôt VCS est détruit。
Il exist différentes façons d 'utiliser GOPROXY, en function de la source des dépendances des modules Go que vous prévoyez d 'utiliser。
GOPROXY公共
Un GOPROXY public est Un dépôt centralisé disponible pour les développeurs Golang à travers le monde。Il héberge des模块去开源的方式été mis à处置par des tiers dans des dépôts de projets VCS可访问的au公共。La plumpart,来吧proxy.golang.orgsont fournis gratuement à la communauté des développeurs Golang。

Pour utiliser un GOPROXY public, il suffit de configurer la variable d ' environment Golang avec son URL:
$ export GOPROXY=https://proxy.golang.org
Le paramètre ci-dessus redirige toutes les demandes de téléchargement de module vers Le dépôt de modules Go géré par l’équipe Golang。Les téléchargements à partir d 'un GOPROXY public peuvent être beaucoup + rapidesque ceeux effectués direcement à partir du VCS, enTéléchargeant UN fichier d 'archive de module.
En plus de faciliter les téléchargements, un GOPROXY public peut également fournir aux développeurs GoLang des information plus détaillées sur les modules qu 'il continent。L 'interface utilisateur depkg.go.dev计算模组和基本统计函数。
进入Privés
En général, les projets GoLang utilisent à la fois des dépendances de modules open source et privés。确定utilisateurs utilisurs la variable d ' environment GOPRIVATE pour spécifier une list de chemins qudoivent contourner GOPROXY et GOSUMDB et télécharger des modules privés direcmentdepuis ces dépôts VCS。以peut utiliser为例proxy.golang.org倒récupérer tous les模块开源需求的les模块privés proviennent uniquement des serurs de votre企业。

倒utiliser ce GOPROXY公共avec des模块privés, il faut définir les变量d '环境Golang:
$ export GOPROXY=https://proxy.golang.org,direct $ export GOPRIVATE=*.internal.mycompany.com
Cette利用de GOPRIVATE garantit également que l 'utilisation de ces模块privés n 'est pas«divulguée»par le biais de requêtes adressées à un server public GOPROXY et de base de données de checksum sur un réseau ouvert。Une autre替代包含à utiliser la变量GONOSUMDB qui包括des références à des模块去privés。Bien que cette配置permette au client Go de résoudre les dépendances des modules publics et privés, elle n 'applique pas les exigences d 'immuabilité ou de disponibilité pour les modules privés。
GOPROXY致敬
Un GOPROXY privé permet de stocker des modules Go publics et privés sur votre propre infrastructure。
Les modules publics sont mis en cache localement par l 'intermédiaire d’un GOPROXY public dans un gestionnaire de dépôts de binaires comme JFrog Artifactory。Les模块privés sont également mis en cache dans un dépôt à partir de leurs dépôts VCS。De cette façon, l 'immuabilité et la disponibilité peuvent être garanties pour les modules Go publics et privés。
丹斯Artifactory, une组合d 'un dépôt遥远的倒proxy.golang.org, un dépôt de模块去遥远的qui pointe vers des dépôts GitHub privés(倒les模块privés) et un dépôt de模块去本地peuvent être combinés en un seul dépôt virtuel, auquel on accède comme une seule entité。

倒définir votre GOPROXY倒un dépôt虚拟nommé«go»丹斯Artifactory:
$ export GOPROXY="https://:@my.artifactory. "server/artifactory/api/go/go $ export GONOSUMDB="github.com/mycompany/*,github.com/mypersonal/*»
Puisque les modules de vos dépôts VCS privés n 'auront pas d 'entrées dans la base de données publique des checksum à l 'adressesum.golang.org, ils doivent être exclus de cette vérification par le client go。Vous pouvez y parvenir en définissant GONOSUMDB dans vos dépôts VCS privés, ce qui empêcher évitera que vos commands去Pour ces模块privés n ' échouent en reason d ' une非一致性des校验和。
Dans cette配置,vous vous assured qu 'aucune de vos références aux modules privés n 'est«divulguée»,tout en appliquant l 'immuabilité et la disponibilité des modules publics et privés。
Couper les nouluds
Comme vous pouvez le constater, l 'utilisation d 'un GOPROXY privé offre davantage de sure, de fiabilité et de sécurité。
La proximité réseau de votre GOPROXY privé avec vos outils de build peut également accélérer La résolution des dépendances des模块。JFrog Artifactory peut être installé là où vous en avez le plus besoin:在云的基础上,在云的三个主体上建立联系。
Ces优势ne se有限pas non + à la communauté des développeurs Go。La plupart des企业技术实用+ d 'un语言和产品包装。举例来说,si le code est écrit en Golang, npm peut être utilisé pour l 'interface utilisateur, Docker peut être utilisé pour distribuer des bits et Helm peut être utilisé pour déployer des applications sur K8s。
Avec la prise en charge de plus de 27种包装,Artifactory peut favoriser un process de développement logiciel déterministe, stable et sécurisé pour toutes les applications。我们的提议,我们的权利,我们的权利découvrir评论,人工,我们的权利,我们的方向,我们的自由,循环,逻辑。