[英]Permission denied creating /go directory in Jenkins when building a project that uses go modules
When I try to build a go Jenkins project that uses go modules, I see this error:当我尝试构建一个使用 go 模块的 go Jenkins 项目时,我看到以下错误:
go: writing go.mod cache: mkdir /go: permission denied
I also see a similar error for every import:对于每次导入,我也看到类似的错误:
project-name/cmd imports
github.com/antonfisher/nested-logrus-formatter: mkdir /go: permission denied
project-name/cmd imports
github.com/gorilla/mux: mkdir /go: permission denied
project-name/cmd imports
github.com/pkg/errors: mkdir /go: permission denied
project-name/cmd imports
github.com/sirupsen/logrus: mkdir /go: permission denied
project-name/cmd imports
github.com/spf13/cobra: mkdir /go: permission denied
project-name/cmd imports
github.com/spf13/viper: mkdir /go: permission denied
project-name/cmd imports
k8s.io/api/core/v1: mkdir /go: permission denied
project-name/cmd/cli/backup imports
github.com/vmware-tanzu/velero/pkg/apis/velero/v1: mkdir /go: permission denied
project-name/cmd/cli/backup imports
github.com/vmware-tanzu/velero/pkg/backup: mkdir /go: permission denied
project-name/cmd/cli/backup imports
github.com/vmware-tanzu/velero/pkg/builder: mkdir /go: permission denied
project-name/cmd/cli/backup imports
k8s.io/apimachinery/pkg/apis/meta/v1: mkdir /go: permission denied
project-name/cmd/cli/csisnaprestore imports
github.com/gosuri/uitable: mkdir /go: permission denied
project-name/cmd/cli/csisnaprestore imports
github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1: mkdir /go: permission denied
project-name/cmd/cli/csisnaprestore imports
k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset: mkdir /go: permission denied
project-name/cmd/cli/csisnapshot imports
k8s.io/apimachinery/pkg/apis/meta/v1/unstructured: mkdir /go: permission denied
project-name/cmd/cli/csisnapshot imports
k8s.io/apimachinery/pkg/util/wait: mkdir /go: permission denied
project-name/cmd/cli/initz imports
k8s.io/api/apps/v1: mkdir /go: permission denied
project-name/cmd/cli/px/appbackup imports
github.com/libopenstorage/stork/pkg/apis/stork/v1alpha1: mkdir /go: permission denied
project-name/cmd/cli/px/credentials imports
github.com/libopenstorage/openstorage/api: mkdir /go: permission denied
project-name/cmd/cli/repository imports
gocloud.dev/blob: mkdir /go: permission denied
project-name/cmd/cli/snaprestore imports
k8s.io/apimachinery/pkg/labels: mkdir /go: permission denied
project-name/cmd/cli/snapshot imports
k8s.io/apimachinery/pkg/runtime/schema: mkdir /go: permission denied
project-name/cmd/cli/snapshot imports
k8s.io/client-go/dynamic: mkdir /go: permission denied
project-name/cmd/cli/veleroutil imports
k8s.io/apimachinery/pkg/api/errors: mkdir /go: permission denied
project-name/cmd/cli/version imports
k8s.io/apimachinery/pkg/util/intstr: mkdir /go: permission denied
project-name/pkg/cli imports
github.com/go-openapi/swag: mkdir /go: permission denied
project-name/pkg/cli imports
github.com/spf13/pflag: mkdir /go: permission denied
project-name/pkg/cli imports
k8s.io/client-go/kubernetes: mkdir /go: permission denied
project-name/pkg/cli imports
k8s.io/client-go/rest: mkdir /go: permission denied
project-name/pkg/cli imports
k8s.io/client-go/tools/clientcmd: mkdir /go: permission denied
project-name/pkg/cli imports
k8s.io/client-go/tools/clientcmd/api: mkdir /go: permission denied
project-name/pkg/core/framework imports
github.com/hashicorp/go-version: mkdir /go: permission denied
project-name/pkg/core/framework imports
k8s.io/api/batch/v1: mkdir /go: permission denied
project-name/pkg/core/framework imports
k8s.io/api/batch/v1beta1: mkdir /go: permission denied
project-name/pkg/core/framework imports
k8s.io/apimachinery/pkg/util/rand: mkdir /go: permission denied
project-name/pkg/core/loader imports
k8s.io/apimachinery/pkg/util/validation: mkdir /go: permission denied
project-name/pkg/hook imports
k8s.io/client-go/kubernetes/scheme: mkdir /go: permission denied
project-name/pkg/hook imports
k8s.io/client-go/tools/remotecommand: mkdir /go: permission denied
project-name/pkg/ioutil imports
github.com/gofrs/flock: mkdir /go: permission denied
project-name/pkg/ioutil imports
golang.org/x/sys/unix: mkdir /go: permission denied
project-name/pkg/kube imports
github.com/ghodss/yaml: mkdir /go: permission denied
project-name/pkg/kube imports
k8s.io/api/storage/v1: mkdir /go: permission denied
project-name/pkg/kube imports
k8s.io/apimachinery/pkg/api/meta: mkdir /go: permission denied
project-name/pkg/kube imports
k8s.io/apimachinery/pkg/api/resource: mkdir /go: permission denied
project-name/pkg/kube imports
k8s.io/apimachinery/pkg/fields: mkdir /go: permission denied
project-name/pkg/kube imports
k8s.io/apimachinery/pkg/runtime: mkdir /go: permission denied
project-name/pkg/kube imports
k8s.io/apimachinery/pkg/types: mkdir /go: permission denied
project-name/pkg/kube imports
k8s.io/client-go/informers: mkdir /go: permission denied
project-name/pkg/kube imports
k8s.io/client-go/tools/cache: mkdir /go: permission denied
project-name/pkg/kube imports
k8s.io/client-go/tools/portforward: mkdir /go: permission denied
project-name/pkg/kube imports
k8s.io/client-go/transport/spdy: mkdir /go: permission denied
project-name/pkg/objectstore imports
github.com/aws/aws-sdk-go/aws: mkdir /go: permission denied
project-name/pkg/objectstore imports
github.com/aws/aws-sdk-go/aws/credentials: mkdir /go: permission denied
project-name/pkg/objectstore imports
github.com/aws/aws-sdk-go/aws/endpoints: mkdir /go: permission denied
project-name/pkg/objectstore imports
github.com/aws/aws-sdk-go/aws/session: mkdir /go: permission denied
project-name/pkg/objectstore imports
github.com/aws/aws-sdk-go/service/s3: mkdir /go: permission denied
project-name/pkg/objectstore imports
github.com/aws/aws-sdk-go/service/s3/s3manager: mkdir /go: permission denied
project-name/pkg/objectstore imports
gocloud.dev/blob/fileblob: mkdir /go: permission denied
project-name/pkg/objectstore imports
gocloud.dev/blob/s3blob: mkdir /go: permission denied
project-name/pkg/px imports
github.com/libopenstorage/openstorage/api/client: mkdir /go: permission denied
project-name/pkg/px imports
github.com/libopenstorage/openstorage/api/client/cluster: mkdir /go: permission denied
project-name/pkg/px imports
github.com/libopenstorage/openstorage/api/client/volume: mkdir /go: permission denied
project-name/pkg/px imports
github.com/libopenstorage/openstorage/cluster: mkdir /go: permission denied
project-name/pkg/px imports
github.com/libopenstorage/openstorage/volume: mkdir /go: permission denied
project-name/pkg/px imports
google.golang.org/grpc: mkdir /go: permission denied
project-name/pkg/px imports
google.golang.org/grpc/credentials: mkdir /go: permission denied
project-name/pkg/px imports
google.golang.org/grpc/status: mkdir /go: permission denied
project-name/pkg/quiesce imports
github.com/deckarep/golang-set: mkdir /go: permission denied
project-name/pkg/quiesce imports
github.com/drone/envsubst: mkdir /go: permission denied
project-name/pkg/stork imports
github.com/libopenstorage/stork/pkg/client/clientset/versioned/typed/stork/v1alpha1: mkdir /go: permission denied
project-name/pkg/utils imports
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1: mkdir /go: permission denied
project-name/pkg/velero imports
github.com/vmware-tanzu/velero/pkg/generated/clientset/versioned: mkdir /go: permission denied
I am using the Go Jenkins plugin to change the Go version.我正在使用Go Jenkins 插件来更改 Go 版本。
Here is how I am using it in a Jenkins pipeline:这是我在 Jenkins 管道中使用它的方式:
def root = tool name: 'Go 1.14', type: 'go'
withEnv(["GOROOT=${root}", "PATH+GO=${root}/bin", "GOBIN=${root}/bin"]) {
sh 'go version'
sh './build.sh'
}
Note: ./build.sh
builds the project using modules注意: ./build.sh
使用模块构建项目
What is happening, and how can I get my build to work?发生了什么,我怎样才能让我的构建工作?
The issue was that GOPATH is still defined as /go
.问题是 GOPATH 仍然定义为/go
。 The build process tries to create this directory, but Jenkins does not have access to create it.构建过程尝试创建此目录,但 Jenkins 无权创建它。
To resolve this issue, define GOPATH
in your withEnv
call, so the final withEnv
code block would look like:要解决此问题, GOPATH
在您的withEnv
调用中定义GOPATH
,因此最终的withEnv
代码块将如下所示:
withEnv(["GOROOT=${root}", "PATH+GO=${root}/bin", "GOBIN=${root}/bin", "GOPATH=${root}/go"]) {
sh 'go version'
sh './build.sh'
}
The documentation did not mention defining "GOPATH" here, so it took me a few days to discover this.文档没有提到在这里定义“GOPATH”,所以我花了几天时间才发现这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.