ずっとprivateなgitリポジトリが欲しかったんです。
GitHubはprivateなリポジトリを使おうと思うと有料で、リポジトリの数が多くなればなるほど月額費用があがっていってしまうんですよね。
自前でたてるのもねぇ〜

そんな時、

Amazon Web Services ブログ: 【AWS発表】AWS CodeCommitが利用可能に

ということを知りました。

利用料金は1アカウントあたり1$/月で、10GBのストレージと2,000回のGitリクエスト(pushやpullといったリポジトリのオブジェクト転送)が毎月の利用枠となっています。

これはありがたい!ということで早速使ってみたいと思います。

使い始める前に、いくつかツールのインストールと設定が必要になりましたので、いつものように手順をまとめておきたいと思います。

大まかな流れは以下のようになります。

  1. awscliのインストール
  2. awscliのCodeCommit用のプロファイルを設定
  3. gitのインストール
  4. gitのcredential.helperの設定
  5. gitの初期化
  6. CodeCommitのリポジトリの操作

それでは流れに従って作業を進めていきたいと思います。

awscliのインストール

awscliとはAmazon Web Serviceのさまざまなサービスを操るコマンドラインツールなのですが、ec2-api-toolsとは異なりますので、インストールされてなければbrewを使ってインストールします。

MacBook-Pro:aws mojyamojya$ brew install awscli
==> 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

どこにインストールされたのか確認してみます。

MacBook-Pro:bin mojyamojya$ which aws
/usr/local/bin/aws

awscliのCodeCommit用のプロファイルを設定

続いてawscliのCodeCommit用のプロファイルを設定します。

MacBook-Pro:hiro-office mojyamojya$ aws configure –profile CodeCommitProfile
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でインストールします。

MacBook-Pro:~ mojyamojya$ brew install git
==> 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を確認してみます。

MacBook-Pro:~ mojyamojya$ git –version
git version 2.4.6

どこにインストールされたかも一応確認しておきます。

MacBook-Pro:~ mojyamojya$ which git
/usr/local/bin/git

gitのcredential.helperの設定

次はgitのcredential.helperを設定します。
設定についてはこちらを参考にしました。

credential.helperとは認証が必要なリポジトリなどを使う際にユーザー名とパスワードを保存しておくことができ、安全に使うことができます。
※ 参考サイト
git credential helperを使ってHTTP越しで認証がかかっているリポジトリにアクセスする

MacBook-Pro:~ mojyamojya$ git config –global user.name mojyamojya
MacBook-Pro:~ mojyamojya$ git config –global user.email info@example.com

gitの初期化

続いてgitの初期化です。
ソース管理したいファイル群が格納されているディレクトリに移動して、以下のコマンドを実行します。

MacBook-Pro:example mojyamojya$ git init
Initialized empty Git repository in /Library/WebServer/Documents/example/.git/

git管理下のディレクトリとファイルの状態を確認します。

MacBook-Pro:example mojyamojya$ git status
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のあとに.(ピリオド)をつけると全てのディレクトリとファイルが対象になります。

MacBook-Pro:example mojyamojya$ git add .

もう一度ステータスを確認してみます。

MacBook-Pro:example mojyamojya$ git status
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.helper ‘!aws –profile CodeCommitProfile codecommit credential-helper $@’
MacBook-Pro:example mojyamojya$ git config –global credential.UseHttpPath true

※ CodeCommitProfileは

aws configure –profile CodeCommitProfile

このコマンドで作成したCodeCommit用のプロファイルになります。

正しくcredential.helperの設定がされたか、~/.gitconfigを確認してみます。

MacBook-Pro:~ mojyamojya$ emacs .gitconfig

[filter "lfs"]
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してみます。

MacBook-Pro:example mojyamojya$ git commit -m “first CodeCommit comment”
[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

ステータスを確認してみます。

MacBook-Pro:example mojyamojya$ git status
On branch master
nothing to commit, working directory clean

すべてのファイルがコミットされました。

それではリモートリポジトリにコミットの反映をしたいと思います。

AWS Console上で作成したCodeCommitリポジトリのURLを指定してリモートリポジトリを設定します。

MacBook-Pro:example mojyamojya$ git remote add origin https://git-codecommit.us-east-1.amazonaws.com/v1/repos/example
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してリモートリポジトリにソース管理を反映したいと思います。

MacBook-Pro:example mojyamojya$ git push origin master
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しました!

コミットログを確認してみます。

MacBook-Pro:example mojyamojya$ git log
commit ******************************9a26b32473
Author: mojyamojya <info@example.com>
Date: Mon Sep 14 23:29:23 2015 +0900

first CodeCommit comment

ちゃんとCommitした時のログが反映されていますね。

これでprivateなgitリポジトリが手に入ったのでオープンにできないソースの管理も安価でできるようになりました。これは地味にうれしいです!

※ 参考サイト
話題のAWS CodeCommitを試してみた | 株式会社インフィニットループ技術ブログ

関連記事

Trackback URL