LoginSignup
7
9

More than 5 years have passed since last update.

JavaプロジェクトをAWS CodeCommitのリポジトリで管理する

Posted at

概要

Windows環境にて、JavaプロジェクトをAWS CodeCommitのリポジトリで管理する方法です。
AWS CodeCommitの準備やsshでの接続方法は、AWSのSetting Up for AWS CodeCommitページにあるFor SSH Connections on Windowsの通りに進めました。

記事編集中に誤ってオリジナルの記事を削除してしまいました。stockして頂いた方、申し訳ありません。この記事はバックアップから再度投稿したものになります。

環境

  • Windows10
  • PuTTY 0.67 (一式)
  • Git for Windows 2.9.0

作業手順

  1. WindowsにGitやSSHクライアントなどをインストールします
  2. Windows側でCodeCommitのリポジトリにアクセスするためのssh認証鍵を作成します
  3. AWS側でCodeCommitのリポジトリにアクセスできるIAMユーザーを登録します
  4. PuTTYを使ってsshで接続できるか確認します
  5. AWS CodeCommitにリポジトリを作成します
  6. Windows側でリポジトリで管理するプロジェクトを作成します
  7. 作成したプロジェクトをGit化します
  8. Git化(=ローカルリポジトリ)したプロジェクトをリモートリポジトリ(=CodeCommit)へpushします
  9. ローカルリポジトリをeclipseに取り込みます
  10. eclipseから修正したコードをcommit、pushします

準備

Git for Windowsのインストール

Git ClientとしてGit for Windowsを使用します。
Git for Windowsよりインストーラーを入手してインストールを行います。

$ git --version
git version 2.9.0.windows.1

インストールが終わったら、Git bashを実行して下記の初期設定を行います。

$ git config --global user.name "rubytomato"
$ git config --global user.email rubytomato@example.com
$ git config --global core.autoCRLF false

PuTTYのインストール

リポジトリへはsshで接続するのでSSHクライアントをインストールします。今回はPuTTYを使用するのでPuTTYよりWindows用のアーカイブファイルをダウンロードし適当な場所へ展開します。
PUTTY_HOMEという名前の環境変数にそのディレクトリを登録します。(必須ではないです)

PUTTY_HOME : %HOME%\dev\putty

次にGit_SSHという環境変数にplink.exeへの絶対パスを登録します。(必要です)

Git_SSH : %PUTTY_HOME%\plink.exe
  • plink.exeはPuTTYに同梱されているsshコマンドのWindows版です。

PUTTYGENで秘密鍵を作成します

PUTTYGET.EXEを起動し2048bitのSSH-2 RSAで秘密鍵を作成します。(パスフレーズは設定しませんでした。)
画面上に表示されている公開鍵は、あとでAWSのIAMユーザーのSSH公開キーとして使用します。

puttygen_02.png

registryの登録

適当な名前のregファイルを作成し下記の内容を貼り付けて保存します。(情報が更新されているかもしれませんので、必ずAWSのSetup Steps for SSH Connections to AWS CodeCommit Repositories on Windowsを確認してください。)
regファイルをダブルクリックするとregistryに保存するか尋ねられるので「はい」で続けます。

reg
Windows Registry Editor Version 5.00
  [HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys]
  "rsa2@22:git-codecommit.us-east-1.amazonaws.com"="AAAAB3NzaC1yc2EAAAADAQABAAABAQCdut7aOM5Zh16OJ+GOP75O7x5oyHKAiA1ieuySetj/hAq4VrAuZV5R2TypZJcKBaripOtTc/Sr0FOU4YvxUla40PPH8N1lbDp6Pnc4BexKsrt2kz++TqIKx5FHmUQV3mit16kxRwHey3dv030+qXBDo3WPQjm2+JLoq0XcadpnCAMCd3ChaBnDRM+51GZbuEFilpZsxUchUzl0gseC+shYOBd7TqxTlIhj/56d/YF1kq7RMZYrwBnyYdVhpLeUJCeYjyx/O6FPSezNTLiinz5jjioWZATgn+G8feL/hIsk8g+7JoIcb2muUlymdxs+8l2lS+8MXqT0q9ohT+Knhb2j"

CodeCommitにアクセスできるIAMの作成

AWS CONSOLEのIAMダッシュボードを開き、CodeCommitのアクセス権限を持つユーザーを登録します。

「アクセス許可」タブの管理ポリシーから「ポリシーのアタッチ」ボタンをクリックし、「AWSCodeCommitFullAccess」をアタッチします。

c12.png

c13.png

次に「認証情報」タブのAWS CodeCommitのSSHキーから「SSH公開キーのアップロード」ボタンをクリックし、先ほど作成した公開鍵を貼り付けます。

c09.png

c10.png

SSH公開キーが登録されるとSSHキーIDが発行されます。このSSHキーIDがWindowsからsshを使ってリポジトリへアクセスする際のユーザー名になります。

c11.png

接続確認

pagent.exe

pagent.exeを起動し、上記で作成した秘密鍵を登録します。
(pagent.exeはPuTTYに同梱されている認証エージェントプログラムです。)

pagent01.png

登録したらcloseボタンを押して画面を閉じます。(pagent自体はバックグラウンドで実行し続けます。)

pagent02.png

plink.exeで接続テスト

コマンドプロンプトを開き次のコマンドを実行して、このメッセージが表示されることを確認します。
<SSHキーID>には、IAMに割り当てられているSSHキーIDを指定します。

> plink.exe -ssh <SSHキーID>@git-codecommit.us-east-1.amazonaws.com
Using username "<SSHキーID>".
You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit. Interactive shells are not supported.FATAL ERROR: Server unexpectedly closed network
connection

CodeCommitにリポジトリを作成

CodeCommitのダッシュボードよりリポジトリを作成します。

CodeCommitが利用できるリージョンは"米国東部(バージニア北部)"になります。

c01.png

リポジトリの名前はmy_repo_demoとしました。

c03.png

リポジトリの名前をクリックするとコードの確認や設定が行えます。

c04.png

Code

c05.png

Settings

Default branchの欄が空欄になっていますが、作成したばかりのリポジトリにはmasterを含め1つもブランチはありません。

c06.png

Clone URLよりSSHのURLをコピーします。

c08.png

リポジトリで管理するJavaプロジェクトを作成

mavenでJavaプロジェクトのひな型を作成します。
今回はこれをそのままリポジトリへpushします。

> mvn archetype:generate -DgroupId=com.example.myrepodemo -DartifactId=my_repo_demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
> cd my_repo_demo
> mvn eclipse:eclipse

.gitignoreファイルを作成

プロジェクト内に.gitignoreファイルを作成しておきます。
とりあえず下記の内容で作成しました。

gitignore
/target/
/.classpath
/.project
/.settings/

git化

このプロジェクトのディレクトリGit Bashで開き以下のコマンドを実行してgit化します。

$ git init
Initialized empty Git repository in D:/dev/eclipse-jee-mars-1-workspace/my_repo_demo/.git/
$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .gitignore
        pom.xml
        src/

nothing added to commit but untracked files present (use "git add" to track)
$ git add .
$ git commit -m "first commit"
[master (root-commit) 0dc1248] first commit
 4 files changed, 173 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 pom.xml
 create mode 100644 src/main/java/com/example/myrepodemo/App.java
 create mode 100644 src/test/java/com/example/myrepodemo/AppTest.java

リモートリポジトリを確認します
リモートリポジトリはまだありません。

$ git remote -v

リモートリポジトリを作成します。

$ git remote add origin ssh://<SSHキーID>@git-codecommit.us-east-1.amazonaws.com/v1/repos/my_repo_demo
構文
git remote add <name> <url>
  • name : リモートリポジトリの短縮ショートカット
  • url : リモートリポジトリのURL

もう一度リモートリポジトリを確認します

$ git remote -v
origin  ssh://<SSHキーID>@git-codecommit.us-east-1.amazonaws.com/v1/repos/my_repo_demo (fetch)
origin  ssh://<SSHキーID>@git-codecommit.us-east-1.amazonaws.com/v1/repos/my_repo_demo (push)

ローカルリポジトリの内容をリモートリポジトリへプッシュします

$ git push -u origin master
Counting objects: 21, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (21/21), 2.76 KiB | 0 bytes/s, done.
Total 21 (delta 0), reused 0 (delta 0)
remote:
To ssh://<SSHキーID>@git-codecommit.us-east-1.amazonaws.com/v1/repos/my_repo_demo
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
構文
git push <remote> <branch>
  • remote : リモートリポジトリの短縮ショートカット名
  • branch : ローカルリポジトリのブランチ名

オプション -uについてはgit push -u オプションの意味

AWS CodeCommitのダッシュボードで確認

この時点でプロジェクトのソースコードがダッシュボードで確認できるようになっています。

c14.png

eclipseにプロジェクトをインポートする

eclipseを立ち上げ、"Add an existing local Git Repository to this view"をクリックしローカルリポジトリをインポートします。
なおeclipseから接続する際にも、pagentが起動している必要があります。

e01.png

上記で作成したローカルリポジトリの場所を指定します。

e02.png

インポート直後の状態です。

e09.png

eclipseからファイルを更新する

例としてプロジェクトにREADME.MDファイルを追加しました。
"Add to Index"、"Commit"後に"Push to Upstream"でCodeCommitのリポジトリへコミットをpushします。

e10.png

e11.png

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9