【问题标题】:Permission denied creating /go directory in Jenkins when building a project that uses go modules构建使用 go 模块的项目时,权限被拒绝在 Jenkins 中创建 /go 目录
【发布时间】:2021-01-23 22:04:35
【问题描述】:

当我尝试构建一个使用 go 模块的 go Jenkins 项目时,我看到了这个错误:

go: writing go.mod cache: mkdir /go: permission denied

我也看到每次导入都会出现类似的错误:

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

我正在使用Go Jenkins 插件来更改 Go 版本。

这是我在 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'
}

注意:./build.sh 使用模块构建项目

发生了什么,我怎样才能让我的构建工作?

【问题讨论】:

    标签: go jenkins file-permissions go-modules


    【解决方案1】:

    问题在于 GOPATH 仍被定义为 /go。构建过程尝试创建此目录,但 Jenkins 无权创建它。

    要解决此问题,请在您的 withEnv 调用中定义 GOPATH,因此最终的 withEnv 代码块如下所示:

    withEnv(["GOROOT=${root}", "PATH+GO=${root}/bin", "GOBIN=${root}/bin", "GOPATH=${root}/go"]) {
      sh 'go version'
      sh './build.sh'
    }
    

    文档没有提到在这里定义“GOPATH”,所以我花了几天时间才发现这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      相关资源
      最近更新 更多