Golang private modules conf: meta tags, git+ssh, nginx: Difference between revisions
From wikinotes
No edit summary |
|||
Line 3: | Line 3: | ||
by setting dynamic html meta tags using nginx. | by setting dynamic html meta tags using nginx. | ||
= | = Setup = | ||
<blockquote> | <blockquote> | ||
== Add Private URL == | |||
</blockquote><!-- Setup --> | |||
== Workstation == | |||
<blockquote> | |||
=== Add Private URL === | |||
<blockquote> | <blockquote> | ||
First, add the target URL to your <code>$GOPRIVATE</code> environment variable using one of the following methods: | First, add the target URL to your <code>$GOPRIVATE</code> environment variable using one of the following methods: | ||
Line 16: | Line 20: | ||
</blockquote><!-- Add Private URL --> | </blockquote><!-- Add Private URL --> | ||
== Create Repo == | === Create Repo === | ||
<blockquote> | <blockquote> | ||
<syntaxhighlight lang="go"> | <syntaxhighlight lang="go"> | ||
Line 42: | Line 46: | ||
</blockquote><!-- Workstation --> | </blockquote><!-- Workstation --> | ||
= WebServer = | == WebServer == | ||
<blockquote> | <blockquote> | ||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
Line 73: | Line 77: | ||
</blockquote><!-- WebServer --> | </blockquote><!-- WebServer --> | ||
= Package Consumers = | == Package Consumers == | ||
<blockquote> | <blockquote> | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> |
Revision as of 22:07, 19 June 2022
This configuration abstracts golang module path,
to provide access to private go modules over git+ssh,
by setting dynamic html meta tags using nginx.
Setup
Workstation
Add Private URL
First, add the target URL to your
$GOPRIVATE
environment variable using one of the following methods:# ~/.config/go/env GOPRIVATE="example.com/x/*"Create Repo
// main.go package main import "fmt" func main() { fmt.Println("hello") }// go.mod module example.com/x/hello go 1.18git commit -m 'init' git push
WebServer
# /usr/local/etc/nginx/nginx.conf http { location / { root /usr/local/www/example.com; index index.html; } location ~ ^/x/(?<go_project>[^/]+)$ { root /usr/local/www/example.com; rewrite ^ /gopkg.html; sub_filter '{TARGET_PROJECT}' '$go_project' sub_filter_once off; } }<!-- /usr/local/www/example.com/gopkg.html --> <html> <head> <meta name="go-import" content="example.com/x/{TARGET_PROJECT} git git+ssh://foo:/repos/{TARGET_PROJECT}"> </head> </html>
Package Consumers
# ~/.ssh/config Host foo Hostname example.com IdentityFile ~/.ssh/user User usergo install example.com/x/hello