こんばんは。エキサイト株式会社中尾です。
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からでもどこでも実行できて便利になると思います。 リリースコマンドはツールに依存しない形にするととても便利になると思います。