はじめに
プロジェクトの作成は前回のまとめをご参考ください。
今回はアプリをHeokuで動かしてみようとしてみましたが、できなかった足跡です。
.godirファイルを作成
RevelをHerokuでビルドするにはこちらのビルドパックを仕様します。
revel/heroku-buildpack-go-revel
こちらを使うためには.godirを作成しておく必要があります。
your_org_or_user はリポジトリの組織かユーザー名に各自変更してください。
app_name はリポジトリ名に各自変更してください。
cd YOUR_PROJECT
echo "github.com/your_org_or_user/app_name" > .godir
コミットすれば完了です。
Herokuでアプリを作成
コマンドで作成
コマンドでアプリを作る場合はこちらで ビルドパックを指定してアプリを作成できます。
heroku create -b https://github.com/revel/heroku-buildpack-go-revel.git
Webの画面で作成
Webの画面でアプリをつくった場合は、画面からビルドパックを追加するかコマンドでビルドパックを追加する必要があります。
コマンドでビルドパックを追加
追加
heroku buildpacks:set https://github.com/revel/heroku-buildpack-go-revel.git
確認
heroku buildpacks
=== your_app Buildpack URL

revel/heroku-buildpack-go-revelGo support for Heroku. Contribute to revel/heroku-buildpack-go-revel development by creating an account on GitHub.
画面からビルドパックを追加
Herokuの作成したアプリ > Settings > Buildpacks > Add buildpack
> Enter Buildpack URL に
https://github.com/revel/heroku-buildpack-go-revel.git を入力
> Save changes
完了です。
デプロイ
デプロイしましょう。以下のコマンド、もしくはGithubを紐付けていれば画面からでもOK。
git push heroku master
ビルドエラー
以下のエラーが発生しました
$ git push heroku master
Enumerating objects: 46, done.
Counting objects: 100% (46/46), done.
Delta compression using up to 4 threads
Compressing objects: 100% (37/37), done.
Writing objects: 100% (46/46), 135.08 KiB | 9.65 MiB/s, done.
Total 46 (delta 2), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Revel app detected
remote: -----> Installing go1.4... done
remote: -----> Running: go get -tags heroku ./...
remote: package github.com/revel/revel
remote: imports context: unrecognized import path "context"
remote: package github.com/revel/revel
remote: imports github.com/mattn/go-colorable
remote: imports github.com/mattn/go-isatty
remote: imports golang.org/x/sys/unix
remote: imports math/bits: unrecognized import path "math/bits"
remote: ! Push rejected, failed to compile Revel app.
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to your_app.
remote:
To https://git.heroku.com/your_app.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/your_app.git'
ローカルでは動いたのに
remote: imports math/bits: unrecognized import path "math/bits"
だなんて、、そんな。
どうやら、Goのバージョンが怪しい。
remote: -----> Installing go1.4... done
ローカルのGoのバージョンは以下。
$ go version
go version go1.13.7 darwin/amd64
Revelの公式サイトによるGoのバージョン1.8以上が必要なんですね。
ビルドパックのバージョンの修正をみてみると環境変数設定していれば通りそうなのでバージョンを環境変数にセットしてみる。
$ heroku config:set GOVERSION="1.13.7"
Setting GOVERSION and restarting ⬢ xxxx... done, v3
GOVERSION: 1.13.7
もう一回ビルドしてみる
remote: -----> Installing go1.4... done
あれ、エラー。変わらずgo1.4を使おうとしている。。
まとめ
forkしてバージョンを上げて使うという案もあるかと思うんですが、4年更新されていないビルドパックですし時間溶かしそうなので使うのをやめておこうと思います。
Revel自体もそんなに活発ではないみたいに見えるので、別のフレームワーク使ってみようかと思っています。
もしうまくいうやり方ご存知でしたらコメントいただけたら幸いです。
コメント