我在本地机器上创建了两个项目。一个称为中间件,另一个称为身份验证。
两者都有模块。用于中间件项目的模块名为gitlab.com/nrs16/util,用于项目认证的模块名为gitlab.com/nrs16/authentication。
项目认证导入模块gitlab.com/nrs16/util并使用其部分功能。当我在本地运行它时,
这两个项目在gitlab上都有各自的仓库。对于身份验证,我创建了一个管道来构建它的二进制文件,但是它在go mod tidy上失败,并出现以下错误
go: gitlab.com/nrs16/authentication/src imports
gitlab.com/nrs16/util: module gitlab.com/nrs16/util: git ls-remote -q origin in /go/pkg/mod/cache/vcs/93c72a4658a85380430fcf63ad9a84a56291aad8ea2eb7f78ecda66ceb9f7e58: exit status 128:
fatal: could not read Username for 'https://gitlab.com': terminal prompts disabled
Confirm the import path was entered correctly.
If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.
遗嘱执行人是壳牌
这是.gitlab-ci.yml的内容:
stages:
- build
variables:
GO111MODULE: "on"
build:
stage: build
image: golang:1.21.0
script:
- go mod tidy
- go mod download
- go build -o authentication ./src/*.go
artifacts:
paths:
- src/.authentication
中间件go.mod:
module gitlab.com/nrs16/util
go 1.21.0
require (
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/spf13/viper v1.16.0
golang.org/x/crypto v0.13.0
)
require (
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
github.com/spf13/afero v1.9.5 // indirect
github.com/spf13/cast v1.5.1 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.4.2 // indirect
golang.org/x/sys v0.12.0 // indirect
golang.org/x/text v0.13.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
在authentication/src/目录下的main.go文件中导入
package main
import (
"database/sql"
_ "encoding/json"
"fmt"
"log"
"net/http"
middleware "gitlab.com/nrs16/util"
"github.com/gorilla/mux"
_ "github.com/lib/pq"
)
备注:
中间件项目在gitlab上是公开的,我不确定这是否足以在运行环境中创建它的模块。
我怎样才能使util模块对运行者来说是可访问的,以便进行项目身份验证构建?此外,runner is shared runner在我的本地机器上运行良好,但这是预期的,因为该模块是在我的本地PC上创建的,但只是认为我也会分享这个
我是新来的,所以我试着检查chatGPT。它说我应该直接用go.mod文件推送项目中间件,我也这么做了,并公开它,我也这么做了。
我还将模块名称从www.example.com更改gitlab.com/nrs16/util为util,它在我的本地PC上也工作得很好。但我仍然在管道中的go build命令中得到这个错误:
package util is not in std (/usr/local/go/src/util)
完整的.gitlab-ci.yml内容:
stages:
- build
variables:
GO111MODULE: "on"
build:
stage: build
image: golang:1.21.0
script:
- go build -o authentication ./src/*.go
artifacts:
paths:
- src/.authentication
main.go:
package main
import (
"database/sql"
_ "encoding/json"
"fmt"
"log"
"net/http"
middleware "util"
"github.com/gorilla/mux"
_ "github.com/lib/pq"
)
1条答案
按热度按时间lvmkulzt1#
好吧,这不是一个 * 实际 * 的答案,但它应该帮助你前进。不幸的是,在你如何尝试使用Go时,似乎有同样的主要问题是错误的,所以这是太多的评论。子弹点在这里没有真实的的秩序。
go build -o authentication ./src/*.go
这样的东西这是 * 错误的 * 图片Go代码这样:1.不要将源文件放在src文件夹中。这在其他语言中可能很常见,但不要在Go中这样做。永远不要使用文件参数调用go build。您可以通过运行要构建的包的文件夹中的go build
来构建Go程序。gitlab.com/<UserOrg>/<Project>
的形式命名您的模块。* 永远不要**将模块命名为“test”或“main”。永远不要将模块命名为“util”、“strings”或“foo”。总是使用像“foo.bar.nil/whatever”或“www.example.com“这样的名称example.org/myfirst/try(这是给予你更好的错误消息的唯一原因;但是您遇到了问题,更好的错误消息有助于解决问题)。go mod download
。但同样,没有必要,去建设将照顾下载无论如何。git config "url.ssh:// [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection) /.insteadof" "https://gitlab.com/"
的smth。