GitLabにコミットしたら、FTPでサーバにアップロードする自動化を1分で行う方法。-『Git』
GitLabがビルトインしているGitLabCIを使うと、.gitlab-ci.yml
というファイルの設置だけで、とても簡単にデプロイの自動化を実現できます。
Git環境での作業効率化/自動化の、誰でも取り組めるTipsです。
GitLabとは
GitLabは、ポストGitHubなGitのリポジトリをホスティングをするアプリケーションです。
サーバーを用意してインストールすることもできるのですが、今回は便利で気軽にブラウザ上で利用出来る GitLab.com を前提とします。
GitLabは無料で利用できることが充実していて、非公開のプライベートプロジェクトを作れますし、今回紹介するCI/CDも上限はありますが無料です。
1分でやりたい簡単なデプロイの自動化
要件は、
- マスターブランチにコミット
- リモートにプッシュ
- サーバーにアップロード
ということです。
.gitlab-ci.ymlを設置する
レポジトリのルートに .gitlab-ci.yml
というファイルを追加します。やることは、このファイルの設置と書き換えのみなので、1分くらいでデプロイの自動化を実現できますね。
gitlab-ci.yml
variables:
HOST: "example.com"
USERNAME: "yourName"
PASSWORD: "yourPass"
LOCAL: "./your/dist/dir"
SERVER: "./your/public_html"
deploy:
script:
- apt-get update -qq && apt-get install -y -qq lftp
- lftp -c "set ftp:ssl-allow no; open -u $USERNAME,$PASSWORD $HOST; mirror -R $LOCAL $SERVER --parallel=10"
only:
- master
.gitlab-ci.ymlを書き換える
それぞれの環境に合わせるために、variables
の項目を任意のものに書き換えます。LOCAL
はレポジトリのデプロイしたいディレクトリ、SERVER
はサーバーへのパスを記述します。
このファイルをマスターにコミットすると、GitLabCIが動くようになります。GitLabのデフォルトの設定で、.gitlab-ci.yml
の有無で、GitLabCI が動くようになっています。
ここでは、lftp というツールをインストールし、それを利用してサーバに接続しています。mirror
にいろいろなオプションを渡すことで、アップロードを制御できます。
これで、必要なことは終わりです。
ログとか見たい
デプロイのログは、GitLabの任意のレポジトリの中で、サイドバーの「CI/CG」 / 「Pipelines」から辿ることができるので、詳細を確認することができます。
ログから走らせたジョブをリトライをする、などの操作もできます。何かエラーが発生したときは、メールで通知が届くようになっています。
参考
GitLabCIはテストの自動化など、かなり複雑なCI(継続的インテグレーション)を実現できるらしいです。が、それに取り組む前に、知識がなくても簡単に実現できる自動デプロイの紹介でした。
GitLabCIは、いまのところ無料で利用できます、、GitLab素敵ですよね。
おわります。