亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 go 1.11 和 Google App Engine Standard 驗證私有 Go

如何使用 go 1.11 和 Google App Engine Standard 驗證私有 Go

Go
MMTTMM 2023-05-15 14:45:40
我一直在更新我的整個 go gae 標準項目以使用 go 1.11 的模塊。主目錄結構app.yamlapp.gogo.modgo.sumapp.gopackage mainimport "bitbucket.org/myPrivateRepo"func main() {    myImportantModule.Run()}go.modmodule myProjectrequire bitbucket.org/myPrivateRepo v0.0.1錯誤如果我嘗試 gcloud app deploy:ERROR: (gcloud.app.deploy) Error Response: [9] Cloud build <GUI> status: FAILURE.Build error details: go: bitbucket.org/[email protected]: https://api.bitbucket.org/2.0/repositories/myPrivateRepo?fields=scm: 403 Forbidden(注意:顯然我正在使用的回購有一個真實的名字)。那我可以這樣做嗎?我承認我沒有完全理解遷移文檔,尤其是當它談到“將文件移動到您的 GOPATH”時。 https://cloud.google.com/appengine/docs/standard/go111/go-differences我的意思是,我認為新模塊系統的好處之一是您不需要 go 路徑下的所有內容。例如,當我閱讀https://github.com/golang/go/wiki/Modules時,它很早就說“在你的 GOPATH 之外創建一個目錄:”所以,需要明確的是,現在我所有的代碼都在 go 路徑之外,但一切都在本地構建得很好。我認為這一切都有效,因為當我運行 go mod tidy / go build 等時,go 會自動下載并緩存 go 路徑中的內容。然而,當我嘗試 gcloud app deploy 時它失敗了。無論如何,谷歌云構建系統將如何訪問我的私人存儲庫?我顯然錯過了一些重要的東西。我還讀到你不應該將供應商與新模塊系統結合起來,所以不可能。如果這可行,我將非常高興,因為使用 DEP 迫使我非常笨拙地使用 goapp deploy。
查看完整描述

3 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

更新:現在 go 1.14 已經發布,Google 有一些更好的文檔: https: //cloud.google.com/appengine/docs/standard/go/specifying-dependencies


我的解決方案:


我沒有處理憑據,而是使用 go 的模塊替換功能來指示 GAE 使用我的本地代碼。這運作良好。


目錄結構:


myService/

    src/

        service.go  // has a run() function to set up routers etc.

        go.mod      // depends on my private module in bitbucket and other things

        …           // other source files

    build/

        gae/

            src/        // simlink to ../../src

            modules/    // git ignored, I clone or copy my modules in build scripts.

            app.go  // see below…

            go.mod  // has main() which calls service.run() and appEngine.Main()

            app.yaml

方法


我使用 git module replace 以便 GAE 使用我的本地代碼。在構建之前,我解析 myService/src/go.mod 以找到我的私有模塊的正確版本,然后將其克隆到模塊文件夾中。我還選擇了復制 wip 模塊源代碼以在本地進行調試,而無需提交到我的模塊存儲庫。


gae 目錄中的 go.mod:


module myServiceGAE


require (

    bitbucket.org/me/myService v0.0.0

    google.golang.org/appengine v1.4.0

)


replace bitbucket.org/me/myService => ./src


replace bitbucket.org/me/myModule => ./modules/utils

優點


myService 下的包沒有 GAE 的引用或知識,所以我可以輕松地將它構建到 docker 等中。我認為解析服務 go.mod 文件就像創建我自己的依賴管理器一樣,破壞了 go 模塊的好處。


缺點


如果我有一個依賴于另一個私有模塊的私有模塊,我認為事情會變得太復雜。


查看完整回答
反對 回復 2023-05-15
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

另一種選擇是也使用 Google Cloud Secret Manager

Google Cloud 將有一個 SSH 密鑰來訪問和拉取您的私有存儲庫。


查看完整回答
反對 回復 2023-05-15
?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

在部署之前設置 git 憑據:


git config credential.helper '!f() { sleep 1; echo "username=${GIT_USER}\npassword=${GIT_PASSWORD}"; }; f'


export GIT_USER=put_git_user_here

export GIT_PASSWORD=put_git_password_here


gcloud app deploy


查看完整回答
反對 回復 2023-05-15
  • 3 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號