2017-01-30 74 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 
相关问题