I just use go install ./...
It then puts the two binaries in ~/go/bin/
.
The following is just for devving on Certbot:
I then in certbot-ci/certbot_integration_tests/utils/pebble_artifacts.py
I change:
asset_path = os.path.join(ASSETS_PATH, '{0}_{1}_{2}'.format(asset, PEBBLE_VERSION, suffix))
To:
asset_path = f"/home/osiris/go/bin/{asset}"
Works nicely for me 
Also interesting might be the following script I use when I'm doing a little bit more tinkering on Pebble. I just run the following once at the beginning of a dev-session:
export GOPATH=/home/osiris/pebble/
alias buildpebble='go install -v -ldflags "-X main.BranchName=$(git branch --show-current) -X main.CommitHash=$(git log -1 --pretty=format:%h)" ./...'
echo "You can now run 'buildpebble' from within the Pebble Git repository."
And then I run buildpebble
from the Pebble git repo. The location is different in that case due to the different GOPATH variable.
The reason I did the above is because I wanted to show which commit Iw as running when devving. This is accomplished in the Pebble code by:
diff --git a/cmd/pebble/main.go b/cmd/pebble/main.go
index f281df2..ee29d76 100644
--- a/cmd/pebble/main.go
+++ b/cmd/pebble/main.go
@@ -31,6 +31,12 @@ type config struct {
}
}
+// build flags
+var (
+ CommitHash string
+ BranchName string
+)
+
func main() {
configFile := flag.String(
"config",
@@ -52,7 +58,7 @@ func main() {
// Log to stdout
logger := log.New(os.Stdout, "Pebble ", log.LstdFlags)
- logger.Printf("Starting Pebble ACME server")
+ logger.Printf("Starting Pebble ACME server (Osiris Inferis Fork: %s, %s)", BranchName, CommitHash)
var c config
err := cmd.ReadConfigFile(*configFile, &c)
Also, welcome to the club of people with limited experience with Go.. In my case, VERY limited experience (just Pebble to be honest..).. My advice? Don't try to learn Go, I hate it already. Just stick with Python
Much more intuitive.