ãã©ã³ã¹ã§ããªãã¤ãSIMãè²·ã£ã¦ã¿ã
æè¿ã¯æè¡ãã¿ã¯Qiitaに書いているã®ã§ããã¾ã«ã¯ãã¡ãã«ãæ稿ã§ãã
ReactEurope 2016ã«åå
ããä¸å¹´åãããã¯React.jsã使ã£ã¦ããé¢ä¿ããã6æã®é ã«ReactEurope 2016ã¨ããã«ã³ãã¡ã¬ã³ã¹ã«åå ãã¦ãã¾ãããå ´æã¯ãã©ã³ã¹ã®ããªã§ããReactEuropeã¯å»å¹´ããå§ã¾ãä»å¹´ã§2åç®ã®éå¬ã§ãæ¥å¹´ãããã¨ã®ãã¨ãReact.jsèªä½ã¯ãã大åæ¯ãã¦ãã¦ãã¦ä½ã大ããªå¤åã¯ãªãã®ã§ãä»åã®ã«ã³ãã¡ã¬ã³ã¹ã¯å¨è¾ºã®æè¡è¦ç´ ãã¡ã¤ã³ã¨ããæãã§ãããã»ãã·ã§ã³å 容㯠ReduxãReact NativeãGraphQLã®ãã¼ãã®ãã®ãå¤ãã£ãã§ããåã»ãã·ã§ã³ã®åç»ãYouTubeã§å ¬éããã¦ããã®ã§èå³ã®ããæ¹ã¯æ¯éè¦ã¦ã¿ã¦ãã ããã
ããªãã¤ãSIMè³¼å ¥
ãã¦ãã¿ã¤ãã«ã«ããéãæ¬é¡ã«å ¥ãã¾ãããä»ã®æ代ã¯ãããã使ããã¨è²ã ã¨ä¾¿å©ãªã®ã§ãã©ã³ã¹ç¾å°ã®ããªãã¤ãSIMãè²·ã£ã¦ä½¿ã£ã¦ã¿ã¾ãããä¸åº¦ä»ä½¿ã£ã¦ããã¹ãã¼ããã©ã³ãNexus5ãªã®ã§ãç¹ã«ä½ãããã«SIMãå·®ãæ¿ããã ãã§ä½¿ããã¨ãã§ãã¾ãã
ããã©ã³ã¹ SIMããªã©ã§ã°ã°ãã¨ãå¹¾ã¤ã使ã£ã¦ã¿ãã¬ãã¼ãã®è¨äºãè¦ã¤ããã¾ãã
- 仏最大手「Orange」のSIMカードを簡単にゲットして使えるようにする方法 - GIGAZINE
- フランスでプリペイドSIMを使う その1: 情報収集 | メモ置場のブログ
- 30ユーロで50GBの無制限高速通信。新興キャリア『Free』に見るフランスのプリペイドSIM事情:週刊モバイル通信 石野純也 - Engadget Japanese
äºåã«ãããããã£ã¨è¦ã¦ä½¿ãSIMã決ãã¦ããã¾ãããæ大æã¯Orangeã¨ããä¼ç¤¾ã®ããã§ãããç´30ã¦ã¼ãã§50GBã使ããã¨ãã4çªæã®Free Mobile ã«ãã¦ã¿ã¾ãããããããã¦ç¾å°ã§ npm install ã§æ°ç¾MBã®ãã¦ã³ãã¼ããããæããããã®ã§ãããã ã使ããã¨å®å¿ã§ã!!
ãã¦ãFree Mobile ã®ç¹å¾´ã¨ãã¦èªè²©æ©ã§è²·ããã¨ããã®ãä»ç¤¾ã¨æ¯ã¹ã¦ã¦ãã¼ã¯ãªç¹ã§ããâãããªãã¤ã§ããè±èªããã©ã³ã¹èªã話ãå¿
è¦ãªãè²·ãã¡ããã¾ããæ
è¡å®¢ã«ããã¿ãªãCDG空港ã«ãããã¨ãã«å£²ããªæ°ããããã ãã©ãªãããªãã
äºå調æ»ã«ããã¨
- è¨ç½®å ´æãéããã¦ãã
- è±èªã®ã¡ãã¥ã¼ããªããã©ã³ã¹èªã®ã¿
- SIMã«ã¼ãã®ãµã¤ãºé¸æããã
- æå¾ã«ä½æã®å ¥åãå¿ è¦ã«ãªã (ããã«ã§ããã)
ã¨ã®ãã¨ã§ãã
1çªç®ã®è¨ç½®å ´æã«ã¤ãã¦ã¯ãããªå¸å ã«ããã¤ãããã®ã§ãä¸è¨ãµã¤ãã®Mapã§ã·ã§ããã®å ´æããããã¦ãããã»ããããã§ããFree centerã¨ããFree Mobileã®ã·ã§ããããMag Presse ã¨ããã³ã³ããã¿ãããªãåºã«ãè¨ç½®ããã¦ãã¾ããç§ã¯ããã«ããæ¯è¼çè¿ãã¨ããã«ããMag Presseã«ä¸åº¦è¨ç½®ããã¦ããã®ã§ããã§è³¼å ¥ãã¾ãã (å°ã éã«è¿·ã£ã¦ãã¾ãã¾ããã...)ã
2çªç®ã®è±èªã®ã¡ãã¥ã¼ããªãã¨ããåé¡ã¯ãã¡ãã¥ã¼ã®é¸æè¢ã¯ããã»ã©ãªãã®ã§ãé©å½ã«ç¹°ãè¿ãæä½ãã¦ããã¨ã¾ããã©ãçãã¾ãã
3çªç®ã¯å¿ è¦ãªSIMã«ã¼ãã®ãµã¤ãºãå¿ããã«ãã§ãã¯ãã¦ããã¦ãé¸ã¹ã°OKã§ãã
4çªç®ã¯ãããã«ã®ä½æã§è¯ãã®ã§å¿ããã«ã¡ã¢ãç¨æãã¦ããã¾ãããã確ãéµä¾¿çªå·ãå¿ è¦ãªã®ã§æ³¨æã
æ¯æãã¯ICãããä»ãVISAã«ã¼ããªãOKãããããã°ãã©ã³ã¹ã¯ã¡ãããªã©ã®äº¤éæ©é¢ãã¹ã¼ãã¼ããã³å±ããã§ãã¯ã¬ã¸ããã«ã¼ãã使ããã®ã§ã»ã¨ãã©ç¾éã¯ä½¿ããªãã£ãã§ãã
ã»ããã¢ãã
ãã¦ãç¡äºã«è³¼å
¥å®äºããã¨SIMã«ã¼ãã¨ã¬ã·ã¼ããåºã¦ãã¾ããå¾ã¯SIMã«ã¼ããå°ç´ããåãé¢ããæ¿å
¥ããã°OKã¨è¨ãããã¨ããã§ãããããã§PINã®å
¥åãæ±ãããã¾ããã¦ã£ããã¬ã·ã¼ãã«æ¸ãã¦ããæ°åã®ã©ããããªãã¨æããããå®ã¯åãé¢ããå°ç´ã« PIN : 1234 ã¨ãæ¸ããã¦ãã¾ãããããã«æ°ã¥ãã®ã«å°ã
æéãããã£ã¦ãã¾ãã¾ãããã¡ãªã¿ã«PINã¯1234åºå®ã®ããã§ããäºå調æ»è¶³ãã...
使ã£ã¦ã¿ãææ³
é»æ³¢ã¯å±å¤ã ã¨ããªãå¿«é©ã§ãããé度ã¯æ¸¬ã£ã¦ã¯ããªãã§ããã¹ãã¬ã¹ãªã使ãã¾ããã建ç©ã®ä¸ã ã¨å ´æã«ãã£ã¦ã¯ä¸å®å®ãªã¨ãããããã¾ãããæ¦ã大ä¸å¤«ãªã¬ãã«ããã ãã¡ããã¯é§ç®ã§ãããé»è»ã®ä¸ã¯ãã¡ããç¹ãããããã¼ã ã§ãé§ç®ãªã¨ããããã£ãæ°ããã¾ãã
ããã¦ãªãã¨ãã£ã¦ãGoogle Mapã使ããã®ã便å©ã ã¨åèªèãã«ã³ãã¡ã¬ã³ã¹ã®ä¼å ´ã¾ã§è¿·ããã«ãã©ãçãã¾ããããã¡ããè¡æ©ãã«ãã
ä»ã®ä¼ç¤¾ã®SIMã ã¨ãåä¾¡æ ¼ã§1GBã¨ããªã®ã§ãFree Mobileã¯ããªããå¾ã§ããããã§ãï¼
OpenAM 13ã®æ°æ©è½ã試ãã¦ã¿ã(2) - Stateless Session
ååã«ç¶ãã¦OpenAM 13ã®æ°æ©è½ã®ç´¹ä»ããã®2ã§ããä»å㯠Stateless Sessionã¨ããæ°ããèªè¨¼ã»ãã·ã§ã³æ¹å¼ã«ã¤ãã¦ç´¹ä»ã
å¾æ¥ã®OpenAMã®èªè¨¼ã»ãã·ã§ã³ã®ä»çµã¿
Stateless Sessionã®åã«ãå¾æ¥ã®OpenAMã®èªè¨¼ã»ãã·ã§ã³ã®ä»çµã¿ã«ã¤ãã¦èª¬æãã¦ããã¾ãã
OpenAMã«ãã°ã¤ã³ããã¨ããã®èªè¨¼æ å ±(ã¦ã¼ã¶IDãªã©)ã¯ã»ãã·ã§ã³ã¨ãã¦ã¡ã¢ãªä¸ã«ä¿åããã¦ãã¾ãããã©ã¦ã¶ã«ã¯ããã©ã«ãã ã¨iPlanetDirectoryProã¨ãããã¼åã§Cookieã«ã»ãã·ã§ã³IDãæ ¼ç´ããããµã¼ãä¸ã®ã¡ã¢ãªã¨ç´ä»ãããã¦ãã°ã¤ã³ç¶æ ãç¶æãç¶ãã¾ããã»ãã·ã§ã³æ å ±ããµã¼ãå´ã§ä¿æãããã®æ¹å¼ããStateful Sessionã¨OpenAMã§ã¯å¼ãã§ãã¾ãã
ã»ãã·ã§ã³ãã§ã¤ã«ãªã¼ãã¼ (OpenAM 10.0以å)
ããããªãããOpenAM 10.0 以åã ã¨ãã®æ©è½ãå©ç¨ããã®ã¯ã¨ã¦ã大å¤ãä¸å³ã¯OpenAMã®ãã©ã¼ã¯å ã®OpenSSOã®ããã¥ã¡ã³ãã«ãããã®ã§ãããã»ãã·ã§ã³æ å ±ãæ ¼ç´ããBerkeley DBã¨Message Queue Brokerãç¨æããã¨ãã£ã大æãããªä»çµã¿ãå¿ è¦ã§ããã
ãªãããã®æ¹å¼ã®ã»ãã·ã§ã³ãã§ã¤ã«ãªã¼ãã¼ã®æ¤è¨¼ã2012å¹´ã«SCSK社ãè¡ã£ã¦ãã¾ã(å ±åæ¸ã¯ãã¡ã https://www.scsk.jp/lib/product/oss/pdf/oss_6.pdf )ãå ±åæ¸ã®ä¸ã§ããã®æ¹å¼ã«ã¤ãã¦ãæ§æè¦ç´ ãè¤éã«ãªããOpenAM ã3å°ä»¥ä¸ã«å¢ãããéã«ã¹ã±ã¼ã«ããããªã©ã®æ¸å¿µããããã¨ã³ã¡ã³ãããã¦ãã¾ãã
æ°ããã»ãã·ã§ã³ãã§ã¤ã«ãªã¼ãã¼(OpenAM 10.1.0-Xpressãã)
åºæï¼OSSã«ããã¢ã¤ãã³ãã£ãã£ç®¡çï¼3ï¼ï¼OpenIGãOpenDJã¨é£æºããOpenAMã®æ°æ©è½ (2/2) - ï¼ IT
ã¯ã©ã¦ãã»IoTæ代ã®æ°ããªèª²é¡
ããã§Stateless Sessionã§ãã
åºæï¼http://openam.forgerock.org/doc/bootstrap/admin-guide/index.html#chap-session-state
å¾æ¥ã®æ¹å¼ã®ããã«ãã»ãã·ã§ã³ãã§ã¤ã«ãªã¼ãã®ããã«ã¬ããªã±ã¼ã·ã§ã³ãè¡ãå¿ è¦ããªããªãã¾ãã®ã§ã容æã«ã¹ã±ã¼ã«ããããã¨ãã§ãã¾ãã
ã¿ã¤ã ãªã¼ãªãã¨ã«ãForgeRockããæ§è½ãæ¤è¨¼ããæ å ±ãæ¨æ¥åºã¾ãããã¡ããã©ä»éå¬ä¸ã®Identity Summitã®ã»ãã·ã§ã³ã¹ã©ã¤ãã¨ãã¦å ¬éããã¦ãã¾ãããã®ã¹ã©ã¤ãã®p.15ããæ§è½ã«é¢ããè¨è¿°ãããã¾ãã
OpenAM2å°æ§æã§Stateful Sessionã¨Stateless Sessionã®æ¯è¼ãè¡ã£ã¦ããã
- Stateful Sessionï¼ 3000ãã°ã¤ã³/ç§
- Stateless Sessionï¼5000ãã°ã¤ã³/ç§
ã»ãã¥ãªãã£ã¯å¤§ä¸å¤«ï¼
ãã®ä»æ³¨æç¹
OpenAM 13ã®æ°æ©è½ã試ãã¦ã¿ã(1) - 2段éèªè¨¼
ä»å¹´ã®Q4ã«ãªãªã¼ã¹ãäºå®ããã¦ããOpenAM 13ã§ãããNightly Buildçã§æ°æ©è½ã試ããããªç¶æ
ã ã£ãã®ã§åä½ã確èªãã¦ã¿ã¾ããã
ãªããæ°æ©è½ã«ã¤ãã¦ã¯SNAPSHOT版のリリースノートã«ä¸è¦§ãæ¸ããå§ãã¦ãã¾ãã
ä»åã®ã¨ã³ããªã§ã¯2段éèªè¨¼(Two Step Verification) ã®æ°æ©è½ã«ã¤ãã¦ç°¡åã«ç´¹ä»ã
â»2015/10/06æç¹ã®Nightly Buildçã§ç¢ºèªãã¦ãã¾ãã
2段éèªè¨¼(Two Step Verification) ã®æ°æ©è½
OpenAM 12ã§ããOTPã使ã£ãèªè¨¼ã¢ã¸ã¥ã¼ã«ã¨çµã¿åããããã¨ã§2段éèªè¨¼èªä½ã¯å¯è½ã§ãããOpenAM 13ããã¯ãããã¤ã¹ç»é²ã®æ©è½ãçµã¿è¾¼ã¾ããããã§ãã詳細ã¯SNAPSHOT版のマニュアルã«æ¸ããã¦ãã¾ãããååãã°ã¤ã³ï¼QRã³ã¼ãã§ããã¤ã¹ç»é²ï¼ããã¤ã¹ã§OTPçºè¡ãã¦ãã°ã¤ã³ ã¨ããããããåæç»é²ã®ããã¼ãOpenAMåä½ã§ã§ããããã«ãªã£ã¦ãã¾ãã
Nightly Buildçã§åä½ç¢ºèª
Nightly Buildçããã¦ã³ãã¼ããã¦ã¤ã³ã¹ãã¼ã«ããProcedure 2.10. To Create an Authentication Chain for Two Step Verificationã®éãã«è¨å®ãã¦ãã¾ã åä½ããã
ã¨ã©ã¼æ å ±ã¨ã½ã¼ã¹ããã°ããçºããã¨ã¡ããã¨å¤æ´ããã°åä½ãããã ã£ãã®ã§è©¦ãã¦ã¿ããçµè«ããè¨ãã¨ãããã¤ã¹ç»é²ã¨OTPã«ãããã°ã¤ã³ã®ããã¼ãåä½ããããã¨ã¯ã§ãã¾ããã
åä½ç¢ºèª
OTPçºè¡ã«ã¯Androidçã®Google Authenticatorãå©ç¨ãã¦ç¢ºèªãã¾ããã
- äºåã«ä½æãã¦ãããã¢ã«ã¦ã³ã(test1)ã§ãã°ã¤ã³ãã
- OTPå
¥åã®ç»é¢ã«é·ç§»ãã¾ãããã¾ã ããã¤ã¹æªç»é²ãªã®ã§ãã㧠REGISTER DEVICE ãã¯ãªãã¯
- QRã³ã¼ãã表示ãããã®ã§ãGoogle Authenticatorã§ãã£ããã£ãã¦è¨å®ãè¡ã
- 次ã«é²ã¿ãç»é²ããGoogle Authenticatorã§çºè¡ãããOTPãå
¥åãã¦SUBMIT
- ãã°ã¤ã³ãå®äºãã¦ã¼ã¶ã®ãããã£ã¼ã«ãã¼ã¸ã«ç¡äºã«é·ç§»
è¨å®æã®æ³¨æç¹
Procedure 2.10. To Create an Authentication Chain for Two Step Verificationéããªã®ã ããèªè¨¼ã¢ã¸ã¥ã¼ã«ã¯ ForgeRock Authenticator (OATH) ãé¸ã¶ãã¨(OATHã ã¨é§ç®)ã
ãã®ä»æ³¨æç¹
- XUIã®ãã°ã¤ã³ç»é¢ã¯ã©ããã¾ã å®å®ãã¦ããªãã¦ãç¹ã«ã¬ã«ã ã使ãã¨ãã©ã¦ã¶ããã®REST APIå¼ã³åºãã§ã¨ã©ã¼ãåºã¾ããã¾ãã試ãå ´åã¯ãããã©ã«ãã®ãããã¬ãã«ã®ã¬ã«ã (/)ã使ã£ãã»ããè¯ãã§ãã
- 2段éèªè¨¼ããããã¬ãã«ã¬ã«ã ã®ããã©ã«ãã®èªè¨¼é£éã«è¨å®ããã¨ãamadminã§ãã°ã¤ã³ããéã«ãOTPãæ±ããã管çã³ã³ã½ã¼ã«ã«ãã°ã¤ã³ã§ããªããªãã¾ãããã®å ´åã¯ä¸è¨URLã®ããã«DataStoreã¢ã¸ã¥ã¼ã«ãç´æ¥æå®ãã¦ãã°ã¤ã³ç»é¢ãéãã°OKã
Nightly Buildçã§åä½ãããããã®ä¿®æ£ç¹
Nightly Buildçã§åä½ãããããã®å¤æ´å 容ã«ã¤ãã¦ãæ¸ãã¦ããã¾ããHTMLãã¡ã¤ã«ãç½®ãã ãã§ããã®ã§ãOpenAMã®ãã«ãã¯ä¸è¦ã§ããæ£å¼ãªãªã¼ã¹ã¾ã§ã«ã¯ãã£ã¨ç´ãã¯ãã
- (OPENAM_WAR)/XUI/templates/openam/authn/ 以ä¸ã« AuthenticatorOATH2.html ãä½æã
<div class="container" id="oath-container"> {{#if reqs.header}} <div class="page-header"> <h1 class="text-center">{{reqs.header}}</h1> </div> {{/if}} <form action="" method="post" class="form col-sm-6 col-sm-offset-3" autocomplete="off"> <fieldset> {{#each reqs.callbacks}} <div class="form-group"> {{callbackRender}} </div> {{/each}} </fieldset> </form> </div>
- åãå 容ã§ãAuthenticatorOATH4.htmlãAuthenticatorOATH5.htmlãAuthenticatorOATH7.htmlãåãã©ã«ãã«ä½æã
Jenkinsã§Gitãã©ã³ãã®èªåãã«ããè¡ãMulti-Branch Project Pluginã®ãããæ¸ãã
Jenkinsã§Gitãã©ã³ããèªå追å¾ãã¦ãã«ããããã«ã¯ãä¸è¨ã®è¨äºã§ç´¹ä»ããã¦ããMulti-Branch Project Pluginã便å©ãªãã ãã©ãä¸æºç¹ãããã¤ãããã®ã§ããããæ¸ãã¦ã¿ãã
ãããå 容
ãã©ã³ãåé¤æã«å¯¾å¿ããã¸ã§ããåçç¡ç¨ã§åé¤ãããªãããã«ãªãã·ã§ã³å
Multi-Branch Project Pluginã¯Gitã§ãã©ã³ããä½æããã¨èªåçã«å°ç¨ã®ã¸ã§ããä½æãã¦ãããã®ã ãããã©ã³ãåé¤æã«ã¯ãã®ã¸ã§ãã¯å³åé¤ãããä»æ§ã«ãªã£ã¦ããããã«ãå±¥æ´ãææç©ãæ¶ãã¦ãã¾ãéç¨ã«ãã£ã¦ã¯å°ãå ´åãããã®ã§ãåé¤ã®ãããã«ã¸ã§ãã®ç¡å¹åãè¡ããªãã·ã§ã³ã追å ããã
â»Bambooみたいにブランチ削除から一定時間後に自動削除ãã¨ãããªãã·ã§ã³ãããã¨è¯ãããï¼ ä»å¾è¦æããã°è¿½å ããããã
PRã¯ãã¡ããä½è ã§ã¯ãªãæ¹ãã¬ãã¥ã¼ãã¦ããã¦OKãããã¦ãããã®ã®ãä½è ããã®åå¿ã¯ãªããã¨ãããPRåºããå¾ã«ããã«ãã¡ãã®èæ ®ä¸è¶³ãä½è ãææãã¦ãããã®ã ãã対å¿çãpushããã¨ãªãããã®ææã³ã¡ã³ããåé¤ããã¦ãããã©ããããã£ã¡ããgithub.com
æ°è¦ãã©ã³ãçºè¦æã«ã¸ã§ããå®è¡ããªãããã«ãªãã·ã§ã³å
Multi-Branch Project Pluginã¯Gitã§ãã©ã³ããä½æããã¨èªåçã«å°ç¨ã®ã¸ã§ããä½æãããã®éã«å¿ ãä½æããã¸ã§ããå®è¡ããä»æ§ã«ãªã£ã¦ãããIssue-37で要望が挙がっているããã«ãã®æåããªãã·ã§ã³åããã
PRã¯ãã¡ããã³ã¡ã³ãã¯ãªãã§æ¾ç½®ããã¦ããgithub.com
Gitãªãã¸ããªè¨å®ã§Shallow Cloneãªã©ã®è©³ç´°ãªè¨å®ãå¯è½ã«
Multi-Branch Project Pluginã¯SCM APIçµç±ã§Gitãªãã¸ããªè¨å®ãè¡ãããã«ãªã£ã¦ãã(ãªã®ã§Git以å¤ã®SCMã«ã対å¿ãã¦ãã)ããããSCM APIçµç±ã ã¨Gitãªãã¸ããªã®å ´åãShallow Cloneãªã©ã®è©³ç´°ãªè¨å®ãæ®å¿µãªããã§ããªããããã¯Issue-82で要望が挙がっているã®ã ããSCM APIã®å®è£
å´ãã¤ã¾ãGit SCM pluginå´ã§å®è£
ãå¿
è¦ã«ãªãã
工夫ããã°Multi-Branch Project Pluginå´ã§å¯¾å¿ãããã¨ãã§ããã®ã§ãé§ç®å
ã§PRãéã£ã¦ã¿ãã¨ããやっぱ即リジェクトされたã
ã¨ãã訳ã§Git SCM pluginå´ã«ä»åº¦ã¯PRãéã£ã¦ã¿ãããã¡ãã¯LGTMã®ã³ã¡ã³ããé ãã¦ãã¼ã¸ãã¦ããããããªæãï¼ï¼github.com
ã«ã¹ã¿ã ãã«ã
Multi-Branch Project Pluginã¯ä½è ãå¿ããã®ãåå¿ãç¡ãã®ãã§ãå½é¢Forkããã¸ã§ã¯ãã§ã«ã¹ã¿ã ãã«ããè¡ããã¨ã«ããããã¨ãGit SCM pluginããã¼ã¸ãããã¾ã§ç¨æãDrone.ioã使ã£ã¦ãã«ããã¦ãã¾ã(Jenkins Pluginãªã®ã«)ã
- Multi-Branch Project Plugin
- Git SCM plugin
åãã¦Drone.io使ã£ã¦ã¿ããã©ã·ã³ãã«ã§è¯ãã
GitlabãDockerä¸ã«å¼ã£è¶ã
Gitlabãç«ã¦ã¦ãããµã¼ãã®HDDæ®å®¹éãããªãå°ãªããªã£ããããåã
ãããããã¨æã£ã¦ãããã©ã§ãã¦ããªãã£ããDockerä¸ã¸ã®å¼ã£è¶ããããããå®æ½ãã¾ããã
Dockerä¸ã§æ§ç¯ãã¦ããã¨ãã¢ããã°ã¬ã¼ããç°¡åã¨ããã¡ãªãããããã¾ããä»åã移è¡å¾ã«ã¤ãã§ã«7.0.0â7.6.2ã¸ã¨ã¢ããã°ã¬ã¼ããè¡ãã¾ãããã©ããªã楽ã§ããã
以ä¸ã移è¡æé ã®ã¡ã¢ã§ãã
移è¡å Gitlabã®æ§ç¯
移è¡å ã¨ãªãGitlabæ¬ä½ã¯åæ§ç¯ããå¿ è¦ãããã¾ãããDockerä¸ã«æ§ç¯ããã®ã§Docker Hubã«ãããã®ãå©ç¨ãã¦ç°¡åã«æ§ç¯ã§ãã¾ããä»åã¯ä¸çªå©ç¨ããã¦ããããªsameersbn/gitlabã使ç¨ããã¦é ãã¾ããã
ãã¼ã¿ãã¼ã¹ã«ã¯MySQLã使ã£ã¦ããã®ã§ã移è¡å¾ãMySQLã使ããã¨ã«ãã¾ããããã®MySQLãä»åãDockerä¸ã«ç§»è¡ãã¾ãã
ãªããMySQLãGitãªãã¸ããªãã¼ã¿ãªã©ãå種Dockerã³ã³ããã®ãã¼ã¿ã§æ°¸ç¶åããå¿
è¦ããããã®ã¯ãDockerãã¹ãã«é
ç½®ããæ¹å¼ã«ãã¦ãã¾ã(docker runã®-vãªãã·ã§ã³ã§ãã£ã¬ã¯ããªãæå®)ã
MySQLãæ§ç¯&èµ·å
sameersbn/gitlab ã®ããã¥ã¡ã³ãã«æ¸ããã¦ããDockerのLink機能を使った方法ã§æ§ç¯ãã¾ãã
# MySQLã³ã³ããåå¾ docker pull sameersbn/mysql:latest # Dockerãã¹ãä¸ã§æ°¸ç¶ãã¼ã¿ã®é ç½®ãã£ã¬ã¯ããªä½æ mkdir /home/core/gitlab_mysql_data # MySQLã³ã³ããèµ·å docker run --name=gitlab-mysql -d \ -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \ -v /home/core/gitlab_mysq_data:/var/lib/mysql \ sameersbn/mysql:latest
Redisãæ§ç¯&èµ·å
Gitlabã§ã¯Redisãå¿ è¦ã«ãªãã¾ããMySQLã¨åæ§ã«ãDockerのLink機能を使った方法ã§æ§ç¯ãã¾ãã
# Redisã³ã³ããåå¾ docker pull sameersbn/redis:latest # Redisã³ã³ããèµ·å docker run --name=gitlab-redis -d sameersbn/redis:latest
MySQLã¨Redisã®æºåãã§ããããGitlabæ¬ä½ã®æ§ç¯ã§ããå®å
¨ã«ç§»è¡ããããã«ã移è¡å
ã¨åãã¼ã¸ã§ã³ã®7.0.0ã§ã¾ãã¯æ§ç¯(docker pull)ãã¾ããå¾ã¯docker runã®--linkãªãã·ã§ã³ã§MySQLã¨Redisã«ç¹ãã¦èµ·åãããã°OKã§ãããããä¸çªéè¦ãªãã¤ã³ãã§ãdocker runã³ãã³ãã®-eãªãã·ã§ã³ã§ãGitlabã®å種è¨å®(ã¡ã¼ã«éä¿¡è¨å®ãã¿ã¤ã ã¾ã¼ã³è¨å®ãªã©)ãè¡ãå¿
è¦ãããã¾ãã
利用可能なパラメータ一覧はこちらにあります。
ã¾ãã-v /etc/localtime:/etc/localtime:ro ãä»ä¸ãããã¨ã«ããããã¹ãOSã®ã¿ã¤ã ã¾ã¼ã³ãDockerã³ã³ããã«åæããã¦ãã¾ããGitlabã³ã³ããã«ç¨æããã¦ããcronã«ããããã¯ã¢ãããèµ°ãããå ´åã¯ãã¿ã¤ã ã¾ã¼ã³ããããã¦ãããã»ããè¨å®ããããã§ãã
Gitlab 7.0.0ãæ§ç¯
# Gitlabã³ã³ããåå¾ docker pull sameersbn/gitlab:7.0.0 # Dockerãã¹ãä¸ã§æ°¸ç¶ãã¼ã¿ã®é ç½®ãã£ã¬ã¯ããªä½æ mkdir /home/core/gitlab_data
Gitlab 7.0.0ãè²ã ãªãã·ã§ã³ãã¤ãã¦èµ·å
docker run --name=gitlab -d --link gitlab-mysql:mysql \ --link gitlab-redis:redisio \ -p 10022:22 -p 80:80 \ -e "GITLAB_PORT=80" -e "GITLAB_SSH_PORT=10022" \ -e "DB_USER=gitlab" -e "DB_PASS=password" \ -e "DB_NAME=gitlabhq_production" \ -e "GITLAB_HOST=xxx.xxx.xxx.xxx" -e "[email protected]" -e "[email protected]" \ -e "SMTP_ENABLED=true" \ -e "SMTP_HOST=yyy.yyy.yyy.yyy" -e "SMTP_PORT=25" -e "SMTP_STARTTLS=false" -e "SMTP_DOMAIN=example.org" \ -e "GITLAB_PROJECTS_VISIBILITY=public" \ -e "GITLAB_BACKUPS=daily" -e "GITLAB_BACKUP_EXPIRY=172800" \ -e "NGINX_MAX_UPLOAD_SIZE=100m" \ -e "GITLAB_TIMEZONE=Tokyo" \ -v /home/core/gitlab_data:/home/git/data \ -v /etc/localtime:/etc/localtime:ro \ sameersbn/gitlab:7.0.0
ä¸è¨ä¾ã ã¨ã80ãã¼ããå¤é¨ã«å
¬éãã¦ããã®ã§ããã㧠http://Dockerã®ãã¹ãIP:80 ã«ã¢ã¯ã»ã¹ããã¨Gitlabã«ã¢ã¯ã»ã¹ã§ããããã«ãªãã¾ãã移è¡å
ã®Gitlabãæ§ç¯ã§ãã¾ããã®ã§ãç¶ãã¦ãã¼ã¿ã®ç§»è¡ãè¡ãã¾ãã
ãã¼ã¿ç§»è¡
Gitlabã«ã¯ããã¯ã¢ããã¨ãªã¹ãã¢ç¨ã®ã³ãã³ããç¨æããã¦ããã®ã§ãã¼ã¿ã®ç§»è¡ã¯ç°¡åã§ããドキュメントはここã
ããã¯ã¢ããã®å®è¡
移è¡å ã®ç°å¢ã§å®è¡ãã¾ãã
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
ããã¯ã¢ãããããã¡ã¤ã«ãåæ§ç¯ãããµã¼ãã«è»¢é
scp /home/git/gitlab/tmp/backups/1420041115_gitlab_backup.tar [email protected]:/home/core/gitlab_data/backups/
ããã¯ã¢ãããã¡ã¤ã«ã§ãªã¹ãã¢å®è¡
移è¡å ã®Dockerãã¹ãã§ã®ä½æ¥ã«ãªãã¾ãããªã¹ãã¢ã³ãã³ãã¯Gitlabã«ä»å±ãã¦ããrakeã¿ã¹ã¯ã使ãã®ã§ãããdocker pullããGitlabã³ã³ãããå©ç¨ãã¦å®è¡ãããã¨ãã§ãã¾ãã
# ä¸æ¦åãã¦ããGitlabã³ã³ãããåæ¢ docker stop gitlab # ãªã¹ãã¢ã³ãã³ãã¨ã¨ãã«Gitlabã³ã³ãããæ°è¦ã«éå§ docker run --name=gitlab -it --rm --link gitlab-mysql:mysql \ --link gitlab-redis:redisio \ -e "DB_USER=gitlab" -e "DB_PASS=password" \ -e "DB_NAME=gitlabhq_production" \ -v /home/core/gitlab_data:/home/git/data \ -v /etc/localtime:/etc/localtime:ro \ sameersbn/gitlab:latest app:rake gitlab:backup:restore
ä¸è¨ã³ãã³ããå®è¡ããã¨ã©ã®ãã¡ã¤ã«ã§ãªã¹ãã¢ããã®ãèãããã®ã§ã移è¡å¯¾è±¡ã®ãã¡ã¤ã«åãå
¥åãã¦å®è¡ãã¾ãã
ã¾ããä¸è¨ã®ããã«æå¾ã«authorized_keysã®ä¸æ¸ã確èªããããã®ã§ãyesã§ç¶ãã¾ã(ãªã¹ãã¢ã®ãã¼ã§ä¸æ¸ããã)ã
This will rebuild an authorized_keys file. You will lose any data stored in authorized_keys file. Do you want to continue (yes/no)? yes
移è¡ç¢ºèª
docker start gitlab
ã§å度gitlabãèµ·åãããã¼ã¿ã移è¡ããã¦ãããã¨ã確èªãã¦å®äºã§ãã
ãã¼ã¸ã§ã³ã¢ãã
7.0.0ããææ°ã®7.6.2ã«ã¢ããã°ã¬ã¼ããã¾ãã
こちらに手順が書かれています。
ãããã¨ã¯ç°¡åã§ãåãã¦ããGitlabã³ã³ãããåæ¢ã»åé¤ããããã¯ã¢ããã®åå¾ãæ°ãããã¼ã¸ã§ã³ã®Gitlabã³ã³ããã§runãã¦ãããã ãã§ããååèµ·åæã«ãèªåçã«ãã¼ã¿ãã¼ã¹ã®ãã¤ã°ã¬ã¼ã·ã§ã³ãè¡ããã¾ãã
# æ°ãããã¼ã¸ã§ã³ã®Gitlabã³ã³ããåå¾ docker pull sameersbn/gitlab:7.6.2 # æ¢åã®ã³ã³ããåæ¢ï¼åé¤ docker stop gitlab docker rm gitlab # ããã¯ã¢ããã®å®è¡ docker run --name=gitlab -it --rm --link gitlab-mysql:mysql \ --link gitlab-redis:redisio \ -e "DB_USER=gitlab" -e "DB_PASS=password" \ -e "DB_NAME=gitlabhq_production" \ -v /home/core/gitlab_data:/home/git/data \ -v /etc/localtime:/etc/localtime:ro \ sameersbn/gitlab:latest app:rake gitlab:backup:create # æ°ãããã¼ã¸ã§ã³ã®Gitlabã³ã³ãããèµ·å docker run --name=gitlab -d --link gitlab-mysql:mysql \ --link gitlab-redis:redisio \ -p 10022:22 -p 80:80 \ -e "GITLAB_PORT=80" -e "GITLAB_SSH_PORT=10022" \ -e "DB_USER=gitlab" -e "DB_PASS=password" \ -e "DB_NAME=gitlabhq_production" \ -e "GITLAB_HOST=xxx.xxx.xxx.xxx" -e "[email protected]" -e "[email protected]" \ -e "SMTP_ENABLED=true" \ -e "SMTP_HOST=yyy.yyy.yyy.yyy" -e "SMTP_PORT=25" -e "SMTP_STARTTLS=false" -e "SMTP_DOMAIN=example.org" \ -e "GITLAB_PROJECTS_VISIBILITY=public" \ -e "GITLAB_BACKUPS=daily" -e "GITLAB_BACKUP_EXPIRY=172800" \ -e "NGINX_MAX_UPLOAD_SIZE=100m" \ -e "GITLAB_TIMEZONE=Tokyo" \ -v /home/core/gitlab_data:/home/git/data \ -v /etc/localtime:/etc/localtime:ro \ sameersbn/gitlab:7.6.2
Gitlabã¯ãã¼ã¸ã§ã³ã¢ããæã«ä¾åã©ã¤ãã©ãªãå¢ãããã¨ãRubyã®ãã¼ã¸ã§ã³ã¢ãããå¿ è¦ã«ãªãã±ã¼ã¹ãããã®ã§ããããã®ããã«Dockerä¸ã§æ§ç¯ãã¦ããã¨ãdocker pullããã ãã§ã¢ããã°ã¬ã¼ãå®äºãªã®ã§ããªã楽ã«ãªããã¨æãã¾ãï¼ï¼
Bootstrap3ã®ããã²ã¼ã·ã§ã³ãã¼ãhoveråããæ¹æ³
javascript - Bootstrap Dropdown with Hover - Stack Overflowã«ã¾ãã«ãããããã¨ãæ¸ãã¦ãã£ãã
ããã«æ¸ãã¦ããéãã
.dropdown:hover .dropdown-menu { display: block; }
ã¨æ¸ãã®ãä¸çªã·ã³ãã«ããããã ããã¢ãã¤ã«ãµã¤ãºã®æããã®hoverãå¹ãã¦ãã¾ã£ã¦ã¤ãã¤ããªã¬ã¤ã¢ã¦ãã«ãªã£ã¡ããã®ã§ãä¸è¨ã®ããã«@mediaã§PCãµã¤ãºã®æã ãæå¹ã«ãªãããã«è¨å®ããã¨è¯ããã
@media (min-width: 768px) { .dropdown:hover .dropdown-menu { display: block; } }
OpenIDM+MySQLã§ä½¿ãå ´åã«æ³¨æ
OpenIDMã¯å é¨ãªãã¸ããªãããã©ã«ãã®OrientDBããMySQLã«å¤æ´ã§ãã¾ããï¼ã¨ããããããã¯ã·ã§ã³ç°å¢ã ã¨MySQLãæ¨å¥¨ï¼ãä»å±ãã¦ããJDBCç¨ã®è¨å®ã使ãã¨ãã¾ãåããªãã¨ãããããã¾ãã
å ·ä½çã«ã¯ãrepo.jdbc.json ã§å®ç¾©ããã¦ãã "get-by-field-value" ã¨ããã¯ã¨ãªã¼ãªã®ã§ããã
WHERE prop.propkey='/' + ${field}
ã®ããã«ãæååã+ã§é£çµãã¡ãã£ã¦ãã¾ããMySQLçã«ã¯ããã¯NGã(参考:「文字列連結」のつもりでうっかり + を使うな!!)
æ£ããã¯ãä¸è¨ã®ããã«CONCATé¢æ°ã使ãå¿ è¦ãããã
WHERE prop.propkey=CONCAT('/', ${field})
JIRA:OPENIDM-1281ã§å ±åããã¨ãããããã«å¯¾å¿ãã¦ããããããã§ããNightlyçã ã¨ç´ã£ã¦ããããããã¾ããã