ずっとprivateなgitリポジトリが欲しかったんです。
GitHubはprivateなリポジトリを使おうと思うと有料で、リポジトリの数が多くなればなるほど月額費用があがっていってしまうんですよね。
自前でたてるのもねぇ〜
そんな時、
Amazon Web Services ブログ: 【AWS発表】AWS CodeCommitが利用可能に
ということを知りました。
利用料金は1アカウントあたり1$/月で、10GBのストレージと2,000回のGitリクエスト(pushやpullといったリポジトリのオブジェクト転送)が毎月の利用枠となっています。
これはありがたい!ということで早速使ってみたいと思います。
使い始める前に、いくつかツールのインストールと設定が必要になりましたので、いつものように手順をまとめておきたいと思います。
大まかな流れは以下のようになります。
- awscliのインストール
- awscliのCodeCommit用のプロファイルを設定
- gitのインストール
- gitのcredential.helperの設定
- gitの初期化
- CodeCommitのリポジトリの操作
それでは流れに従って作業を進めていきたいと思います。
awscliのインストール
awscliとはAmazon Web Serviceのさまざまなサービスを操るコマンドラインツールなのですが、ec2-api-toolsとは異なりますので、インストールされてなければbrewを使ってインストールします。
==> Downloading https://homebrew.bintray.com/bottles/awscli-1.7.39.yosemite.bott
######################################################################## 100.0%
==> Pouring awscli-1.7.39.yosemite.bottle.tar.gz
==> Caveats
The “examples” directory has been installed to:
/usr/local/share/awscli/examples
Add the following to ~/.bashrc to enable bash completion:
complete -C aws_completer aws
Add the following to ~/.zshrc to enable zsh completion:
source /usr/local/share/zsh/site-functions/_aws
Before using awscli, you need to tell it about your AWS credentials.
The easiest way to do this is to run:
aws configure
More information:
http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html
zsh completion has been installed to:
/usr/local/share/zsh/site-functions
==> Summary
[beer] /usr/local/Cellar/awscli/1.7.39: 2061 files, 21M
どこにインストールされたのか確認してみます。
/usr/local/bin/aws
awscliのCodeCommit用のプロファイルを設定
続いてawscliのCodeCommit用のプロファイルを設定します。
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
Default region name [None]: us-east-1
Default output format [None]: json
設定する項目は以下の4点です。
- Access Key ID
- Secret Access Key
- Default region name
- Default output format
Default region nameにはリージョンを設定します。CodeCommitは2015年10月7日時点でUS East (N. Virginia)のみ利用可能なので「us-east-1」を指定します。Default output formatは出力されるデータの形式を指定します。jsonとしました。
※ Access Key IDとSecret Access Keyは適宜変更してください。
gitのインストール
gitをbrewでインストールします。
==> Downloading https://homebrew.bintray.com/bottles/git-2.4.6.yosemite.bottle.t
######################################################################## 100.0%
==> Pouring git-2.4.6.yosemite.bottle.tar.gz
==> Caveats
The OS X keychain credential helper has been installed to:
/usr/local/bin/git-credential-osxkeychain
The “contrib” directory has been installed to:
/usr/local/share/git-core/contrib
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completion has been installed to:
/usr/local/share/zsh/site-functions
==> Summary
[beer] /usr/local/Cellar/git/2.4.6: 1376 files, 32M
インストールが完了したらversionを確認してみます。
git version 2.4.6
どこにインストールされたかも一応確認しておきます。
/usr/local/bin/git
gitのcredential.helperの設定
次はgitのcredential.helperを設定します。
設定についてはこちらを参考にしました。
credential.helperとは認証が必要なリポジトリなどを使う際にユーザー名とパスワードを保存しておくことができ、安全に使うことができます。
※ 参考サイト
git credential helperを使ってHTTP越しで認証がかかっているリポジトリにアクセスする
MacBook-Pro:~ mojyamojya$ git config –global user.email info@example.com
gitの初期化
続いてgitの初期化です。
ソース管理したいファイル群が格納されているディレクトリに移動して、以下のコマンドを実行します。
Initialized empty Git repository in /Library/WebServer/Documents/example/.git/
git管理下のディレクトリとファイルの状態を確認します。
On branch master
Initial commit
Untracked files:
(use “git add …” to include in what will be committed)
about/
common/
contact/
faq/
favicon.ico
index.php
services/
nothing added to commit but untracked files present (use “git add” to track)
トラッキングされていないディレクトリとファイルが一覧表示され、リポジトリに追加(git add)してね。というメッセージが表示されました。
早速リポジトリに全てのディレクトリとファイルを追加します。git addのあとに.(ピリオド)をつけると全てのディレクトリとファイルが対象になります。
もう一度ステータスを確認してみます。
On branch master
Initial commit
Changes to be committed:
(use “git rm –cached …” to unstage)
new file: about/index.php
new file: common/css/contents.css
new file: common/css/font.css
new file: common/css/main.css
・・・中略・・・
new file: faq/index.php
new file: favicon.ico
new file: index.php
new file: services/index.php
全てのファイルがリポジトリに追加されました。
今度はgitのcredential.helperの設定をします。
※ 参考サイト
Setup Steps for HTTPS Connections to AWS CodeCommit Repositories on Linux, OS X, or Unix – AWS CodeCommit
MacBook-Pro:example mojyamojya$ git config –global credential.UseHttpPath true
※ CodeCommitProfileは
aws configure –profile CodeCommitProfile
このコマンドで作成したCodeCommit用のプロファイルになります。
正しくcredential.helperの設定がされたか、~/.gitconfigを確認してみます。
MacBook-Pro:~ mojyamojya$ emacs .gitconfig
clean = git lfs clean %f
smudge = git lfs smudge %f
required = true
[user]
name = mojyamojya
email = info@example.com
[credential]
helper = !aws –profile CodeCommitProfile codecommit credential-helper $@
UseHttpPath = true
それではローカルリポジトリにCommitしてみます。
[master (root-commit) fdb1c57] first CodeCommit comment
71 files changed, 20295 insertions(+)
create mode 100644 about/index.php
create mode 100644 common/css/contents.css
create mode 100644 common/css/font.css
create mode 100644 common/css/main.css
・・・中略・・・
create mode 100644 faq/index.php
create mode 100644 favicon.ico
create mode 100644 index.php
create mode 100644 services/index.php
ステータスを確認してみます。
On branch master
nothing to commit, working directory clean
すべてのファイルがコミットされました。
それではリモートリポジトリにコミットの反映をしたいと思います。
AWS Console上で作成したCodeCommitリポジトリのURLを指定してリモートリポジトリを設定します。
MacBook-Pro:example mojyamojya$ git remote -v
origin https://git-codecommit.us-east-1.amazonaws.com/v1/repos/example (fetch)
origin https://git-codecommit.us-east-1.amazonaws.com/v1/repos/example (push)
それでは最後にpushしてリモートリポジトリにソース管理を反映したいと思います。
Counting objects: 87, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (83/83), done.
Writing objects: 100% (87/87), 6.47 MiB | 729.00 KiB/s, done.
Total 87 (delta 8), reused 0 (delta 0)
remote:
To https://git-codecommit.us-east-1.amazonaws.com/v1/repos/example
* [new branch] master -> master
pushしました!
コミットログを確認してみます。
commit ******************************9a26b32473
Author: mojyamojya <info@example.com>
Date: Mon Sep 14 23:29:23 2015 +0900
first CodeCommit comment
ちゃんとCommitした時のログが反映されていますね。
これでprivateなgitリポジトリが手に入ったのでオープンにできないソースの管理も安価でできるようになりました。これは地味にうれしいです!
※ 参考サイト
話題のAWS CodeCommitを試してみた | 株式会社インフィニットループ技術ブログ