2017-01-30 71 views
0

我想創建使用publishLocal in Docker,login in ecrpublishLocal in Docker的自定義任務。如何從現有任務創建自定義任務

另請注意,我僅在自定義任務中修改了「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

以下是如何從您的自定義任務中觸發現有任務的方法。從你的問題,你希望他們在一些特定的順序被觸發,所以這裏是你需要做的

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

現在,當你觸發releaseDev這將首先push in ecr然後publishLocal in Docker

注:不要忘記添加lazytaskKey定義,因爲它可能會導致一些奇怪的初始化的問題。

+0

謝謝你親切的回答,並修復我可憐的英語。 如何僅在'releaseDev'任務中修改設置。 我想通過任務更改repositoryName。 –

+0

'in releaseDev:= ...'? – marios

0

謝謝marios。 我試着寫下面的代碼,並正確處理任務依賴關係。 但是,使用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 
相關問題