9e3716b8d8
Add golang-dev as the Autocert notification email so Let's Encrypt can send us emails. golang-dev is not an ideal choice, but we need something publicly accessible and there isn't an obvious better option. My understanding is we should expect essentially no emails so I don't want to worry too much about it. Updates golang/go#47108. Change-Id: I22951984e0d48a59787d110b9cef32cbe3d9bc4a Reviewed-on: https://go-review.googlesource.com/c/build/+/334532 Trust: Heschi Kreinick <heschi@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> |
||
---|---|---|
.. | ||
vcweb | ||
README.md | ||
rebuild-server.sh | ||
rebuild-systemd.sh | ||
redeploy-vcweb.sh | ||
vcweb-http.socket | ||
vcweb-https.socket | ||
vcweb.service |
README.md
vcs-test
We run a version control server for testing at vcs-test.golang.org
.
Machine initialization
The machine should just run. You should not need these instructions very often.
In particular you do not need them just to make a change to vcweb
.
Skip ahead to the next section.
The VM runs in the builder project “symbolic-datum-552” in zone us-central1-a
,
where it has a reserved static IP address named vcs-test
.
To destroy the current VM (if any) and rebuild a fresh one in its place, run:
./rebuild-server.sh && ./rebuild-systemd.sh && ./redeploy-vcweb.sh
You should not need to do this unless you have changed rebuild-server.sh and want to test it.
To delete the VM's current systemd configuration for vcweb
and upload the configuration
from the local directory (specifically, vcweb.service
and vcweb*.socket
), run:
./rebuild-systemd.sh && ./redeploy-vcweb.sh
You should not need to do this unless you have changed the systemd configuration files.
vcweb
The Go program that runs the actual server is in the subdirectory vcweb
.
For local development:
go build -o vcweb.exe ./vcweb && ./vcweb.exe
It maintains files in /tmp/vcweb
and serves localhost:8088.
Once you are happy with local testing, deploy to the VM by running ./redeploy-vcweb.sh
.
Repositories
The server can serve Bazaar, Fossil, Git, Mercurial, and Subversion repositories.
The root of each repository is http://vcs-test.golang.org/VCS/REPONAME
,
where VCS
is the version control system's command name (bzr
for Bazaar, and so on),
and REPONAME
is the repository name.
To serve a particular repository, the server downloads
gs://vcs-test/VCS/REPONAME.zip
from Google Cloud Storage and unzips it
into an empty directory.
The result should be a valid repository directory for the given version control system.
If the needed format of the zip file is unclear, download and inspect gs://vcs-test/VCS/hello.zip
from https://vcs-test.storage.googleapis.com/VCS/hello.zip
.
Stale data may be served for up to five minutes after a zip file is updated in the
Google Cloud Storage bucket. To force a rescan of Google Cloud Storage,
fetch http://vcs-test.golang.org/VCS/REPONAME?vcweb-force-reload=1
.
Static files
The URL space http://vcs-test.golang.org/go/NAME
is served by static files,
fetched from gs://vcs-test/go/NAME.zip
.
The main use for static files is to write redirect HTML.
See gs://vcs-test/go/hello.zip
for examples.
Note that because the server uses http.DetectContentType
to deduce
the content type from file data, it is not necessary to
name HTML files with a .html
suffix.
HTTPS
The server fetches an HTTPS certificate on demand from Let's Encrypt,
using golang.org/x/crypto/acme/autocert
.
It caches the certificates in gs://vcs-test-autocert
using
golang.org/x/build/autocertcache
.