基本上，Google Container Registry Auth Plugin 這個 plugin 就是用 Google OAuth Plugin 搭配 Service Account 讓外部的 Jenkins 存取你的 GCR。
當然，中招對我們來說跟家常便飯一樣，所以這個方案對我們無效，因為這個 Plugin 是需要透過 build step 去設定我們要 Docker 做的事情，但由於我們要透過 packer 來上傳，而 packer 又是自己透過 run_command 來呼叫 docker，所以我們無法明確知道 packer 目前使用的 docker 是否已經拿到 Google OAuth 的權限，可進行 push 的動作。
由於 Jenkins Plugin 還要花時間、加上 packer 的限制，所以暫時先不考慮方法一。
接下來我們也可以參考在本機開發的時候，使用 gcloud 指令來針對 GCR 進行操作。
最後也不使用這個的考量點，是因為還要在 Jenkins server 上面安裝 Google Cloud SDK，依照目前只想要 POC 的狀態，有點太麻煩，所以不考慮這個方法。
用 docker login 這個方法個人覺得頗暴力的，但也是求快下暫時的解決方案。
只要先準備好 Service Account 的 access token，就可以照著文件中的指令直接操作：
這樣子，就可以插在每個 Jenkins job 要啟動 packer build 之前，都用 docker login 讓 docker 有權限可以進行 docker push 到自己專案的 GCR 囉！
這中間還有碰到一個問題，是這個 Service Account 的權限要開到多大才夠呢？
目前測試起來，是需要給到 Storage 的 Storage Admin 才不會出現 Permission denied。
估計是因為第一次 push 會需要 create GCR 對應 cloud storage 專案路徑 containers/repositories/library 中的目錄才會有的問題。
個人覺得這個方法滿粗糙，也挺暴力的，潛在滿多小地方可能會讓自己的 access token 或是 login session 被有心人惡搞。
目前覺得說不定在方法一中使用 Jenkins plugin 是否也能做到 docker login 的效果，還要找時間測試看看才知道了！