2017-01-30 9 views
0

publishLocal in Docker,login in ecr、およびpublishLocal in Dockerを使用するカスタムsbtタスクを作成したいとします。既存のタスクからカスタムsbtタスクを作成する方法

また、 "DockerのpublishLocal"設定はカスタムタスクでのみ変更されています。

コードを記述しようとしましたが、機能しませんでした。

val releaseDev = taskKey[Unit]("push docker image") 
releaseDev := (push in ecr).value 
releaseDev := releaseDev.dependsOn(publishLocal in Docker).value 
releaseDev := (projectSettings ++ Seq(repositoryName in ecr := (packageName in Docker).value + "-stg" + ":" + (version in Docker).value)) 

答えて

1

カスタムタスクから既存のタスクをトリガーする方法は次のとおりです。あなたの質問から、あなたはので、ここであなたがreleaseDevをトリガーするとき、あなたはそれが最初push in ecrその後、publishLocal in Dockerを向けるだろう今

lazy val releaseDev = taskKey[Unit]("push docker image") 
releaseDev := Def.sequential(push in ecr, publishLocal in Docker).value 

を行うために必要なもので、彼らはいくつかの特定のシーケンスでトリガすることにしたいです。

注:それはいくつかの奇妙な初期化の問題につながる可能性があるので、あなたのtaskKey定義でlazyを追加することを忘れないでください。

+0

ご迷惑をおかけして申し訳ありません。 'releaseDev'タスクでのみ設定を変更する方法はありますか? タスクごとにrepositoryNameを変更したいとします。 releaseDev: '...'の中の –

+0

's? – marios

0

ありがとうございました。 以下のコードを書こうとしましたが、タスクの依存関係が適切に処理されました。 ただし、プロジェクト設定の1つとしてrepositoryNameが使用されています。

// docker publish settings 
import com.amazonaws.regions.{Region, Regions} 

region in ecr := Region.getRegion(Regions.AP_NORTHEAST_1) 
repositoryName in ecr := (packageName in Docker).value + ":" + (version in Docker).value 
localDockerImage in ecr := (packageName in Docker).value + ":" + (version in Docker).value 

// Publisher Setting 
//~~~~~~~~~~~~~~~~~~~ 
import ReleaseTransformations._ 

releaseProcess := Seq[ReleaseStep](
    checkSnapshotDependencies, 
    inquireVersions, 
    runClean, 
    runTest, 
    setReleaseVersion, 
    commitReleaseVersion, 
    tagRelease, 
    ReleaseStep(state => Project.extract(state).runTask(publishLocal in Docker, state)._1), 
    ReleaseStep(state => Project.extract(state).runTask(login in ecr, state)._1), 
    ReleaseStep(state => Project.extract(state).runTask(push in ecr, state)._1), 
    setNextVersion, 
    commitNextVersion, 
    pushChanges 
) 

lazy val releaseDev = taskKey[Unit]("push docker image") 
releaseDev := Def.sequential(publishLocal in Docker, login in ecr, push in ecr).value 
(repositoryName in ecr) in releaseDev := (packageName in Docker).value + "-stg" + ":" + (version in Docker).value 
関連する問題