【问题标题】:Running a Grunt task before MVN in a Build pipeline?在构建管道中在 MVN 之前运行 Grunt 任务?
【发布时间】:2015-09-17 02:57:26
【问题描述】:

这个问题是针对 Bluemix DevOps 的。

我有一个 Java 后端应用程序,它有一个相当大的 JavaScript 前端。因此,我创建了一个 GRUNT 任务来执行所需的操作:uglify、minify、CDNify 等。我当前的设置是让 Bluemix 构建运行 mvn -B package,并预先将 Grunt 任务作为脚本在我的本地机器上运行:

    #!/bin/bash
    grunt build
    git add --all
    git commit
    git push origin master

但这排除了使用在线编辑器进行的任何编辑。所以我想让这两个任务都由管道运行。我看到了 3 个选项:

  1. 在一个由git push 触发的构建块中将两个任务作为单独的任务运行
  2. 在一个由git push 触发的构建脚本中运行它们
  3. 运行 2 个管道步骤,第一个由 git push 触发,第二个由第一个完成
  4. 别的东西

我还没有尝试过(对我感到羞耻),只是想问一下之前是否有人这样做过(如果是 - 很酷,如果不是,我稍后会发布我的发现)

【问题讨论】:

  • This page at Bluemix 提到如果 Gruntfile 存在于您的应用根目录中,它将在部署之前运行 - 这对您的应用有效吗?
  • 我的挑战是:我已经有一个 pom.xml - 所以 cf push 只会选择一个。该解释也适用于 cf push,但不适用于构建管道。混合语言是一团糟(我喜欢混乱)。但是谢谢你参与
  • 啊,我明白了。好吧,如果您喜欢混乱 :) 下一步可能是自定义 buildpack,其中包含 grunt 和 maven,并且每次执行“git push”时都会触发构建,这样您仍然可以使用在线 IDE。我在 Heroku 上使用 PHP 应用程序完成了类似的工作,这些应用程序需要在构建期间运行 Grunt 任务。
  • 刚刚解决了...需要 2 个构建步骤

标签: maven gruntjs ibm-cloud devops


【解决方案1】:

解决了。这是我尝试过的:

  • 在 build 中修改脚本并添加 npm install 前缀
    未找到 npm 或 mvn(取决于我选择的内容)
  • 在一个构建阶段添加 2 个作业,一个 grunt 一个 maven
    (部署任务找不到 war 文件)
  • 使用 2 个流水线阶段(见下图):Horray --- 成功了。

没有一个构建步骤需要设置目录,这是一个小陷阱,因为mvntarget 设置为默认目录,所以删除它。 Bower/Grunt 的脚本是这样的:

 #!/bin/bash
 npm install
 grunt build 

maven 任务的脚本:

#!/bin/bash
mvn -B package

就像一个魅力(注意不要添加你实际上不需要的 npm 模块,它会减慢构建速度)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2012-12-28
    • 2019-06-16
    • 2018-05-13
    相关资源
    最近更新 更多