気ままなつぶやき

おべんきょしたこととか

【読書】プロダクティブ・プログラマ 〜技法編〜

読書のまとめ。

プロダクティブ・プログラマ -プログラマのための生産性向上術 (THEORY/IN/PRACTICE)

少し古い本だけど、何か参考になるものもあるだろうと読んでみますた。

はじめに

この本は何を目的とした本か?
プログラマの生産性を向上するための本」。

「生産性」とは、一定の時間にできる仕事、もしくはあげられる成果のこと
※本書の冒頭より引用


この本は2つの節に分けられる。

1.技法編(生産向上の原理)
2. 実践編(生産性向上の哲学)

まとめてたら結構長いので今回は、技法編。

技法編では、主に下記の4つの原則に沿って説明がされる

プログラマの生産性に関わる4つの原則

  • 加速
  • 集中
  • 自動化
  • 正準化

情報が古い部分が多いので、
とても個人的な見解を織り交ぜて、気に入った部分だけをピックアップしますた

あとmacしか使ってないから基本windowsについての記述はスキップしてまふ

加速

自分のPCで利用しているアプリケーションは、必要最低限にしましょう。
同じようなアプリは複数いらない。使うアプリを探す分だけ時間が無駄。

pushdコマンドとpopdコマンド

ディレクトリの移動に便利だと記述があった。
わたしはcdコマンドで十分かな。。。と思ってるけど
このコマンド知らなかったので.....φ(゚-゚=)メモニャン

コマンド自体はcdコマンドと同じようなもん。

ただ、これらのコマンドはカレントディレクトリを内部スタックに
保存するので、ディレクトリ移動を記録できて便利。

試してみる(σ_σ)ゞ


pushdコマンドでディレクトリ移動。
移動したカレントディレクトリがたまっていくのがわかる

$ pushd Documents/
~/Documents ~ ~
$ pushd workspace/
~/Documents/workspace ~/Documents ~ ~
$ pwd
/Users/pnsk/Documents/workspace

この時点で、「~/Documents/workspace ~/Documents ~ ~」こんだけたまっている

popdしていく。

$ popd
~/Documents ~ ~
$ pwd
/Users/pnsk/Documents
$ popd
~ ~
$ pwd
/Users/pnsk

スタックにたまっていたカレントディレクトリ情報が、最後「~~」になったらおしまい。

ほうほう。面白い。

ただ、1つ前のカレントディレクトリに戻るんであればcdコマンドで可能だからこっちでいいかも。

$cd -

IDE

eclipseintellijのショートカットキーを覚えるだけじゃなくて
よく利用するものはテンプレートにしておくこと。

ファイルの検索→クラス名の場合は大文字の部分を並べるだけで良い
ShoppingCartMemento であればSCM

試してみた(゜∀゜)

f:id:pnsk:20121202232258p:plain

集中(なんか途中から加速について記述している希ガス

気が散るのを最大限防ぐ
ヘッドホンとか良い。
音楽はきかなくてもよくて、見た目に話しかけにくくしておくことが重要。

ω・*) < 音楽聞いてるふりしても余裕で話しかけられる気がするけど。。


不要な通知のオフも大切
ω・*) < skypeとかオフっちゃえ

時間を決めて、沈黙の時間をつくる

検索の効率化的なお話

ファイル名にメタ情報をいれる(何のプロジェクトかetc.)

正規表現とfindコマンドを駆使すると色々便利

ローカルPCにある、よくアクセスするディレクトリをルートビューに設定すると
階層を辿っていかなくても簡単にアクセスできる。

[書類]>[ブログネタ]をルートビューにもってきてみた
f:id:pnsk:20121203000744p:plain:w250

こんな感じ。
f:id:pnsk:20121203000751p:plain:w250
もとのディレクトリが移動しているわけではなく、ショートカットを作成しただけ。

プロジェクト関連のまとめ

プロジェクトのファイルを、ショートカットを使って一箇所のディレクトリにまとめる

これいい。

macのマルチデスクトップ

macのマルチデスクトップを利用するときは、そのデスクトップ毎に用途を明確にする

  • コミュニケーション用
  • ドキュメント用
  • コーディング用

とか

自動化

小さなExcel作業もrubyなどでスクリプトを書いて、作業をより簡単にすること

よくアクセスするWebページのローカルキャッシュをとっておく事
これによりネットアクセスの時間ロスをふせぐ事ができる

これ、コンフル(商用wiki)の特定ページとかにしぼると役立ちそうかも。

どこまで自動化すべきか

2回以上繰り返す作業については自動化を検討する
ただし、自動化が妥当かの判断をする時間を作る必要がある

自動化に膨大なコストがかかるのであればそれはすべきではない

正準化

「正準化」:重複した余分なものを省いて単純化すること

ビルドマシンの正準化

たとえ一人しか開発者がいなくても
ローカルビルドなどは行ってはいけないよっ

個人の開発ツールに依存してしまうから
jenkinsなどの継続的インテグレーションサーバを利用しよう

技法編のNOTE

キーポイントが所々で示されているので気に入ったやつだけ。

「段取りではなく本質に注力せよ」

「単純作業の繰り返しは、知力と集中力を奪う」

「ドキュメントは「生きた状態」に保つ」



だいたいそんな感じかな。
全体感、とっても読みやすくてさらさら読めまふ (。◕ ∀ ◕。)

情報が古い物が結構あるけど、まあ、考え方を参考にする感じ。

【maven】nexusのLDAP認証

ω・`)

最近、読んだ本のまとめばっかりだった希ガス
まだ途中のものばかりで公開していないけどw


LDAP認証の設定方法について。

以前はnexusのアカウント管理を、
nexus側でしていたんだけど、利用者も増え、いちいちアカウントを作成するのが
めんどうになってきたのでLDAPで管理するようにしました。

ただ、LDAPのユーザ全員が操作できるわけでなく、利用者をディベロッパーに制限した。

LDAP認証の設定自体はすんなりいくと特段難しい事はないんだけど
エラーメッセージが不親切なのでつまずくとうっとおしかったなぁ・・・(´*ω*`)。


LDAPの設定

ここでLDAPの設定をする。
これをしないと話にならぬ。

管理ユーザでログインして、Security項目のLDAP Configurationをクリックすると
LDAPの設定ページが表示される
f:id:pnsk:20121130092208p:plain

設定内容は、
1. LDAPサーバへのコネクションの設定
2. ユーザのマッピングの設定
3. グループのマッピングの設定(この設定は、必須ではない)

って大きくこんな感じ。

1. LDAPサーバへのコネクションの設定

f:id:pnsk:20121130092514p:plain

hostnameにはIP直接入れた。ホスト名でもよい
portはldapのデフォポート:389
別のポートで設定されている場合は、それを指定すればよい

「Search Base」は、ユーザやグループのマッピングの設定をするときの
ルートディレクトリを設定している。


【Check Authentication】ボタンで設定が間違えていないかチェックできちゃう
f:id:pnsk:20121130092746p:plain

2. ユーザのマッピングの設定

LDAPのユーザ情報を取得しまふ。
f:id:pnsk:20121130093108p:plain

Base DNにou={organization unit}と書いているけれど{}の部分は任意のouの値を入れる
ここでBase DNは、さっき指定したSearch Baseより下層部のディレクトリである必要がある

ObjectClassやUser Id属性、RealName属性は、ldap情報から利用したい属性を使う。
ObjectClassは属性の集合体を表す。利用したいldapの集合体を指定してやれば、
その集合体に属するldapのユーザ情報とマッピングが可能になる。

userIdはuidだろうがcnだろうが何を指定しても実はかまわない。
ただし、これがnexusにログインする際のidになるので適切なものを指定する必要がある。
※uidが妥当かなー。

RealName属性は、そのままで「実名」。
nexusでユーザ情報一覧を表示したときに、表示される単なる個人名。
これも個人が特定できるものであれば、適切なものを指定すればいい。

どの値を指定するかは、自分の利用しているldapの情報をldapsearchコマンドなどで確認すると良い。
こんな感じでコマンドたたくとuid=pnskのldap情報が取得できマフ。
ldapのクライアントをインストールしている場合

$ ldapsearch -x -h xxx.xxx.xxx.xxx "uid=pnsk"

xxx.xxx.xxx.xxxはLDAPサーバのIPを指定してくらさい

3. グループのマッピングの設定

f:id:pnsk:20121201135234p:plain

これは、任意のグループにのみ、nexusの権限とマッピングしたいので設定した。

groupId属性は、任意のグループのIdを示すもの(例:gidとか)。
groupMember属性は、任意のグループのユーザを示す。
Group Member Formatは、今回はcnがdeveloperだけに権限を付与したいため固定値とした。

権限(role)のマッピング

roleの作成

ldapのグループと、nexusの権限のマッピングを作成する
上述したグループのマッピング設定のdeveloperとマッピング。

Security項目のRolesを選択する
f:id:pnsk:20121130092208p:plain

[Add]>[External Role Mapping]をクリックする
f:id:pnsk:20121202134919p:plain

マッピングを作成するポップアップが出るので
RealmにLDAPを指定し、RoleでマッピングしたいLDAPのグループを選択する。
今回は、developerになる(※上記で設定したやつ)
f:id:pnsk:20121202135208p:plain

以下で新規作成。
f:id:pnsk:20121202135855p:plain

今回はLDAPアカウントのdevelopersに属するユーザにnexusの下記の2つの権限を与えた。

  • 「Deployment and Artifact Upload Role」
  • 「Repo: All Repositories (except delete operation)」

どっちもカスタマイズした権限だよ(。´・ε・`。)

これで設定完了。

LDAPに登録しているユーザであれば、
nexusにログインできて、artifactのアップロードとかができるようになったよ(・ε・)

【LACIE】認識されなくなった

appleショップでゲットしたUSB

LaCie

完全に見た目で買ったんだけど、

なんか最近、認識されなくなった。。

てゆうか、finderに表示されない。。
f:id:pnsk:20121114165853p:plain

※たぶんFUSE for OS X入れたせいだと思うんだけど。。

dfコマンドだといる。

/dev/disk1s1      7877504  7839184     38320   100%    /Volumes/LA-PUBLIC

えー(;´Д`)

$ diskutil info /Volumes/LA-PUBLIC

~ ry)

   Mounted:                  Yes
   Mount Point:              /Volumes/LA-PUBLIC
   Escaped with Unicode:     /Volumes/LA-PUBLIC

~ry)

ひとまず、PUBLIC領域はmountされているね。

PRIVATE領域をみたいので、こっちをマウントする必要があるっぽい

PRIVATE領域をマウント

直接シェルをたたいた。(力技。。)

$ pwd
/Volumes/LA-PUBLIC/Open-La-Private.app/Contents/MacOS
$ ls
LaPrivate		startLaPrivate.sh
$sh startLaPrivate.sh

パスワードを入力する画面が表示された。
f:id:pnsk:20121114180149p:plain

きたきた。
f:id:pnsk:20121114172023p:plain

これで、ひとまず普通にデータが見れます。

ちなみにこんな感じになってる。

$df -h

~ry)

/dev/disk1s1     3.8Gi  3.7Gi   19Mi   100%    /Volumes/LA-PUBLIC
LaPrivate@fuse0    0Bi    0Bi    0Bi   100%    /private/var/folders/s_/65ngfccj5xx01tm4m10l2g6h0000gp/T/.truecrypt_aux_mnt1
/dev/disk2       3.5Gi  1.8Gi  1.7Gi    51%    /Volumes/LA-PRIVATE

取り外す

$ diskutil unmount  /Volumes/LA-PRIVATE
$df -h

~ ry)

/dev/disk1s1    3.8Gi  3.7Gi   19Mi   100%    /Volumes/LA-PUBLIC

PRIVATEいなくなったー。

$ diskutil unmount /Volumes/LA-PUBLIC
Volume LA-PUBLIC on disk1s1 failed to unmount

ぐぐぐ。。。
diskutil以外にも、hdiutilとかでやってみたり、、、detachやってみたりしたけど
いけず。。。

$ diskutil unmount force /Volumes/LA-PUBLIC

いけた。


ああああ。。。


もっと良き方法があると思うんで追って追記しまふ。。。

github (business)ってどうなんだろ的なお話

「今時githubでしょ」って言われる今日このごろ。
果たしてどれだけの人が・・・(ry

(。´-ε-`。)モゴモゴ


って思ってるけど真剣に考えたことないから。
本当に、プロジェクトにgitを導入していきたいなら
もう少し、管理する側もしっかり理解して「導入を進める」ということを
していかなきゃなあと一人で自分のお尻をぺんぺん叩いてみた

|゚Д゚)))コソーリ


以前、試験的にGithubEnterprise(GHE)を導入してみたけど高価すぎたw

  • 社内運用
  • LDAP認証連携

とかメリットがあったのだけど。。。


ついでに、「git使ってみたい」要望が高かった時期に
gitlabっていうgithubのクローンも立ててみたんだけど
ちらほら利用されている程度かな。

「勝手に使っていいよ」スタンスで公開しちゃったのがいかんかったか。。

ω・`)コソ

ちなみにgitlabはプロジェクトで使うのにはいいけど、
リポの参照も管理者が承認しないとできないのでソーシャルコーディングには向いていないかと。。
元々用途がちがうのね。

さてさて。

privateリポを利用しようと思ったら有料版を使う必要がある
GitHub · Build software better, together.

下記、いいとこと微妙なところのまとめ。

github businessのいいとこ(・∀・)

githubの機能がまんまプライベイトで使えるよ
てこと。

  • Issue機能
  • wiki
  • pull request
  • Gist:ちょろっとしたスクリプト管理に利用できる(。´・ε・`。)♪
  • watchできる
  • graph化:リポジトリのアクティビティがグラフ化されている
  • 画像の差分がみれる:デザインチェックに使える?(。´・ε・`。)

しっかり利用するなら、プロジェクト開発において大きなメリットになる。

※GHEでも同じ昨日あるお

github businessの微妙なとこ(;´Д⊂)


外部にgithubがある

素人目だけど、これは個人的には・・・|д゚)
特に、規模のある程度大きな組織においては。。

追記
Secrets in the code · GitHub
private/publicを誤ったものとかが、検索でひっかかっちゃったりすることがあるみたいですね。。
ページ自体はみれなくとも。。。

「組織のプロダクト(リポ)を社外に置いている」ていうのは、許容したとして、

アカウントの管理が大変そう。

退社した人とか、諸々。。

あとは、githubが落ちたりメンテしてたら、機能自体が使えない。。
エンジニアだけが利用するとしたら、直接使ってね♪で良さそうだけど
フロントサイドの人にはきついんじゃないかなー。

あと、さっき、プロダクトを社外に置いているを許容したとして、
プロダクトの中に、ユーザデータにアクセスするための情報(DBのIP,ID/PWとか。。)が
ソースコードの中に含まれていた場合、ちょっと微妙だな。。。。

その辺の整備をしてから利用するようにする必要があるかな。


むずかし。(。´-ε-`。)

全体感

メリット デメリット
GHE セキュリティ(LDAP認証、社内NW) ,UI(githubと同じなので使いやすい) 高価(年間1ユーザおよそ2万円弱)
github business 安め , UI(github public と同じなので使いやすい) セキュリティ(LDAP連携できない。社外) ,アカウントの管理、githubのメンテナンスに引っ張られる
clone (gitorious, gitlab, etc.) セキュリティ(LDAP,社内NW) UI(cloneといえど、独自のUI)  運用大変すぐる(特にアップデートとか)。


セキュリティ考えると、GHEかcloneかな。
UIでいうならGHEかgithub businessが優勢っぽい。

追記

結局GHEの導入におちついた。

【svn】リポジトリフック 〜pre-commit〜

どこにでも書いてるけど、自分めも。

svnredmineで連携して、
コミットメッセージの中にredmineのチケット番号が入ってなかったら
コミットできないようにしたい

ていう要望がありますた。

よくある話だけど、今回は、
1つのリポジトリの中の任意のプロジェクトだけコミットフックを適用したい
ってやつ。

今回はredmineとの連携はさておき、イラネッ(゚Д゚=)ノ⌒゚
同リポ内でコミットの制御を色々実験してみたー。

いつもお世話になっているこの本を参考にしてます(о´▽`о)♪
実用 Subversion 第2版

下準備

testリポジトリの下に、

  • svn_test:特に制限なく利用が可能になる
  • svn_hook_test:fileディレクトリ配下は、キーワード「pnsk」をコミットメッセージにつけないとエラー

という2つのプロジェクトを作成する。

プロジェクトのコミット

自分のローカルPCでテスト用プロジェクトを作成して
リモートsvnにコミットー。

こんな感じで。。

$mkdir svn_hook_test
$cd svn_hook_test
$mkdir file
$vim test.txt
(編集)
$svn import svn_hook_test http://svn.pnsk.jp/svn/test/svn_hook_test -m "first commit."

リモートリポにsvn_hook_testにimportしただけだと
手元にあるローカルのsvn_hook_testはバージョン管理されないのでチェックアウトし直す

$rm -r svn_hook_test
$svn co http://svn.pnsk.jp/svn/test/svn_hook_test/

あい。svn_testも同様にして準備おk

svnのフックスクリプト

準備ができたので、リモートsvnサーバでフックスクリプトを作成する

svnのフックスクリプトは

${SVN_HOME}/repos/test/hooks

にある

テンプレートが色々あるお

$ ls
post-commit.tmpl          post-unlock.tmpl  pre-revprop-change.tmpl
post-lock.tmpl            pre-commit.tmpl   pre-unlock.tmpl
post-revprop-change.tmpl  pre-lock.tmpl     start-commit.tmpl

今回使いたいのは、pre-commitフック。

pre-commit

コミット完了直前に一行されるフックスクリプト。
コミットの内容などから、コミット制御ができる。

pre-commitの作成

テンプレートをコピーして実行権限を追加

$cp pre-commit.tmpl pre-commit
$ chmod +x pre-commit
$ls  -l pre-commit
-rwxr-xr-x 1 svn svn 3436 112 11:25 pre-commit

pre-commitは引数で

リポジトリのパス
・コミットトランザクションの番号

がゲットできるので、それをつかって、svnlookコマンドでごにょごにょしまふ

svnlookコマンド

リポジトリ内の、リビジョンやトランザクションの確認をするためのコマンド
今回使うのはトランザクション周りのコマンド(-tを使う)。


文法的にはこんな感じ

$svnlook dirs-changed -t [トランザクション番号] [リポジトリのパス]

例えば、svn_hook_test/file/test.txtを修正、コミットすると
変更されたディレクトリはsvn_hook_test/file/となる。

このコマンドは、
コミットログの制御を適用するプロジェクトをハンドリングするために使う


  • 変更のあったコミットの、コミットメッセージの取得
$svnlook log -t [トランザクション番号]

コミットメッセージの内容が取得できる

フックスクリプト

svn_hook_testプロジェクトのfilerディレクトリに配下のコミットについてのみ
コミットログに"pnsk"というキーワードを入れないとエラーを返すようにする

#!/bin/sh

#-----------------------------------------
# SVN PARAMETERS
#-----------------------------------------
REPOS="$1"
TXN="$2"

#-----------------------------------------
# COMMAND
#-----------------------------------------
SVNLOOK=/usr/local/svn/bin/svnlook
CHANGED_DIRS=`${SVNLOOK} dirs-changed -t "${TXN}" "${REPOS}"`
COMMIT_LOG=`${SVNLOOK} log -t "${TXN}" "${REPOS}"`
CHECK_DIR="^svn_hook_test/file"
KEYWORD="pnsk"

#-----------------------------------------
# CHECK COMMIT_MESSAGE in CHECK_DIR
#-----------------------------------------
if echo ${CHANGED_DIRS} | grep "${CHECK_DIR}" > /dev/null
then
        if !(echo ${COMMIT_LOG} | grep ${KEYWORD} > /dev/null)
        then
                 echo -e "you need keyword" ${KEYWORD} > &2
                 exit 1
        fi
fi
exit 0

動作テスト

自分のPCからリモートsvnリポジトリへの動作確認

同リポ内のsvn_testプロジェクト

キーワードのチェックはないので、正常にコミットできる

$ pwd
{LOCAL_HOME}/workspace/direct/svn_test
$ vim file/test.txt 
$ svn commit -m "test"
Sending        file/test.txt
Transmitting file data .
Committed revision 53.

svn_hook_testプロジェクトのnot_hook_fileディレクトリ

キーワードのチェックはないので、正常にコミットできる

$ pwd
{LOCAL_HOME}/workspace/direct/svn_hook_test
$ vim not_hook_file/test.txt 
$ svn commit -m "test"
Sending        not_hook_file/test.txt
Transmitting file data .
Committed revision 52.

pnskキーワードをコミットログに入れなくてもコミットでけた

svn_hook_testプロジェクトのfileディレクトリ

  • コミットログにpnskキーワードを入れた場合
$ pwd
{LOCAL_HOME}/workspace/direct/svn_hook_test
$ vim file/test.txt 
$ svn commit -m "test pnsk"
Sending        file/test.txt
Transmitting file data .
Committed revision 51.
  • コミットログにpnskキーワードを入れなかった場合
$ svn commit -m "test "
Sending        file/test.txt
Transmitting file data .svn: Commit failed (details follow):
svn: Commit blocked by pre-commit hook (exit code 1) with output:
you need keyword pnsk

エラーになった



今日はここまで。


ちゃんちゃん

gpgコマンドめも

gpgコマンドまわりのめも。

GPGのツールとかあるけど、
GPG Keychain Access | GPGTools (OpenPGP Tools for Apple OS X)

mac使ってるなら、コマンドベースの方がよっぽど楽なわたし。
好みの問題だけど(○´ω`○)ゞ

俄然、本家のページが参考になる。
http://www.gnupg.org/documentation/manuals/gnupg.pdf

gpgコマンド

macもともとgpgコマンドはいってるお

わたしのはこんな感じ

$ gpg --version
gpg (GnuPG) 1.4.9

公開鍵と秘密鍵の生成

鍵のペアを作成する

$gpg --gen-key

.gnupgディレクトリ配下に
pubring.gpg(公開鍵)とsecring.gpg(秘密鍵)ができる

楽勝(v´∀`)ハ(´∀`v)ヤッタネ☆

なんかメッセージできてた。
Note that this key cannot be used for encryption. You may want to use
the command "--edit-key" to generate a subkey for this purpose.

subkeyを作らないと、暗号化とか複合化できないよ!!的なこといってる。
このメッセージ、実際無視してやり続けたらできなかった(○゚ε゚○)プッ

subkeyつくるよ。
鍵の種類はRSA(暗号化のみ)

$gpg --edit-key [key]

>addkey

---(ry

ご希望の鍵の種類を選択してください:
   (2) DSA (署名のみ)
   (4) Elgamal (暗号化のみ)
   (5) RSA (署名のみ)
   (6) RSA (暗号化のみ)
選択は? 6

---(ry


あい。こんな感じでできました。

$gpg --list-public-keys

これで確認できる。

配布用公開鍵

$gpg -a --export [ユーザ名] > [ユーザ名].asc

秘密鍵のバックアップ

$gpg --export-secret-key -a [ユーザ名] > [ユーザ名]_sec_bak.asc

公開鍵のインポート

自分のナイショファイルを、pgpで公開したい場合は、
その人の公開鍵をインポートする必要がある

$gpg --import [インポートしたい人の公開鍵]

登録した公開鍵の確認

$gpg --list-public-keys

テスト

テストファイルを暗号化して、複合化する。
自分のアカウントでも確認できる

テストファイル作成

$ vim test.txt

内容はこんな感じ

(o゚ロ゚)ノ

暗号化

 $gpg -r [ナイショファイルを見せていい人のuid] -e test.txt

uidは、

$gpg --list-public-keys

で確認できるよ

複合化

$gpg -d test.txt.gpg

コンソール上にでるので、ファイルにしたい場合は、

$gpg -d --output [出力ファイル名] test.txt.gpg

ちゃんちゃん。

                            • -

追記

gpgのコマンドもマスターして、
これでいくらでも暗号化してこーいヾ(○⌒∇⌒○)ノ
て、某アカウント発行の依頼をしたんだけど、

「gpgの設定めんどくさいだろうとおもったので、渡しにきました!!!」

って、善意丸出しの新卒の子にパスワードを手渡しされますた。。。


・・・・ (´・ω・`)

【maven】nexusの移行

(*゚▽゚)ノちゃお♪

今回は、まるっとnexus移行のお話。
Sonatype.org: Nexus

今まで使ってたnexus1.8.0のサーバ容量が厳しくなってきたのでサーバ移設。
nexusもバージョンアップして、nexus2.0.6になりますた。

データの移行

artifactとかまるっと持っていきたかったので、この2つだけrsyncすればいいとおもう。

sonatype-work/nexus/proxy
sonatype-work/nexus/storage

sonatype-work/nexus/indexer配下も必要かと思ったけど、結局Repair Indexしたから意味がなかった
※Repair Indexの方法↓
How do I repair a repository index in Nexus? : Sonatype Support
これしないとartifact検索が機能してくれない。

3rdパーティのプロキシ

3rdパーティのリポジトリurlを登録してたけど、これは、手動で設定追加。

3rdパーティのリポジトリの設定は、
sonatype-work/nexus/conf/nexus.xml
に書いてあるんだけど、
今回はバージョンが異なるnexus間の移行だったので、設定ファイル周りは基本的には手動にした

・゜・(/Д`)・゜・。

ユーザアカウント

ユーザアカウントは2種類

  • 個人アカウント
  • プロジェクト単位アカウント

個人アカウントはLDAP連携なのでおいておいて、
プロジェクト単位アカウント(ビルドサーバとかで使うやつ)は、発行してます。

今回はやっぱりバージョン違いでコピーってわけにはいかない。
とはいえ、プロジェクト単位でパスワードもう一度発行するのは
プロジェクト担当者との調整の方がめんどくさいw

ユーザ情報は下記のxmlで管理されている。

sonatype-work/nexus/conf/security.xml

バージョン違いで微妙にxmlの構成が違うので
ID/PWだけそのままコピってもってきちゃった。てへぺろ

設定変更を反映させるには、nexus再起動してくらさい。

動作確認

jenkins経由、ローカル経由で確認。
.m2配下のライブラリを削除して、向き先変更してライブラリがちゃんとダウンロードできるか確認
プロジェクトアカウントでちゃんとアップロードできるか確認

そんな感じですた。ちゃんちゃん♪