GitlabからHerokuに自動デプロイ

フロントの動きをちょっと確認したい場合など、Herokuの無料枠はとても便利です。
HeokuはGithubからの自動デプロイは簡単にできますが、Gitlabからの自動デプロイは色々と準備が必要となります。
そこで今回はGitlabからHerokuへ自動デプロイするまでの手順を説明していきたいと思います。

Gitlabの運用環境

  • Raspberry Pi 4 8GB
  • Ubuntu 20.04.3 LTS
  • apache 2.4.41
  • Gitlab EE 14.7.0

筆者の現在の環境が上記というだけで合わせる必要はありませんが、他のOSやバージョンを使っている場合の方法について質問されても答えられないので、ご了承ください。

事前準備

Gitlabは事前にインストールしておいてください。インストール時にどのような設定をしていたかは忘れてしまったので、インストール方法は割愛します。
また、Herokuのアカウント作成も行っておいてください。

Herokuでの操作

プロジェクトの作成

Herokuにログインして[New]>[Create new app]をクリックしてください。

[App name]に任意のアプリ名を入力して、[Create app]をクリックしてプロジェクトの作成は完了です。

APIキーのコピー

右上のアカウントアイコンから[Account Setting]をクリックします。

下にスクロールして、[API Key]のところで[Reveal]をクリックしてAPIキーを表示したらコピーしておきます。

以上でHerokuでの操作は完了です。

ターミナルでの操作

Gitlab runnerのインストール

各環境でのインストール方法は公式ページを参照してください。Ubuntuでのインストール方法は以下になります。

Gitlabで自動デプロイしたいプロジェクトを開いて、[設定]>[CI/CD]>[Runner]>[展開]でGitlab runnerの設定を開きます。

上記画像の「Register the runner with this URL:」のURLを下のコマンドの「 https://your.domain 」と置き換え、「And this registration token:」を「 token_code_xxxx 」と置き換えて、コマンドを実行します。
コマンド実行時にタグを追加するかなどの質問がありますが、何も入力せずEnterを押して大丈夫です。

Git runnerのページを再読み込みして、「利用可能な Specific runner」に追加されていれば完了です。

sudoの設定

現在の設定ではgitlab-runnerがsudoを実行できないので、sudoの設定を変更します。

visudoでsudoの設定を開きます。

sudoの箇所を以下のように変更し、パスワード無しでsudoできるようにします。
全てパスワード無しはセキュリティ的に怖いという方は、許可する内容を適宜修正してください。

gitlab-runnerがsudoを実行できるように、sudoグループに追加します。

Gitlabでの操作

環境変数の追加

Gitlabで自動デプロイしたいプロジェクトを開いて、[設定]>[CI/CD]>[変数]>[展開]で環境変数の設定を開き、[変数の追加]をクリックします。

[キー]に「APPNAME_OF_HEROKU」、[値]にHerokuのプロジェクト名を指定し、[Protect variable]のチェックを外して、[変数の追加]をクリックします。

[キー]に「HEROKU_API_KEY」、[値]にコピーしたHerokuのAPIキーを指定し、[Protect variable]のチェックを外して、[変数の追加]をクリックします。

.gitlab-cd.ymlの追加

自動デプロイしたいプロジェクトの直下に「.gitlab-cd.yml」というファイルを以下の内容で作成し、コミット、プッシュします。
「image」の部分はデプロイするプロジェクトの環境に合わせて修正してください。今回はnode.jsのプロジェクトのため、「node:latest」としています。
「master」の部分はデプロイしたいブランチ名を入力してください。

設定が上手くいっていれば、上記のファイルをプッシュすると自動デプロイが開始されると思います。
以下の画像のように[成功]と表示されていれば、Herokuにデプロイ完了です。

デプロイしたアプリを開くには、Herokuのプロジェクトページを開いて、[Open app]をクリックします。

以上でGitlabからHerokuへの自動デプロイの手順は完了です。

コメントを残す

メールアドレスが公開されることはありません。