gradleからgradle実行

こんばんは。エキサイト株式会社中尾です。

gradleからjibを実行する時引数でいろいろ指定すると思いますが、めんどくさいですよね?

※例ではspring.profiles.activeしか指定していません。

./gradlew jib -Djib.container.args=--spring.profiles.active=dev -Djib.to.image=$IMAGE

個人的にargsとか、環境ごとには変わりますが基本コマンド変わらないと思います。 ということ、私は以下のような形でgradleからgradleを実行します。

./gradlew apiAuthBuild -Ptag= bugfix/test

コマンドを実行する前に、aws configreは設定しています。 DOCKER_CONFIGを指定することでloginした際のcredentialsを別ディレクトリに保存ができます。

ext repositoryDev = hoge
ext repositoryNameApiAuth = hogehoge

task apiAuthBuild(type: Exec) {
    doFirst {
        def tag = getProperty('tag').replaceAll( "/","-" )
        def apiAuth = repositoryDev + "/" + repositoryNameApiAuth + ":" + tag
        def ecrLogin = "aws ecr get-login-password | docker login --username AWS --password-stdin " + repositoryDev
        environment "DOCKER_CONFIG" , System.getProperty("user.dir") + "/.docker"
        executable "sh"
        args "-c", ecrLogin + " && " +
                "./gradlew api-auth:jib " +
                "      -Djib.container.args=--spring.profiles.active=dev " +
                "      -Djib.to.image=" + apiAuth

    }
}

aws configreさえ設定していれば、ローカルからでもjenkinsからでもどこでも実行できて便利になると思います。 リリースコマンドはツールに依存しない形にするととても便利になると思います。