スポンサーリンク

Go/RevelをHerokuにデプロイできない

はじめに

プロジェクトの作成は前回のまとめをご参考ください。

今回はアプリを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-revel
Go 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自体もそんなに活発ではないみたいに見えるので、別のフレームワーク使ってみようかと思っています。

もしうまくいうやり方ご存知でしたらコメントいただけたら幸いです。

コメント

タイトルとURLをコピーしました