GeekFactory

int128.hatenablog.com

Gradle

Doma 2をGroovyで使用する時に気を付けること

気付いた範囲でまとめてみます。 フォルダ配置 Doma 2はAnnotation ProcessorでDAOの実装クラスを自動生成します。Doma 2のAnnotation ProcessorはJavaのコードにのみ対応しているため、DAOやエンティティはGroovyではなくJavaで書く必要があります。また、G…

Spring BootでログやActuatorにバージョン情報を含める

ログやActuatorにバージョン情報を含めておくと、本番環境でどのバージョンのアプリケーションが実行されているか簡単に確認できるので便利です。 ビルド時にapplication.ymlにバージョン情報を含める Gradleでは、以下のようなビルドスクリプトを書くとappl…

Swagger YAMLのバリデーションをCIで回す

Swagger YAMLを書いていると間違いに気づかないことがよくあります。リポジトリにpushした時にJenkinsやCircle CIなどで構文チェックできるとミスを防げるます。そこで、GradleのプラグインにSwagger YAMLのバリデーションを追加してみました。 使い方 build…

Gradle Swagger Generator Plugin 1.5.1 has been released

Gradle Swagger Generator PluginでSwagger UIを生成できるようになりました。 以下のビルドスクリプトで generateSwaggerUI タスクを実行すると、 build/swagger-ui フォルダにSwagger UIが出力されます。 plugins { id 'org.hidetake.swagger.generator' v…

Gradle Swagger Generator Pluginを公開します

GradleでSwagger YAMLからAPIサーバやAPIクライアント、APIドキュメントを生成するプラグインを作りました。 github.com もともとはGradle Swagger Codegen Pluginという名前でしたが、コードだけでなくドキュメントの生成もできるようになったので名前を変…

GradleからS3に成果物を公開する

GradleからS3に成果物を公開する方法を調べたのでメモです。あらかじめIAMユーザを作成し、キーを取得しておく必要があります。 S3 Maven Repositoryに公開する Gradleのmaven-publishプラグインを使うと、S3のMavenリポジトリに成果物を公開できます。詳し…

Gradle Swagger Codegen Plugin 1.1.0をリリースした

GradleでSwagger Code Generatorを利用するためのプラグインをリリースしました。 github.com バージョン1.1.0では、自動生成の対象を components オプションで選べるようになりました。下記のビルドスクリプトではモデルクラスとAPIクラスを生成しています…

Gradle Swagger Codegen Pluginを書いた

Swaggerのソースコード生成をGradleで利用するためのプラグインを書きました。 github.com 以下のようなビルドスクリプトを実行すると、SwaggerでAPIサーバを自動生成できます。 plugins { id 'org.hidetake.swagger.codegen' version '1.0.0' } repositorie…

Gradle TestKitでプラグインをテストする

GradleプラグインのテストにGradle TestKitを利用すると便利です。 何に使うの? ユニットテストではうまく動いているのに、実際のプロジェクトにプラグインを適用するとうまく動かないことがあります。これはGroovyのバージョンが違うとか、ビルドスクリプ…

Swagger自動生成スタブの継続的デプロイ

SwaggerにはYAMLからAPIクライアントやAPIサーバのコードを自動生成する機能があります。コードの自動生成を利用することでドメインの実装に集中でき、また、スタブを利用することでチーム開発を円滑に進められるといったメリットがあります。 しかし、コー…

Gradle SSH Plugin 2.6.0 released

Gradle SSH Plugin 2.6.0、Groovy SSH 2.6.0をリリースしました。 github.com 2.6.0の変更点 New feature Add executeScript method for script execution (thanks to @matthiasbalke) Add inputStream setting for command or shell (thanks to @matthiasba…

Gradle SSH Plugin 2.5.0 released

Gradle SSH Plugin 2.5.0、Groovy SSH 2.5.0をリリースしました。 github.com 2.4.1〜2.5.0の変更点 New feature Add timeout setting (2.5.0) Bug fixes Fix executeSudo never finish if password is wrong (2.5.0) Fix closing gateway session (2.4.3) U…

Continuous deployment to App Engine from Circle CI by Gradle

Circle CIを利用して、JVMベースのアプリをGoogle App Engineにデプロイする作業を自動化してみました。 うれしいこと 誰でも簡単にデプロイできる CIやPull Requestレビューを通過したコードのみデプロイできるように制限できる ビルド環境の差異による影響…

Gradle SSH Plugin 2.4.0をリリースした

Gradle SSH Plugin 2.4.0、Groovy SSH 2.4.0をリリースしました。 github.com 2.4.0の変更点 New features: Host key checking for gateway access Put files filtered by given closure Get files filtered by given closure Add ssh.runtime object in CLI…

TestKitによるGradleプロジェクトのテスト

最近のGradleで導入されているTestKitを使ってみたのでメモします。 TestKitでできること TestKitを利用すると、Gradleプロジェクトに対するテストを実行できます。例えば、何かの設定ファイルを自動生成するタスクをGradleで定義している場合に、そのタスク…

Gradle SSH Plugin 2.3.0をリリースした

Gradle SSH Plugin 2.3.0、Groovy SSH 2.3.0をリリースしました。 github.com 2.3.0の変更点 リモートコマンドを実行する時にコマンドラインを簡単にエスケープする構文を追加しました。これまでは自分でエスケープする(シングルクォートで囲む、もしくはバ…

Gradle SSH Plugin 2.2.0をリリースした

Gradle SSH Plugin/Groovy SSH 2.2.0をリリースしました。 2.2.0の変更点 authentications でユーザ認証方式を指定できるようになりました。通常の使い方(パスワード認証、公開鍵認証)ではユーザ認証方式を指定する必要はありませんが、Kerberos認証などの…

Gradle SSH Plugin 2.1.1をリリースした

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) sc…

Gradle SSH Plugin 2.1.0をリリースした

Gradle SSH Plugin 2.1.0、Groovy SSH 2.1.0をリリースしました。 github.com github.com 2.1.0の変更点 SCPによるファイル転送をサポートしました。SFTPはJSchに組み込まれている機能を利用しているので簡単に実装できましたが、SCPはコマンドの標準入出力…

Gradle SSH Plugin/Groovy SSH 2.0.0をリリースした

Gradle SSH Plugin 2.0.0、Groovy SSH 2.0.0をリリースしました。 github.com github.com 2.0.0の変更点 executeSudo メソッドでsudoコマンドに与えるパスワードをデフォルト(SSH接続時のパスワード)から変更できるようにしました。また、sudoコマンドのパ…

Gradle SSH Plugin 1.5.1をリリースした

Gradle SSH Plugin 1.5.1、Groovy SSH 1.5.1をリリースしました。 github.com github.com 1.5.1の変更点 SFTPでファイルやディレクトリを削除する remove メソッドを提供しているのですが、ファイルやディレクトリが存在しない場合に例外が発生しないように…

Gradle SSH Plugin 1.5.0をリリースした

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…

Gradle SSH Plugin 1.4.0をリリースした

Gradle SSH Plugin 1.4.0、Groovy SSH 1.4.0をリリースしました。 github.com github.com 1.4.0の変更点 ECDSA Host Keyに対応しました。正確には、以下の場合にHost Key Checkingが失敗する事象を修正しました。 known_hosts にECDSA鍵が含まれる。 SSHサー…

Gradleで特定の条件を満たした場合にのみテストケースを実行

Gradleで特定の場合にのみテストケースを実行する方法を説明します。例えば、通常のテストケースはH2 Databaseを利用するけど、一部はテスト環境上のMySQLで実行したいといった場合を考えます。 基本的な考え方 JUnitのカテゴリ機能でテストケースをフィルタ…

Gradle SSH Plugin 1.1.5をリリースした

Gradle SSH Plugin 1.1.5、Groovy SSH 1.1.9をリリースしました。 github.com サーバでSFTPが無効に設定されている場合にスクリプトがハングアップしてしまうバグを修正しました。約3ヶ月ぶりにリリースしようとしたらテストが通らなくて焦りました。Travis …

Gradle SSH PluginやGroovy SSHはどのようにテストしているか

G*Advent Calendar 2015の18日目です。 qiita.com 昨日は某社の方をゲストに迎えて闇の話をしていたためAdvent Calendarの公開が遅れました。大変申し訳ございません。 本記事では、Gradle SSH PluginやGroovy SSHをどのようにテストしているか説明します。G…

Gradle SSH Plugin 1.1.4, Groovy SSH 1.1.8をリリースした

Gradle SSH Plugin 1.1.4とGroovy SSH 1.1.8をリリースしました。リトライ機構にバグがあったので修正しました(Packet corrupt errors after upgrading from 1.1.5 to 1.1.7 · Issue #77 · int128/groovy-ssh · GitHub)。バグレポートをいただけるのは嬉し…

Gradle Updateをカイゼンした

Gradle Updateを公開します - GeekFactoryint128.hatenablog.com Gradle Wrapperを自動更新してくれるサービス Gradle Update を公開してから積み残しがいくつかあったので改善しました。 Done README 英語圏の人にも使ってもらうため、使い方やスクリーンシ…

Gradle Updateを公開します

Gradle Wrapperを自動更新してくれるサービス Gradle Update を公開します。Gradle Wrapperのようなビルドシステムは一度設定するとバージョンを上げるタイミングがあまりないのですが、新しいバージョンを使うとパフォーマンスが改善されたりバグを踏まずに…

Gradle Wrapperを自動アップデートするサービスを作ってる

Gradleはおよそ2〜3ヶ月ごとに新しいバージョンがリリースされています。それに合わせてGradle Wrapperもアップデートするとバグフィックスや新機能の恩恵を受けられるのですが、後回しにして放置してしまうことが多いと思います。 ビルドを自動化したのなら…

Gradle SSH Plugin 1.1.1をリリースした

Gradle SSH Plugin 1.1.1をリリースしました. GradleからリモートサーバにSSHしてコマンド実行やファイル転送を行うことができるプラグインです.Groovy DSLを活用しているので,簡単にSSH処理を記述できます. int128/gradle-ssh-plugin New Features 1.1…

Gradle SSH Plugin 1.0.5をリリースした

Gradle SSH Plugin 1.0.4と1.0.5をリリースしました。 New Feature in v1.0.4 コマンドやシェルの終了ステータスを無視する設定を追加しました。下記のように引数に ignoreError: true を加えると、コマンドやシェルが0以外のステータスコードを返しても例外…

Gradle SSH Plugin 1.0.3をリリースした

Gradle SSH Plugin 1.0.3をリリースしました.ビルドツール Gradle からSSHを使ってデプロイなどを行うためのプラグインです. New Features Gradleの標準APIに合わせて,ファイル転送のメソッドシグネチャを見直しました.具体的には,get() と put() の記…

Gradle SSH Plugin 1.0.2をリリースした

Gradle SSH Plugin 1.0.2をリリースしました. SSH Pluginを使うと,下記のようにGradleからSSHでコマンドを実行したりファイルを送受信したりできます. // build.gradle plugins { id 'org.hidetake.ssh' version '1.0.2' } remotes { webServer { host = …

Gradle SSH Plugin 1.0.1をリリースした

Gradle SSH Pluginのバージョン1.0.1をリリースしました。開発を始めてから2年が経ち、仕様も安定してきたので、バージョンを1.0に上げることにしました。正直にいうとNew Yearでキリがいいからバージョンを上げました。本当は2014年に上げたかったんだけど…

GradleでビルドしてDockerで配布する

JGGUG LTにて、GradleでビルドしてDockerで配布するという内容を発表しました。ビールを片手にピザをつまみながら発表を聴くというゆるいスタイルで楽しかったです。 GradleでビルドしてDockerで配布する #jggug from Hidetake Iwata Dockerがあれば…

今日から始めるGradleプラグイン開発 #gadvent

G*Advent Calendar(Groovy,Grails,Gradle,Spock...) Advent Calendar 2014 - Qiitaの17日目です。 本記事では、9日目の記事で紹介したGradleプラグインのテンプレートプロジェクトを使って、新しいGradleプラグインを作る方法を説明します。14日目の記事で紹…

Gradle Slashプラグインをリリースしました #gadvent

G*Advent Calendar(Groovy,Grails,Gradle,Spock...) Advent Calendar 2014 - Qiitaの14日目です。 Gradle Slashというプラグインをリリースしました。このプラグインを使うと、Fileオブジェクトと文字列をスラッシュ(除算演算子)で連結して書けるようにな…

GradleによるJVMアプリケーションのパッケージングと配布 #gadvent

G*Advent Calendar(Groovy,Grails,Gradle,Spock...) Advent Calendar 2014 - Qiitaの10日目です。 アプリケーションを公開する際、ユーザが使いやすい形でアプリケーションを配布することで、より多くのユーザに使ってもらえることが期待できます。また、ア…

Gradleプラグインのテンプレートプロジェクトを公開します #gadvent

G*Advent Calendar(Groovy,Grails,Gradle,Spock...) Advent Calendar 2014 - Qiitaの9日目です。 GradleはビルドスクリプトをGroovy DSLで書くため、現実のプロジェクトで複雑な問題が発生した場合に柔軟に対処できる特徴を持っています。現実のプロジェクト…

GradleでBintrayを経由してMaven Centralに成果物を公開する

Maven Centralに成果物を公開するには、OSS Sonatype Nexusに成果物をアップロードする方法が広く知られていますが、Bintrayを経由してリリースする方法もあります。この方法には以下のメリットとデメリットがあります。 メリット Bintrayには成果物に署名を…

Gradle SSH Plugin 0.4.5 released

GradleからSSHアクセスするためのプラグインGradle SSH Pluginのバージョン0.4.5をリリースしました。 本バージョンではJava 6で動作するように改善しました。まだまだJava 6は需要があるんですね。レガシー環境のデプロイ自動化に役に立てばうれしいです。 …

Gradle SSH Plugin 0.4.4 released

デプロイなどでGradleからSSHアクセスするためのプラグインGradle SSH Pluginのバージョン0.4.4をリリースしました。 build.gradleでプラグインを読み込めばすぐに使えます。以下はreloading Tomcatのサンプルです。 plugins { id 'org.hidetake.ssh' versio…

Gradle SSH Plugin 0.4.3をリリースした

GradleでSSHを使うためのプラグイン Gradle SSH Plugin の新バージョンをリリースしました。このプラグインを使うと、Gradleでビルドした成果物をシームレスにデプロイできます。 plugins { id 'org.hidetake.ssh' version '0.4.3' } remotes { webServer { …

Bintray PGP Signingを試す

BintrayではJCenterからMaven Centralにパッケージを同期する機能がありますが、これを使うにはあらかじめパッケージのファイル(JAR, POM)にPGP署名を付与しておく必要があります。 BintrayではアップロードしたパッケージにPGP署名を付与する仕組みがある…

Gradle SSH Plugin 0.3.3 released

GradleからSSHを使うためのプラグインの新バージョンをリリースしました。 今回のリリースからグローバル設定 (global settings) で指定できる設定項目が大幅に増えました。 例えば、コマンド実行時にPTY allocationを指定するフラグはこれまでメソッドごと…

Gradleプラグインの作り方

G* Advent Calendar 2013の19日目です。Gradleでビルドスクリプトを書いていると、他でも再利用できるタスクや関数が出てくることがあります。ビルドスクリプトの一部をプラグインに切り出すことで、他のGradleプロジェクトで再利用できます。bluepapa32さん…

Gradleを開発プロジェクトで使うときのこと

G* Advent Calendar 2013の5日目です。今日はGradleを開発プロジェクトで使う時に考えることを書いてみます。いわゆるビルド職人の仕事をゆるふわに考えてみたいと思います。対象はJVMベースのWebアプリとバッチアプリとします。記述言語はJavaを想定してい…

Gradle SSH Plugin 0.1.9をリリースしました

ビルドツールのGradleでSSHを使うためのプラグインを作っています。ちょっと前にバージョン0.1.9をリリースしたので、宣伝のエントリを残しておきます。https://github.com/int128/gradle-ssh-pluginこのプラグインの主な用途はやはりデプロイでしょう。アプ…

GradleでMaven Central Repositoryに成果物をリリースする

Gradleでビルドした成果物をMaven Central Repositoryにリリースする方法を説明します。成果物の公開にあたってはSonatype OSSRHで申請が必要です。こちらのイケメンな記事が大変参考になります。こちらの記事ではMavenを使っていますが、本稿ではGradleを使…