shiba-hiro’s 備忘録

技術ブログの皮を被ったただの備忘録

開発環境と仮想マシンとの間でのGitを用いたソース共有

ソース共有手段の必要性

先日の記事では、空っぽの環境からスタートして、プログラムを動作させることを実現しました。
ただしそのプログラムの内容は、echoコマンドで書き込んだものだったり特定のコマンドで自動生成された雛形だったりです。
一方で現実の開発では、複数の人がそれぞれのPCのエディタやIDEを用いて編集したソースコードを、ある時点で、デプロイ可能なものにして(ビルドして)、動作させる必要があります。

そこで今回はバージョン管理システムの代名詞、gitを使って、各々の編集した内容を仮想マシンへと共有する仕組みを作っていきます。
なお便宜上「開発環境」という言葉を使っていますが、これは、ここではホストOS側のことです。

shiba-hiro.hatenablog.com

サンプルプロジェクトの作成

今回はBitbucketというサービスを例にとります。
ひとり〜少人数でバージョン管理を行うには十分な機能が、無料で利用できます。

bitbucket.org

ユーザー登録を済ませたら、ホームの左側にあるメニューから、リポジトリの作成を進めます。
今回は、仮にsample-sharing-repoという名称にします。 リポジトリの作成が済むと、ゼロからスタートするときのためのコマンドを参照できるので、とりあえず開発環境からREADMEをコミットし、プッシュします。

$ cd your_work_space
$ git clone https://{your_account}@bitbucket.org/{your_account}/sample-sharing-repo.git
$ cd sample-sharing-repo
$ echo "# My sample-sharing-repo README" >> README.md
$ git add README.md
$ git commit -m "Initial commit"
$ git push -u origin master

bitbucketの当該リポジトリのページをリロードするとREADMEの反映が確認できます。
ここから、仮想マシンへの共有を進めていきましょう。

仮想マシンからgit clone

では仮想マシンを立ち上げます。
vagrant upubuntu/trusty64を起動し、vagrant sshで接続します。

shiba-hiro.hatenablog.com

開発環境と同様に、git cloneするためにはキーペアが必要です。
まずは仮想環境下でキーペアを作成しましょう。

$ ssh-keygen

次に、生成された公開鍵(~/.ssh/id_rsa.pub)の内容をコピーしてbitbucketへ登録します。
bitbucketのsample-sharing-repoから、画面左下の「設定」 > Access keysをクリックすると「鍵を追加」することができます。
Labelは何でも構いません。
Keyという入力欄へ公開鍵の内容をペーストして保存しましょう。

また、cloneする際にHost Key Verificationをスキップしたいので、下記のような設定ファイルを作成しておきます。

$ touch ~/.ssh/config
$ echo "Host bitbucket.org" >> ~/.ssh/config
$ echo "    User git" >> ~/.ssh/config
$ echo "    Port 22" >> ~/.ssh/config
$ echo "    IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config
$ echo "    StrictHostKeyChecking no" >> ~/.ssh/config

$ cat ~/.ssh/config 
Host bitbucket.org
    User git
    Port 22
    IdentityFile ~/.ssh/id_rsa
    StrictHostKeyChecking no

では仮想マシン側でgit cloneしてみます。

$ sudo apt update
$ sudo apt install -y git

$ git clone git@bitbucket.org:{your_account}/sample-sharing-repo.git

$ ls
sample-sharing-repo

$ cat sample-sharing-repo/README.md 
# My sample-sharing-repo README

gitリポジトリからソースを引っ張ってくることができるようになりました。
原理的にはこのような形で、クラウド上(プライベート、パブリックとも)からソースを参照してビルドすることができます。