rubygems_check_replacement_vulnerabilityのDocker Image作った
id:sue445 さんが改ざんチェックgemを作ってくれたとのことで早速ためそう!
と思ったらMBPリストアしたばっかりでrbenv入ってなくて環境が整ってなかったのでrbenv突っ込んでrubyのビルドして・・・
やってられっかーーーーー!となって作りました。よしなにお使いください。
使い方
以下をbashrc or zshrcに突っ込んで source したらあとは普通に こちら の記事を参考にお使いください。
rubygems_check_replacement_vulnerability () { docker run --rm cynipe/rubygems_check_replacement_vulnerability $@ }
もちろん docker run --rm cynipe/rubygems_check_replacement_vulnerability vulnerable_gems --username=<USERNAME>
とかしてもOK。
わーい、だいじょぶ!
rubygems_check_replacement_vulnerability verify_gem --name=jenkins-capistrano --repo-url=https://github.com/cynipe/jenkins-capistrano Unpacked gem: '/tmp/gem-20160415-1-19bjy7s/jenkins-capistrano-0.1.0' [Info] jenkins-capistrano 0.1.0 is safe! Unpacked gem: '/tmp/gem-20160415-1-1ujzn0g/jenkins-capistrano-0.1.1' [Info] jenkins-capistrano 0.1.1 is safe! Unpacked gem: '/tmp/gem-20160415-1-136bp3f/jenkins-capistrano-0.1.2' [Info] jenkins-capistrano 0.1.2 is safe!
存在してるディレクトリにgit cloneする方法
initする方法
$ cd /path/to/existing_dir $ git init $ git remote add origin <remote-url> $ git fetch origin $ git checkout -b master --track origin/master
別ディレクトリにcloneして.gitをコピーする方法
$ git clone --no-checkout <remote-url> /path/to/writable_dir $ mv /path/to/writable_dir/.git /path/to/existing_dir $ cd /path/to/existing_dir $ git reset --hard HEAD
参考
WerckerでPrivateリポジトリなGemやPuppetモジュールを利用する方法
皆様あけましておめでとうございます。歳を重ねるにつれて1年を短く感じるようになり年末、正月気分が年々薄れていき今年はさっぱり正月気分を味わえていませんが皆様はいかがでしょうか?
さてさて、最近巷で流行りのWerckerはご存知でしょうか?Github, Bitbucketに対応していてプライベートリポジトリだろうとCIし放題という便利なサービスです。
こんな便利なものを使わない手はないということで早速使ってみようとしたところCIしようとしたリポジトリが他のプライベートなGemやPuppetモジュールなんかに依存していてちょっと手間取ったのでその方法をご紹介。
やり方
まずApplicationのSettingsタブにあるKey managementでリポジトリへアクセスするための鍵ペアを作ります。
対象とするリポジトリ郡に対してアクセスするために作成した公開鍵をBitbucket側にも設定しておきましょう。ダミーユーザなどを作ってそのユーザに鍵を登録しRead Onlyな権限を付与しておくのが管理上は楽かもしれません。
次にこれをビルドスクリプトから利用できるようにするために変数として定義します。変数の定義は同じSettingsタブのPipelineでAdd new variableをクリックすれば追加が出来ます。
最後にビルド中に作成した鍵を使ってCloneされるようにwercker.ymlに以下の様に設定すれば完了です。add-sshkeyとadd-to-known_hostsステップだけきちんと設定出来ていれば、以降はbundle installするなり、librarian-puppet installするなりすればきちんとチェックアウトして利用することが出来ます。
box: wercker/ruby build: steps: - add-ssh-key: keyname: BITBUCKET_KEY - add-to-known_hosts: hostname: bitbucket.org fingerprint: 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40 - script: name: specs code: rake spec
それでは快適なWerckerライフを!
参考リンク
Using private repositories in your builds

入門Puppet - Automate Your Infrastructure
- 作者: 栗林健太郎
- 発売日: 2013/04/29
- メディア: Kindle版
- この商品を含むブログ (2件) を見る

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)
- 作者: 佐藤聖規,和田貴久,河村雅人,米沢弘樹,山岸啓,川口耕介
- 出版社/メーカー: 技術評論社
- 発売日: 2011/11/11
- メディア: 単行本(ソフトカバー)
- 購入: 26人 クリック: 496回
- この商品を含むブログ (62件) を見る
Eclipseプラグインをコマンドラインでインストールする方法
BoxenというかPuppetでEclipse環境を構築するのにプラグインのインストールをDropins使ってやろうと思ったのだけど、どうもDropins用にファイルで提供してるプラグインがあまりない感じだったのでやり方を探してみたところ分かったのでメモ。
やり方
インストール:
$ <eclipse-home>/eclipse -nosplash \ -application org.eclipse.equinox.p2.director \ -profile SDKProfile \ -destination <eclipse-home> \ -repository http://download.eclipse.org/releases/juno \ -installIU <plugins-id>
アンインストール:
$ <eclipse-home>/eclipse -nosplash \ -application org.eclipse.equinox.p2.director \ -profile SDKProfile \ -destination <eclipse-home> \ -repository http://download.eclipse.org/releases/juno \ -uninstallIU <plugin-id>
repositoryにはインストールするプラグインの依存関係にあるアップデートサイトは全て指定しておかないとだめっぽい。ちなみにカンマ区切りで指定すれば良い。
複数のpluginをまとめてインストール/アンインストールする場合はinstallIU/uninstallIUオプション付きで指定。
例:VrapperをJDTフィーチャ、surroundオプション付きで入れる
$ <eclipse-home>/eclipse -nosplash \ -application org.eclipse.equinox.p2.director \ -profile SDKProfile \ -destination <eclipse-home> \ -repository http://download.eclipse.org/releases/juno,http://vrapper.sourceforge.net/update-site/stable \ -installIU net.sourceforge.vrapper.feature.group \ -installIU net.sourceforge.vrapper.eclipse.jdt.feature.feature.group \ -installIU net.sourceforge.vrapper.plugin.surround.feature.group
詳しくは以下参照
http://help.eclipse.org/juno/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/p2_director.html
jenkins-capistranoでプラグインインストールのサポートしたよー
ついでにjenkins-capistrano-0.0.6としてリリースしてみました。
リリースノート
- ビューの管理機能
- プラグインの管理機能(実験機能)
ビューの作成機能はサクッと出来たもののプラグインについては色々と悩みどころがあってここ2,3日考えていたんですが、まだ安定版にもしてないしとりあえず出しちまえと思って出してみました*1。使い方についてはREADME(view, plugin)を参照してくださいな。
今後について
思ってることをつらつらと。
今回サポートしたプラグインの管理機能はJenkins1.483でサポートされたAPIを利用して作っているんですが、この素晴らしいAPIは全てのconfig.xmlに書かれたpluginのバージョンを元にインストールするという方法がサポートされてます。つまり、この機能を利用すればconfig/jenkins配下に置かれたjob,node,viewを元に自動でプラグインがインストール出来るように作れるってことなんですよね。夢がひろがりんぐ。
ただ、現状だとnodeの追加はjenkins.rbをベースにした形でconfig.xmlではなくFormのサブミッションで作成しているのでサポートしきれません。しかも恐らく*2nodeの追加はconfig.xmlのPOSTでは作れない*3のでちょっと手数を踏んで実装するか、jenkins.model.Jenkins#createNodeを実装して対応するか・・・。でもそれだと過去バージョン使ってる人は使えないなーとか。色々悩み中です。
という訳で実装方法はともかくも今後のロードマップは以下な感じで考えてます。こうしたらいいんじゃない?とかこういうのが欲しいとかあればTwitterなりでアイデアくださいまし。
- config_nodesタスクのconfig.xml形式をサポート
- 既存のjsonフォーマットからのmigration込み
- 指定のJenkinsからjob,node,viewのconfig.xmlをダウンロードする機能
- 1.483以前のJenkinsのXMLを最新の形式にする機能のサポート(プラグインの自動インストールに必要)
- プラグインの指定インストールも現状のままのサポート
そんな訳で今後もよろしくお願いします〜。
jenkins-capistranoでviewの作成をサポートしてみた
今まではジョブの作成、更新、無効化とslaveの作成までをサポートしていたのだけど、Viewも一緒に作成出来ればなぁと思ってJenkinsのコミットログをRESTでgrepしてみたら出来るっぽかったので対応してみた*1。
使い方
構成はこんな感じ
config ├── deploy.rb └── jenkins └── views ├── view1.xml ├── view2.xml └── view3.xml
deploy.rb
set :application, "your-awesome-app" set :scm, :git set :repository, "https://github.com/your/repository.git" set :jenkins_host, 'http://localhost:8080' # set :jenkins_username, '' # default empty # set :jenkins_password, '' # default empty # set :jenkins_view_config_dir, 'config/jenkins/views' before 'deploy', 'jenkins:config_views'
viewの設定はconfig.xmlで管理するので以下な感じ。xmlのファイル名はviewの名前と合わせておいてくださいまし。
<listView> <name>view1</name> <filterExecutors>false</filterExecutors> <filterQueue>false</filterQueue> <properties class="hudson.model.View$PropertyList"/> <jobNames class="tree-set"> <comparator class="hudson.util.CaseInsensitiveComparator" reference="../../../hudson.plugins.view.dashboard.Dashboard/jobNames/comparator"/> </jobNames> <jobFilters/> <columns> <hudson.views.StatusColumn/> <hudson.views.WeatherColumn/> <hudson.views.JobColumn/> <hudson.views.LastSuccessColumn/> <hudson.views.LastFailureColumn/> <hudson.views.LastDurationColumn/> <hudson.views.BuildButtonColumn/> </columns> <includeRegex>job.*</includeRegex> </listView>
こんなXML作れねーよ!と思う人は慌てるなかれ、最初は画面から作ってしまって$JENKINS_HOME/config.xmlのviewsセクションのXMLをコピペすればいけまする。
ただし以下の部分はpostした時にJenkinsに怒られちゃうので削除してくださいまし。基本どのViewでも対応できるはず。
<owner class="hudson" reference="../../.."/>
これで複雑に構成されたjenkinsでも一発で復元できますねっ!!
ちなみにpluginのインストールもサポートする予定ではいてやっつけ実装のものがfeature/manage-plugin-supportブランチにおいてあります。こちらに関してはpluginインストール完了待ちの実装だったり、完了後の再起動だったりとかどうしようかなぁと思い中なのでも少し時間かかりそーです。
ちなみにJenkinsとPluginのインストールはpuppet-jenkinsやchef-jenkinsでやってしまう方がいいかなと思っていますが、もう少しライトウェイトに使いたい方のお役には立てるかなと思ってるので頑張る予定です。
皆様のご意見、ご感想お待ちしております!
*1:まだリリースまではしてない
キーマップのSIDを使った整理とprefix運用
色々キーマップの割り当てで悩んでたんだけど、この方法はいいかもしれない。
<SID>(名前)としておいたのを後で参照できるので、コマンドの定義とキーマップの割り当てそのものを別に定義できていい。しかも名前がつけられるので適切に名前をつけてあげれば変にコメント付ける必要もないし。
nnoremap <silent> <SID>(del-trail-space) :<C-u>%s/\s\+$//ge<CR> nnoremap <silent> <SID>(tab2space) * :%s/\t/ /ge<CR> nmap <C-x> <SID>(del-trail-space) nmap <C-z> <SID>(tab2space)
prefixについては検索対象が減るので反応がはやくなるし、他に当ててたもの衝突しにくくなるのでいい!
nnoremap [hoge] <Nop> nmap f [hoge] nnoremap [foo] <Nop> nmap <S-f> [foo] nnoremap [hoge]l :<C-u>便利なコマンド1 nnoremap [hoge]L :<C-u>便利なコマンド2 nnoremap [foo]l :<C-u>凄いコマンド1 nnoremap [foo]L :<C-u>凄いコマンド2
上の例で
実際に色々整理したのはこんな感じ。

Vimテクニックバイブル ?作業効率をカイゼンする150の技
- 作者: Vimサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2011/09/23
- メディア: 単行本(ソフトカバー)
- 購入: 18人 クリック: 602回
- この商品を含むブログ (36件) を見る