GitLab CIの動作が分かりづらかったので図示してみた

GitLabを使ってDjangoアプリケーションのCI/CDを実現したい。そう思って色々調べてたのですが、色々な実装パターンがあるようで、どうもベストプラクティスがわからない。。。しかしながらやっと自分の中のベストプラクティスを見つけたので、まとめておきます。

GitLabを使用した DjangoのCI/CD概略図

開発はローカル環境

まず開発はローカルPCを使用することとし、作成したソースコードはgitでGitLabにPUSHします。

GitLabにPUSH

次に特定のブランチにPUSHされるとGitLab Runnerが.gitlab-ci.ymlを実行します。この中でDockerファイルによる、ソースコードのコンテナ化が実施され、GitLabのプロジェクト内 Container Registry に作成されたコンテナが配置されます。また、デプロイ先のサーバーで叩くコマンドをまとめた、deploy.shもこのgitlab-ci.ymlにより起動をさせます。このときGitLab Runnerより、デプロイ先のサーバーにSSH接続することになりますので、GitLab Runner内にSSHの秘密鍵の配置が必要になります。

GitLabに登録する秘密鍵

サーバーへ全自動デプロイ

デプロイ先のサーバーでは、docker pull と git pull が実行され、最新のコンテナとソースコードを配置します。(いずれもdeploy.shで実行、ただし一度手動で実行しておくなどの準備は必要)

最後にdocker-compose upが実行され、無事新しい資源で環境がアップデートされます。

上記に使ったファイル群をgitlabに登録していますので、どうぞ合わせて参考にしてください。https://gitlab.com/Karapon/django_docker_template

投稿を作成しました 110

コメントを残す

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る
%d人のブロガーが「いいね」をつけました。