チュートリアルを始めました。やりたいことがあっちこっちにいくことはあまり良くないなと思いつつ、モチベーションがあるうちに終わらせたいなと思ったのでコツコツやってます。今はちょうど第3章が終わったところです。サービスを作ったことがあり勘所はあったので、今のところそこまで悩まずに進められています。使った本番環境へのデプロイがあるところですね。実践的な開発を意識して勉強できることはとてもいいですね。デプロイするのって面倒くさいですよね?1ってことで、タイトルにある通り、この手順を自動化したいと思います。チュートリアルだとBitbucketを使ってますが、僕はGitLabを使っています。統合されてるので便利かと思います。サービスと連携すれば同じことができます。デプロイできるようにします。自動でテストを動かすどこでミスをしたかわかりやすいように、段階を踏んで少しずつ設定をしていきます。したときに、自動テストを行うようにします。したときにこの設定を読んで色々してくれます。testただコマンドを羅列しているだけなので、見てもらえればすぐ理解できると思います。インストールするところでしょうか。testが失敗したら通知が届いて、次のデプロイに進みません。エラーが出る場合はログを見て修正しましょう。デプロイするテストがすべて成功したらHerokuにデプロイできるようにしましょう。ここではdplというコマンドラインツールを使ってデプロイします。--api-key=$HEROKU_PRODUCTION_API_KEYdplコマンドの--appオプションで指定されてる名前は自身のアプリ名を指定してください。HEROKU_PRODUCTION_API_KEYは環境変数で、GitLabに設定します。パブリックリポジトリで.gitlab-ci.ymlファイルにAPIキーを直接書いてしまうと、そのキーを使って誰でもHerokuにアクセスできてしまうので、セキュリティの観点から危険です。APIキーは絶対に直接書かずに環境変数などで指定するようにして、誰でも見えるようにしないでください。Setting``CI/CDを順にクリックして、VariablesのExpandをクリックすると環境変数を設定できるようになります。上の画像みたいになるはずです。ここに入力するAPIキーは、Herokuのアカウント管理画面に書いてあるAPIキーを使います。最終的の.gitlab-ci.ymlは以下のようになります。testとdeployの2ステージのパイプラインになっていて、testが成功するとdeployが実行されるようになります。db:migrateコマンドを実行することがあります。上記の設定だとそこまでやりません。db:migrateをしても意味がありません。デプロイ先はHerokuなので、そこで行う必要があります。Phase機能2を使います。CSS/JSを送るキャッシュを無効化するデータベースのマイグレーションをするなどを行うための機能です。Procfileを使うとHerokuにいろいろ指示・設定ができます3。Procfileはルートディレクトリに置く必要があります。db:migrateを行って、それが終わるとデプロイしたバージョンにアクセスできるようになります。db:migrate最後にこれでmasterにpushするとテストしてHerokuにデプロイできるようになりました。モダンな環境になりました。insallを実行するので時間がかかります。Dockerであらかじめテスト環境を構築しておけばもう少し早くなるのかな...?と思ったりします。GitLab上での使い方が分からないのでまた違う機会で調べてみたいと思います。分からないことがあれば、@takuchalleにリプライでもDMでも聞いてください。手元でテストをしないで良いということではないです。人間は忘れやすい生き物ですので、自動化して機械にもチェックしてもらおうってことです。プログラマになりたい。