気ままなつぶやき

おべんきょしたこととか

【GitHubEnterprise】deploykeyを複数リポに適用

したかったの。。。

jenkinsサーバで、複数gitリポのビルドとかしたいし、
マルチプロジェクトだってあるし。。。

でもGitHubEnterpriseの仕様上できない。
お問い合わせしてみたけど、だめですた(つд⊂)エーン

なので、やりかたまとめ。

「project_Aとproject_Bというプロジェクトで、同じdeploy keyを使いたい場合」

1. 鍵を作成

#作る 自分のプロジェクトの名前をつけるとわかりやすいよ。
$ssh-keygen -t rsa -C project_A -f id_rsa_project_A
$ssh-keygen -t rsa -C project_B -f id_rsa_project_B

2.設定追加

#なかったら作ってね^^
$vim ~/.ssh/config
Host projectA.ghe.hogehoge.co.jp
    Hostname ghe.hogehoge.co.jp
    IdentityFile ~/.ssh/id_rsa_project_A
 
Host projectB.ghe.hogehoge.co.jp
    Hostname ghe.hogehoge.co.jp
    IdentityFile ~/.ssh/id_rsa_project_B
#権限変更
$chmod 600 config

こんなかんじ

3. リモートリポジトリの設定変更

##########################
# project_Aの設定
##########################
$cd ~/project_A
#今の設定をチェック
$ git remote -v
origin  git@ghe.hogehoge.co.jp:dummyorg/project_A.git (fetch)
origin  git@ghe.hogehoge.co.jp:dummyorg/project_A.git (push)
#変更
$git remote rm origin
$git remote add origin git@projectA.ghe.hogehoge.co.jp:dummyorg/projectA.git
#変更の確認
$ git remote -v
origin  git@projectA.ghe.hogehoge.co.jp:dummyorg/project_A.git (fetch)
origin  git@projectA.ghe.hogehoge.co.jp:dummyorg/project_A.git (push)
 
##########################
# project_Bの設定
##########################
$cd ~/project_B
#今の設定をチェック
$ git remote -v
origin  git@ghe.hogehoge.co.jp:dummyorg/project_B.git (fetch)
origin  git@ghe.hogehoge.co.jp:dummyorg/project_B.git (push)
#変更
$git remote rm origin
$git remote add origin git@projectB.ghe.hogehoge.co.jpdummyorg/projectB.git
#変更の確認
$ git remote -v
origin  git@projectB.ghe.hogehoge.co.jp:dummyorg/project_B.git (fetch)
origin  git@projectB.ghe.hogehoge.co.jp:dummyorg/project_B.git (push)

あとは鍵をGHEの対象レポのdeploy keyに設定すればOK。

【GitHub Enterpriseでやった失敗】 ダウングレードできないのね。。

ごめんなさーい(つд⊂)エーン

先日、GitHubEnterpriseの新しいバージョンが出て、
色んな機能が追加されたので、ウキウキでアップグレード(ΦωΦ)♪

GitHub Enterprise 11.10.310 Release · GitHub

いや、いつもはね。。VMWareのスナップショット取ったりしてからやるんだよ。ほんとに。。

でもなんか、色んな諸事情とかもあって、、、モゴモゴ・・・で
まあ、なんか駄目だったらダウングレードすればいいやー的にアップグレードしたわけでふ。

そしたら、ssh経由でpushができないというバグがあった。。orz.....

のーん(つд⊂)

まあ待て。。。落ち着け自分。。。的な感じで、バージョン下げようとしたら。。。
なんか、反映が進まないな。。

お問い合わせしてみたら、
「We don't really support downgrading to a previous version of GitHub Enterprise.」
的な何か返ってきた。

(;゚ロ゚)やばい。。。

ちょいちょいお問い合わせが来たので、これはやばいと、「GHEさんたっけてー」ボタンをぽち。

問い合わせページの
f:id:pnsk:20130509225159p:plain

このチェックボックス
f:id:pnsk:20130509225208p:plain

即レスしてくれますね。本当にありがたい。

「We're currently working on a patch release which should be available within the next several minutes that'll get this issue resolved」

several minutesってどんくらいやー(;゚ロ゚)

とかワタワタしてたら、すぐパッチあててくれますた

ほっ。。。(・-・)

はい。すみません。ほんとごめんなさい。
軽率でした。

もう言い逃れできない軽率な行動をとってしまいますた(つд⊂)


てか、GHEさんに感謝すぎて、

「I wish to express my deep gratitude to you for your help !!!!!!!!!!!!! 」

って返信してしまった(・-・)

それから悔い改め、いつも対応してくれるMikeに感謝もこめて、
bug報告をせっせこすることにしました。

Thanks, Mike!!! :)

もう二度とこんな軽率な行動はしませんと自戒の念もこめて。。

柔道で気をつけること

なんで柔道なんだ!?

って、私が柔道してたからなんだけど

昔のブログを読みあさっていたら見つけた。

新卒2年目の9月のブログ。



柔道で戦うときに、気をつけること。




相手と組むときに

『力を抜くこと』






必死な人ほど、手に力が入りがちだけど、ホントは、力を入れてはいけない。



力を入れてると、その力に邪魔されて、技をかかりにくくなる。






必要な瞬間に力を入れればそれでいい。








『顔をあげて相手をみること』




ちゃんと相手を見ないと相手の全体の動きがわからない。






相手をしっかり見えてないときはだいたい足元ばかりに目がいってる。




顔をあげて相手をみること。











とかなんとか。








初心にかえってみた


なるほどね。

柔道のときに教えられたことは、
仕事のときだって何だって一緒。

  • 肩の力を抜こう。いざってときに力を出せるように。
  • ちゃんと、相手(課題)をみよう。対処はそれからだ。そうじゃないと倒せない


また初心にかえってみた

How to switch over from CVS to Git.

Document is here. →cvs2svn: cvs2git Documentation

Requires..

U can see ... from this link.
cvs2svn: cvs2git Documentation

  • U can connect to CVS repo directly..( that is ... U execute on CVS sever...I think)
  • Python version 2.4 or later
  • git version 1.5.4.4 or later
  • others...(If U want to use --use-rcs option, U need co programing. And If --use-cvs option, cvs command is required.)

Hmm....〆(._.)memo.

#python :)
$python -V
Python 2.4.3
#git :)
$git --version
git version 1.7.11.3
#CVS :)
$cvs --v
Concurrent Versions System (CVS) 1.11.22 (client/server)
ry)
$svn --version
svn, バージョン 1.7.4 (r1295709)

Hmm,,,, It's probably ok(○゚ε゚○)

So many VCS ....git ,,,,cvs,,,,svn.....

get cvs2git

I did checkout from tigris's subversion repo, not download from download page.

$mkdir cvs2gitwork
$cd cvs2gitwork/
$svn co --username=guest --password="" http://cvs2svn.tigris.org/svn/cvs2svn/trunk cvs2svn-trunk
$ls
cvs2svn-trunk
$cd cvs2svn-trunk/
$ ls -l cvs2git 
-rwxr-xr-x 1 root root 2466  326 21:56 cvs2git

SWITCH OVER CVS to GIT

At first, stop cron backup jobs.

I did on CVS server.

$ cd /tmp
$ mkdir workcvs2git
$ cd workcvs2git

execute cvs2git command

I found "imai" project, probably created by Mr. Imai in my company.
So I used project for trial.

$ cvs2git  --encoding=utf_8 --encoding=shift_jis --blobfile=/tmp/workcvs2git/testblob.dat --dumpfile=/tmp/workcvs2git/testdump.dat --username=pnsk /usr/local/cvsrepo/imai

The statistics information is displayed as below and cvs2git job is completed.

cvs2svn Statistics:
------------------
Total CVS Files:                97
Total CVS Revisions:           104
Total CVS Branches:              0
Total CVS Tags:                  0
Total Unique Tags:               0
Total Unique Branches:           0
CVS Repos Size in KB:        18039
Total SVN Commits:               9
First Revision Date:    Mon Sep 10 18:37:06 2007
Last Revision Date:     Sat Nov 24 20:34:02 2007
------------------
Timings (seconds):
------------------
0.940   pass1    CollectRevsPass
0.007   pass2    CleanMetadataPass
0.004   pass3    CollateSymbolsPass
0.023   pass4    FilterSymbolsPass
0.014   pass5    SortRevisionSummaryPass
0.011   pass6    SortSymbolSummaryPass
0.018   pass7    InitializeChangesetsPass
0.012   pass8    BreakRevisionChangesetCyclesPass
0.012   pass9    RevisionTopologicalSortPass
0.006   pass10   BreakSymbolChangesetCyclesPass
0.011   pass11   BreakAllChangesetCyclesPass
0.011   pass12   TopologicalSortPass
0.023   pass13   CreateRevsPass
0.008   pass14   SortSymbolsPass
0.007   pass15   IndexSymbolsPass
0.017   pass16   OutputPass
1.123   total

Maybe I saw keyword "cvs2svn",,,,??? ( ゚д゚)
It's my imagination..(つд⊂)

create git repo

f:id:pnsk:20130329141523p:plain

U select "public" or "private", and NOT check "Initialize this repository with a README"

$ git clone git@xxx.xxx.xxx.xxx:pnsk/imai.git

Hmm,,, import dump files into git repo.

$cd imai

$cat /tmp/workcvs2git/testblob.dat /tmp/workcvs2git/testdump.dat  | /usr/local/git/bin/git fast-import

git-fast-import statistics:
---------------------------------------------------------------------
Alloc'd objects:       5000
Total objects:          170 (         1 duplicates                  )
      blobs  :          103 (         1 duplicates         55 deltas)
      trees  :           59 (         0 duplicates         21 deltas)
      commits:            8 (         0 duplicates          0 deltas)
      tags   :            0 (         0 duplicates          0 deltas)
Total branches:           1 (         1 loads     )
      marks:     1073741824 (       112 unique    )
      atoms:            117
Memory total:          2344 KiB
       pools:          2110 KiB
     objects:           234 KiB
---------------------------------------------------------------------
pack_report: getpagesize()            =       4096
pack_report: core.packedGitWindowSize = 1073741824
pack_report: core.packedGitLimit      = 8589934592
pack_report: pack_used_ctr            =          9
pack_report: pack_mmap_calls          =          2
pack_report: pack_open_windows        =          2 /          2
pack_report: pack_mapped              =   13318273 /   13318273
---------------------------------------------------------------------

push to GitHubEnterprise

#push!!!
$git push -u origin master
Counting objects: 170, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (73/73), done.
Writing objects: 100% (170/170), 12.70 MiB | 22.36 MiB/s, done.
Total 170 (delta 76), reused 170 (delta 76)
To git@xxx.xxx.xxx.xxx:pnsk/imai.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

Tips

NOT check "Initialize this repository with a README"

If U checked, when U execute following command

$cat /tmp/workcvs2git/testblob.dat /tmp/workcvs2git/testdump.dat  | /usr/local/git/bin/git fast-import

warning messages will be displayed as below.
warning: Not updating refs/heads/master

That is, Repo need empty.

encoding

When U execute cvs2git, if encoding options are insufficient,

error messages will be display..

ERROR: There were warnings converting author names and/or log messages
to Unicode (see messages above).  Please restart this pass
with one or more '--encoding' parameters or with
'--fallback-encoding'.

U have to add encoding options U need.

$cvs2git  --encoding=utf_8 --encoding=shift_jis  .....

Encoding lists is as follows.
7.8. codecs — Codec registry and base classes — Python v2.7.5 documentation

push tags and branches

$/usr/local/git/bin/git push --all origin
$/usr/local/git/bin/git push --tags origin

svnからGitHubEnterpriseに移行

〆(._.)メモメモ.

事前準備

svn2gitコマンドを使います
gem installでインストールできますた

$sudo gem install svn2git

いけた

カンタン

移行

project_BをsvnからGitHubEnterpriseに移動します。
|o゚д゚)なんでBやねんって、、、さっきAはやっちゃったから。。。

GHE側の準備

GitHubEnterprise上でorganization作る

やり方は割愛。
画面からぽっちぽっち作れるよ。

organizationを作ったら、必要なメンバーをいれておきましょう。

作ったorganization配下にリポジトリを作る

画像は、初期化しちゃってるけど、初期化しないでー

ぽっちぽっちで作れるからほぼ割愛
f:id:pnsk:20130227194210p:plain

できた
f:id:pnsk:20130227195143p:plain

svnのプロジェクトをgit用の形に変換

最初にインストールした、svn2gitを使いますよ

適当なサーバで、作業ディレクトリとか切ってやりましょう

#プロジェクトのディレクトリを作る
$mkdir project_B
$ cd project_B

変換のコマンドはこんな感じ

$svn2git -v --trunk ${TRUNK_DIRECTORY} --branches ${BRANCHES_DIRECTORY} --tags ${TAGS_DIRECTORY} http://${SVN_IP}/svn/${REPISITORY_NAME}/${PROJECT_NAME}

今回は、
http://xxx.xxx.xxx.xxx/svn/test_svn2git/project_B
を移行したくて、
プロジェクト構成は、project_Bの下に、trunk,branches,tagsがあるので

$svn2git -v --trunk trunk--branches branches --tags tags http://${SVN_IP}/svn/test_svn2git/project_B
#.gitができていることが確認でいる
$ cd project_B
$ ls -a | grep .git
.git

GHEにpushするお

$ git remote add origin http://gheのIP/organazationの名前/NEW_REPOSITORY.git
$ git branch -a
#GHE側で初期化しちゃった場合は、「おまけ」参照
$ git push --all origin 
$ git push --tags  origin

確認

GHEで正常にpushされてるか確認
cloneできるか確認 git clone http://gheのIP/organazationの名前/NEW_REPOSITORY.git

おまけ

#GHE側で初期化しちゃった場合は、-f が必要
$ git push -f --all --progress origin 
$ git push --tags --progress origin

【GitHub Enterpriseでやった失敗】rootディレクトリが足りない...

|o゚д゚)< だって、、、だってだって。。。

(つд⊂)エーン

という嘆きはさておき。。

どんくらい足りないか

こんな感じ。。

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/enterprise--11-root
                      7.6G  4.6G  2.7G  64% /
udev                  4.0G   12K  4.0G   1% /dev
tmpfs                 1.6G  344K  1.6G   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                  4.0G     0  4.0G   0% /run/shm
/dev/sda1             228M   66M  151M  31% /boot
/dev/sdb              1.5T   42M  1.5T   1% /data/repositories

7Gちょいしかrootディレクトリがありましぇん。

よくみたらヘッダー部分に60%だよって書いてる。
f:id:pnsk:20130215182702p:plain


けど一番困ったのは、アップグレードできない。。(つд⊂)エーン
f:id:pnsk:20130215182615p:plain


てかここでいってた。
知らないと残念過ぎるGitHubの新機能とグリー・DeNA・クックパッド・はてな・ペパボ・ドリコムの活用事例~GitHub:E Casual Talkレポート | イベントカレンダー+ログ

魔法のコマンドを使う

#魔法のコマンド ghe-grow-root
$ ghe-grow-root -d /dev/sda6
 --> Creating /dev/sda6 partition...
 --> Creating physical volume for /dev/sda6...
  Physical volume "/dev/sda6" successfully created
 --> Extending logical volume group...
  Volume group "enterprise-11" successfully extended
  Extending logical volume root to 72.75 GiB
  Logical volume root successfully resized
 --> Growing filesystem. This may take a few minutes...
resize2fs 1.41.14 (22-Dec-2010)
Filesystem at /dev/enterprise-11/root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 5
Performing an on-line resize of /dev/enterprise-11/root to 19072000 (4k) blocks.
The filesystem on /dev/enterprise-11/root is now 19072000 blocks long.

パーティション切って、勝手に容量割り当ててくれた。

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/enterprise--11-root
                       72G  4.6G   64G   7% /
udev                  4.0G   12K  4.0G   1% /dev
tmpfs                 1.6G  348K  1.6G   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                  4.0G     0  4.0G   0% /run/shm
/dev/sda1             228M   66M  151M  31% /boot
/dev/sdb              1.5T   62M  1.5T   1% /data/repositories

てか、GHEからもらったイメージファイルの時点で
すでにほとんど足りないから、最初からある程度確保してくれたらいいのに。。。。

【gitlab】502 Bad Gateway

minifyしたJSファイルをアップしたら
502 Bad Gatewayが表示されてファイルがみれないんですけど
ってお問い合わせきた。。。

なんかここに答えがのってたよ!!ありがたい
Google Groups

結果、

$ pwd
${GITLAB_HOME}/config
$cp unicorn.rb unicorn.rb.20130316
$vim unicorn.rb
#30になってたので、上記のURL通り120に変えてみた
timeout 120

あとはgitlabを再起動したら表示されたー。

よかった。すぐ解決して。。

追記

バックアップの日付まちがえてた(;゚ロ゚)ハッ