when I run bazel build //leeroy-web
, build completes with no issues. However, when I run bazel build //...
, I get the following error:
compilepkg: missing strict dependencies:
/private/var/tmp/_bazel_user/988b526f0a596b82369c6920f2962566/sandbox/darwin-sandbox/96/execroot/__main__/leeroy-web/web.go: import of "github.com/foo/project/leeroy-web/handlers"
/private/var/tmp/_bazel_user/988b526f0a596b82369c6920f2962566/sandbox/darwin-sandbox/96/execroot/__main__/leeroy-web/web.go: import of "github.com/foo/project/sum-pkg"
I was wondering how I can resolve this. I found something that might be related here: Bazel build docker container with local golang module but wasn't able to apply the solution to my issue. Thank you.
leeroy-web/web.go
package main
import (
"log"
"net/http"
"github.com/foo/project/leeroy-web/handlers"
sum "github.com/foo/project/sum-pkg"
)
func main() {
added := sum.Sum(8000, 80)
log.Printf("%d web server ready", added)
http.HandleFunc("/", handlers.Handler)
http.ListenAndServe(":8080", nil)
}
leeroy-web/handlers/handlers.go
package handlers
import (
"io"
"net/http"
)
func Handler(w http.ResponseWriter, r *http.Request) {
resp, err := http.Get("http://leeroy-app:50051")
if err != nil {
panic(err)
}
defer resp.Body.Close()
if _, err := io.Copy(w, resp.Body); err != nil {
panic(err)
}
}
skaffold.yaml
apiVersion: skaffold/v2beta29
kind: Config
build:
artifacts:
- image: leeroy-web
context: leeroy-web
bazel:
target: //:leeroy-web-img.tar
deploy:
kubectl:
manifests:
- leeroy-web/kubernetes/*
portForward:
- resourceType: deployment
resourceName: leeroy-web
port: 8080
localPort: 9000
profiles:
- name: gcb
build:
googleCloudBuild: {}
sum-pkg/sum.go
package sum
func Sum(a int, b int) int {
return a + b
}
leeroy-web/BUILD
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
load("@io_bazel_rules_docker//go:image.bzl", "go_image")
go_library(
name = "leeroy-web_lib",
srcs = ["web.go"],
importpath = "github.com/foo/project/leeroy-web",
visibility = ["//visibility:private"],
deps = [
"//leeroy-web/handlers",
"//sum-pkg",
],
)
go_binary(
name = "leeroy-web",
embed = [":leeroy-web_lib"],
visibility = ["//visibility:public"],
)
go_image(
name = "leeroy-web-img",
srcs = ["web.go"],
goarch = "amd64",
goos = "linux",
importpath = "github.com/foo/project/leeroy-web",
static = "on",
)