Edited at

はまりがちなGAE/Go(+dep)のデプロイを簡単3ステップで解決


gcloud app deployでエラー🤔


ディレクトリ構成

.

├── Gopkg.lock
├── Gopkg.toml
├── README.md
├── gae
│ ├── handler.go
├── app
│ ├── app.go
│ ├── app.yaml
│ ├── secret.yaml
└── vendor
├── github.com
└── golang.org

この構成で gcloud app deploy するとエラーが出る😢


出たエラー


ERROR: (gcloud.app.deploy) Error Response: [9] Deployment contains files that cannot be compiled: Compile failed:

/work_dir/github.com/yuuis/gae/handler.go:12:2: can't find import: "github.com/nlopes/slack"



なぜエラーが出るか

GAEがvendoringに対応していないから😇 (2019/03/12)


だけど、vendoringしながらデプロイもしたい!

対応していなくても、depを使って依存性管理しながらGAEにデプロイしたい!


depを使いつつデプロイする方法


ディレクトリ構成

.

├── Gopkg.lock
├── Gopkg.toml
├── README.md
├── gae
│ ├── handler.go
├── app
│ ├── app.go
│ ├── app.yaml
│ ├── secret.yaml
├── gopath
│ ├── src -> ../vendor
└── vendor
├── github.com
└── golang.org


簡単3ステップ


step1. ルートディレクトリ直下に新しくgopathというディレクトリを作る

```

$ mkdir gopath
```


step2. gopathディレクトリの下に、vendorを指すシンボリックリンクを作る

```

$ cd gopath
$ ln -s ../vendor/ src
```


step3. $GOPATHをgopathを見るように変更する

```

$ export GOPATH=your_directory/gopath
```

これで gcloud app deploy するとデプロイできた。