Gradle
TL;DR Gradle 4, Nexus 3を前提とする。 Gradleに標準で含まれる maven-publish プラグインを利用してNexusに成果物を公開できる。追加のプラグインは必要ない。 Gradleの repositories ブロックでNexusのリポジトリURLを指定する。成果物の公開、取得ともに…
Gradle Swagger Generator Plugin 2.10.0をリリースしました。 github.com 新しいリリースではSwagger UI 3に対応しました。Swagger UI 3になってから使い勝手が大きく改善されています。 このプラグインを利用すると、下記のようなビルドスクリプトを書くだ…
CircleCI 2.0でGoogle App Engine (Java8 Standard) をデプロイする方法を調べたのでメモ。 google/cloud-sdk イメージを使う。 App Engine SDKとGradleでJavaが必要になるので、 google/cloud-sdk:alpine イメージに openjdk8 を追加する。DebianはJavaの依…
GradleでSpring Boot Pluginを利用している場合、依存関係のバージョンが勝手に下がることがあります。例えば、 テスティングフレームワークのプロジェクト → spock-core-1.1-groovy-2.4 アプリのプロジェクト → テスティングフレームワークのプロジェクト …
Gradle Swagger Generator Plugin 2.6.0をリリースしました。OpenAPI YAMLのバリデーション、コード生成、Swagger UI生成を行うためのプラグインです。 github.com New features 複数のOpenAPI YAMLを扱う場合に簡潔に記述できるようになりました。これまで…
プロダクトが成長するにつれてCIの所要時間が長くなる悩みを抱えている方は多いと思います。本稿では、テストケースの並列実行でスローテストを乗り越える方法を検討します。 CIの所要時間を短縮する戦略 CIの所要時間が長くなる主な原因はテストです。だが…
気付いた範囲でまとめてみます。 フォルダ配置 Doma 2はAnnotation ProcessorでDAOの実装クラスを自動生成します。Doma 2のAnnotation ProcessorはJavaのコードにのみ対応しているため、DAOやエンティティはGroovyではなくJavaで書く必要があります。また、G…
ログやActuatorにバージョン情報を含めておくと、本番環境でどのバージョンのアプリケーションが実行されているか簡単に確認できるので便利です。 ビルド時にapplication.ymlにバージョン情報を含める Gradleでは、以下のようなビルドスクリプトを書くとappl…
Swagger YAMLを書いていると間違いに気づかないことがよくあります。リポジトリにpushした時にJenkinsやCircle CIなどで構文チェックできるとミスを防げるます。そこで、GradleのプラグインにSwagger YAMLのバリデーションを追加してみました。 使い方 build…
Gradle Swagger Generator PluginでSwagger UIを生成できるようになりました。 以下のビルドスクリプトで generateSwaggerUI タスクを実行すると、 build/swagger-ui フォルダにSwagger UIが出力されます。 plugins { id 'org.hidetake.swagger.generator' v…
GradleでSwagger YAMLからAPIサーバやAPIクライアント、APIドキュメントを生成するプラグインを作りました。 github.com もともとはGradle Swagger Codegen Pluginという名前でしたが、コードだけでなくドキュメントの生成もできるようになったので名前を変…
GradleからS3に成果物を公開する方法を調べたのでメモです。あらかじめIAMユーザを作成し、キーを取得しておく必要があります。 S3 Maven Repositoryに公開する Gradleのmaven-publishプラグインを使うと、S3のMavenリポジトリに成果物を公開できます。詳し…
GradleでSwagger Code Generatorを利用するためのプラグインをリリースしました。 github.com バージョン1.1.0では、自動生成の対象を components オプションで選べるようになりました。下記のビルドスクリプトではモデルクラスとAPIクラスを生成しています…
Swaggerのソースコード生成をGradleで利用するためのプラグインを書きました。 github.com 以下のようなビルドスクリプトを実行すると、SwaggerでAPIサーバを自動生成できます。 plugins { id 'org.hidetake.swagger.codegen' version '1.0.0' } repositorie…
GradleプラグインのテストにGradle TestKitを利用すると便利です。 何に使うの? ユニットテストではうまく動いているのに、実際のプロジェクトにプラグインを適用するとうまく動かないことがあります。これはGroovyのバージョンが違うとか、ビルドスクリプ…
SwaggerにはYAMLからAPIクライアントやAPIサーバのコードを自動生成する機能があります。コードの自動生成を利用することでドメインの実装に集中でき、また、スタブを利用することでチーム開発を円滑に進められるといったメリットがあります。 しかし、コー…
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、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…
Circle CIを利用して、JVMベースのアプリをGoogle App Engineにデプロイする作業を自動化してみました。 うれしいこと 誰でも簡単にデプロイできる CIやPull Requestレビューを通過したコードのみデプロイできるように制限できる ビルド環境の差異による影響…
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…
最近のGradleで導入されているTestKitを使ってみたのでメモします。 TestKitでできること TestKitを利用すると、Gradleプロジェクトに対するテストを実行できます。例えば、何かの設定ファイルを自動生成するタスクをGradleで定義している場合に、そのタスク…
Gradle SSH Plugin 2.3.0、Groovy SSH 2.3.0をリリースしました。 github.com 2.3.0の変更点 リモートコマンドを実行する時にコマンドラインを簡単にエスケープする構文を追加しました。これまでは自分でエスケープする(シングルクォートで囲む、もしくはバ…
Gradle SSH Plugin/Groovy SSH 2.2.0をリリースしました。 2.2.0の変更点 authentications でユーザ認証方式を指定できるようになりました。通常の使い方(パスワード認証、公開鍵認証)ではユーザ認証方式を指定する必要はありませんが、Kerberos認証などの…
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、Groovy SSH 2.1.0をリリースしました。 github.com github.com 2.1.0の変更点 SCPによるファイル転送をサポートしました。SFTPはJSchに組み込まれている機能を利用しているので簡単に実装できましたが、SCPはコマンドの標準入出力…
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、Groovy SSH 1.5.1をリリースしました。 github.com github.com 1.5.1の変更点 SFTPでファイルやディレクトリを削除する remove メソッドを提供しているのですが、ファイルやディレクトリが存在しない場合に例外が発生しないように…
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、Groovy SSH 1.4.0をリリースしました。 github.com github.com 1.4.0の変更点 ECDSA Host Keyに対応しました。正確には、以下の場合にHost Key Checkingが失敗する事象を修正しました。 known_hosts にECDSA鍵が含まれる。 SSHサー…
Gradleで特定の場合にのみテストケースを実行する方法を説明します。例えば、通常のテストケースはH2 Databaseを利用するけど、一部はテスト環境上のMySQLで実行したいといった場合を考えます。 基本的な考え方 JUnitのカテゴリ機能でテストケースをフィルタ…