タグ

ブックマーク / int128.hatenablog.com (13)

  • Gradle SSH Plugin 2.1.1をリリースした - GeekFactory

    Gradle SSH Plugin/Groovy SSH 2.11をリリースしました。 2.1.1の変更点 SCP GET/PUTの性能を改善しました。 github.com 2.1.0でSCPサポートを追加しましたが、非効率な実装が残っていたため、2.1.1で性能を改善しました。 Test Item scp vs sftp (2.1.0) scp vs sftp (2.1.1) get a large file 419% 132% get many files 75% 74% put a large file 144% 114% put many files 1025% 143% 2.1.0ではSCPSFTPに比べて4〜10倍も遅い結果になっていましたが、2.1.1では若干遅いレベルまで改善しています。 改善点は以下です。 Stream Interactionのバッファサイズを1kBか

    Gradle SSH Plugin 2.1.1をリリースした - GeekFactory
  • Gradle SSH Plugin 1.5.0をリリースした - GeekFactory

    Gradle SSH Plugin 1.5.0、Groovy SSH 1.5.0をリリースしました。 github.com github.com 1.5.0の変更点 Gradle SSH Pluginではホストにロールを関連付けることができます。これまで複数ロールのORを取るメソッド role() を提供していましたが、1.5.0からANDを取るメソッド allRoles() も提供しています。 // remote hosts associated to webServer OR appServer session(remotes.role('webServer', 'appServer')) { } // remote hosts associated to webServer AND appServer session(remotes.allRoles('webServer', 'ap

    Gradle SSH Plugin 1.5.0をリリースした - GeekFactory
  • Gradle Updateを公開します - GeekFactory

    Gradle Wrapperを自動更新してくれるサービス Gradle Update を公開します。Gradle Wrapperのようなビルドシステムは一度設定するとバージョンを上げるタイミングがあまりないのですが、新しいバージョンを使うとパフォーマンスが改善されたりバグを踏まずに済むメリットがあります。 Gradle Updateを有効にすると、新しいバージョンのGradleがリリースされるたびに、Pull Requestで新しいGradle Wrapperをお届けします。お届け対象は、自分が所有する公開リポジトリのうちGradle Wrapperがすでに含まれるものです。 使い方 Gradle Updateを有効にするには、Gradle Update のリポジトリにスターを付けてください。 間もなくするとPull Requestの通知が届きます。 Pull Requestを開くと、新し

    Gradle Updateを公開します - GeekFactory
    nobuoka
    nobuoka 2015/08/11
    Gradle Update 自体もいいけど GitHub のリポジトリにスターを付けたら機能が有効になるって仕組みも良いなー
  • Jenkins Workflow PluginのDSLを拡張する試み - GeekFactory

    Jenkins Workflow PluginのDSLを拡張する仕組みを調べたのでメモします. Workflow basic stepsを参考にする Workflow Pluginはbasic stepsという基礎的な命令セットと一緒にリリースされています.basic stepsには下記が含まれます. ArtifactArchiverStep ArtifactArchiverStepExecution ArtifactUnarchiverStep ArtifactUnarchiverStepExecution CatchErrorStep CoreStep EchoStep ErrorStep MailStep PushdStep PwdStep ReadFileStep RetryStep RetryStepExecution SleepStep TimeoutStep TimeoutS

    Jenkins Workflow PluginのDSLを拡張する試み - GeekFactory
  • Gradle SSH Plugin 1.0.1をリリースした - GeekFactory

    Gradle SSH Pluginのバージョン1.0.1をリリースしました。開発を始めてから2年が経ち、仕様も安定してきたので、バージョンを1.0に上げることにしました。正直にいうとNew Yearでキリがいいからバージョンを上げました。当は2014年に上げたかったんだけど。 SSH Pluginを使うと、下記のようにGradleからSSHでコマンドを実行したりファイルを送受信したりできます。 // build.gradle plugins { id 'org.hidetake.ssh' version '1.0.1' } remotes { webServer { host = '192.168.1.101' user = 'jenkins' identity = file('id_rsa') } } task deploy << { ssh.run { session(remotes

    Gradle SSH Plugin 1.0.1をリリースした - GeekFactory
    nobuoka
    nobuoka 2015/01/07
    Gradle SSH Plugin、デプロイタスクとかの記述に便利そう
  • Jenkins Workflow Pluginを使ってみる - GeekFactory

    先日リリースされたJenkins Workflow Plugin 1.0を使ってみました。年明けのJenkinsユーザカンファレンスで詳しい発表があると思うので、今から楽しみですね! Workflow Pluginでできること Workflow Pluginを使うと、Jenkinsジョブの動作をGroovyで記述することができて、さらにユーザとのインタラクションを差し込むことも可能です。これはデプロイメントパイプラインの実装に便利そうです。 また、リポジトリからチェックアウトしたGroovyスクリプトを読み込めるので、Travis CIやCircle CIのようにビルド設定をリポジトリで管理できます。開発現場でJenkinsを使い込んでいくと、いろんな人がジョブ設定をいじって荒廃していくことが多いので、ビルド設定をリポジトリで管理できることは大きなメリットがあると思います。 (と偉そうに書

    Jenkins Workflow Pluginを使ってみる - GeekFactory
    nobuoka
    nobuoka 2014/12/22
    ほー、良さそう。
  • DockerイベントをSlackに連携するアプリ - GeekFactory

    DockerイベントをSlackに連携するアプリ slack-docker を公開しています。 いつの間にかSlackのWebhook URLの形式が変わっていたので対応しました。 また、Slackにポストする情報を少し増やしてみました。 DockerとFigをインストールしている場合は簡単に起動できます。 curl -O https://raw.githubusercontent.com/int128/slack-docker/master/fig.yml vim fig.yml # edit webhook URL fig up -d Dockerのみの場合は以下で起動できます。 docker run -d -e webhook=URL -v /var/run/docker.sock:/var/run/docker.sock int128/slack-docker 実験環境では、コンテ

    DockerイベントをSlackに連携するアプリ - GeekFactory
  • DockerイベントをSlackに連携するアプリを作った - GeekFactory

    Dockerホストのコンテナ起動停止イベントをSlackに連携するアプリを作りました。 例 くじらがつぶやきます。 使い方 Slackの設定ページから Incoming WebHook を作成してください。トークンをメモしておきます。 このアプリは Docker Hub に公開しています。そのため、ホストで以下のコマンドを実行するとすぐに使えます。 docker run -d -v /var/run/docker.sock:/var/run/docker.sock -e domain=DOMAIN -e token=TOKEN -e channel=infra int128/slack-docker 環境変数のdomainは .slack.com の手前の文字列を指定してください。channelは通知先のチャネルです。 フィードバック GitHubプロジェクト にスターやイシューやプルリク

    DockerイベントをSlackに連携するアプリを作った - GeekFactory
  • JDK 7u65/8u11以降に存在するバイトコード検証の不具合 - GeekFactory

    JDK 7u65/8u11以降にはバイトコード検証の不具合 JDK-8051012 があります。Groovyでは、 GROOVY-6951 で報告されているように、コンストラクタ内でsuper()やthis()を使うと実行時エラーが発生します。 Gradle SSH Pluginでもコンストラクタ内でsuper()を実行するコードがあり、JDK 7u65/8u11以降で正常に動作しない問題があります。最近のJDKで不具合が修正されているか確認してみたのですが、やはり動作しませんでした。結果は以下の通りです。 成功 7u60-b19 失敗 7u65-b17 失敗 7u67-b01 成功 8u5-b13 失敗 8u11-b12 失敗 8u20-b26 残念ながら、GROOVY-6951 のスレッドによると8u40まで待つしかないようです。 なお、Travis CIでは当該の不具合に対する暫定対

    JDK 7u65/8u11以降に存在するバイトコード検証の不具合 - GeekFactory
    nobuoka
    nobuoka 2014/09/29
    『Groovyでは、 GROOVY-6951 で報告されているように、コンストラクタ内でsuper()やthis()を使うと実行時エラーが発生します。』 まじか…。
  • Dockerfileでソフトウェアの実行環境や実行方法を明示する - GeekFactory

    現在、ソースコードと一緒にビルドスクリプトを置くことで、ソフトウェアのビルド方法を明示することが慣習になっています。 今後、リポジトリにソースコードと一緒にDockerfileを置くことで、ソフトウェアの実行環境や実行方法を明示することが一般的になるかもしれないと考えています。 ゆるふわな内容ですが、稿ではDockerfileが何の役に立つか考えたいと思います。 背景 リポジトリにあるソフトウェアは、何らかの環境で実行されて初めて価値を生み出します。 そのため、実行環境や実行方法を明示しておくことが望ましいと思います。 環境構築や実行の手順はソフトウェアに付随するドキュメントに書くことが一般的ですが、しばしば以下のような問題が発生します。 手順が複雑で時間がかかる 明文化されていない手順があったりする 環境の状態によって問題が起きる そのため、環境構築や実行を以下のように改善する必要があ

    Dockerfileでソフトウェアの実行環境や実行方法を明示する - GeekFactory
  • @DelegateでJavaバージョンの差異が顕在化するケース - GeekFactory

    JDK 8でビルドしたクラスファイルをJDK 7で実行するとClassNotFoundExceptionが発生する事象でハマったのでメモ。結論からいうと、ソースコードでJava 8に固有のクラスを直接参照していなくても、@Delegateによって間接的に参照されるケースがあります。 前提 JDK 8でのコンパイル時にsource, targetのバージョンを指定しているものとします。 そうしないと、JDK 7でクラスファイルを読み込んだ時に以下のエラーが発生します。 Exception in thread "main" java.lang.UnsupportedClassVersionError: Main : Unsupported major.minor version 52.0 Gradleでは以下の2行を書くだけでOKです。 sourceCompatibility = JavaVe

    @DelegateでJavaバージョンの差異が顕在化するケース - GeekFactory
    nobuoka
    nobuoka 2014/09/23
    Groovy コードをコンパイルする際、JDK 8 を使って Java 7 向けにコンパイルしても @Delegate アノテーションを使ってると期待通り動作しないことがあるみたい。 気を付けよう。
  • 実行中のコンテナと同じ名前空間でプロセスを実行する - GeekFactory

    Dockerで実行中のコンテナに入って調査するにはnsenterを使います。正確には、nsenterコマンドを使って、コンテナと同じ名前空間でプロセスを実行します。 nsenterコマンドにはコンテナのPIDや諸々の引数を渡す必要があるので、下記を .bashrc や .zshrc に書いておきます。 # Docker: enter into the container function docker-enter () { local container="$1" if [ -z "$container" ]; then echo "Usage: $0 CONTAINER [COMMAND ARGS...]" echo docker ps return 1 fi shift sudo nsenter -m -u -i -n -p -t "$(docker inspect --format

    実行中のコンテナと同じ名前空間でプロセスを実行する - GeekFactory
    nobuoka
    nobuoka 2014/09/02
    Docker コンテナに入るための nsenter の話。
  • Apache CXFでRESTサービスをさくさく作る - GeekFactory

    Apache CXF で REST サービスをさくさく作ってみます。 自分で用意するもの。 Java 6 Eclipse Indigo m2e (Maven integration for Eclipse) Maven が用意してくれるもの。 Apache CXF Spring JUnit Apache Tomcat 新しいプロジェクトを作る [New]-[Project...]-[Maven Project] で Archetype に cxf-jaxrs-service を選びます。すると、 Apache CXF ベースの新しいプロジェクトが生成されます。 とりあえず実行してみる 生成されたプロジェクトはすぐに実行可能です。私の環境では POM エディタでエラーが出ていましたが、Maven は問題なく動きました。 プロジェクトの [Debug As]-[Maven build...]

    Apache CXFでRESTサービスをさくさく作る - GeekFactory
    nobuoka
    nobuoka 2013/04/29
    Maven を使うことで JDK と Eclipse と m2e さえインストールすればさくっと web サービス用のプロジェクトが作れる!! 便利ー。
  • 1