用于 Maven 部署的 Gitlab CI/CD 的适当阶段是啥?
Posted
技术标签:
【中文标题】用于 Maven 部署的 Gitlab CI/CD 的适当阶段是啥?【英文标题】:what are the proper stages for Gitlab CI/CD for a maven deploy?用于 Maven 部署的 Gitlab CI/CD 的适当阶段是什么? 【发布时间】:2021-07-31 07:12:44 【问题描述】:我正在将 Gitlab CI/CD 用于 Java/Maven 项目,并且对显示多个阶段的许多示例感到困惑,其中每个阶段都调用特定的 Maven 阶段(例如清理、编译、测试、安装)
maven 文档非常清楚,每个阶段都会隐式调用所有先前的阶段。所以我的问题是,为什么这些示例不只是调用阶段中列出的最后一个阶段?例如,如果 yml 中最后一个非手动调用的阶段执行“mvn install”,为什么不把它作为 yml 中的唯一阶段?看起来这只是浪费 CPU 和时间,因为安装还会调用 'clean, compile, test,这些都已作为管道中先前阶段的一部分被调用。
【问题讨论】:
【参考方案1】:在不同阶段运行不同的maven目标的主要原因是清晰。
如果测试失败并且管道有一个运行 mvn deploy
的作业,您需要查看管道失败的日志。
但是,如果存在执行 mvn test
的单独作业,您一眼就会看到管道由于测试而失败。
在 gitlab 文档的示例中,他们使用缓存来缓存 mvn compile
的输出,因此后续步骤中的 maven 目标不会从头开始编译,而是使用缓存。
【讨论】:
首先没有运行目标。有正在运行的生命周期,这些分离没有意义,表明对 Maven 生命周期的理解不存在。如果测试失败等,您可以在输出中看到。除了将建议的内容分开之外,您还将运行几项加倍等。【参考方案2】:建议您先调用mvn compile
然后mvn test
等的“教程”不了解 Maven 生命周期。
只需调用一个命令,如mvn install
用于安装或mvn deploy
,如果您想在Maven 的帮助下将其部署到某个Maven 存储库。
【讨论】:
谢谢。你说的很有道理。这很奇怪,因为我提到的一些示例直接来自 GitLab 的技术作家:gitlab.com/gitlab-examples/maven/simple-maven-example以上是关于用于 Maven 部署的 Gitlab CI/CD 的适当阶段是啥?的主要内容,如果未能解决你的问题,请参考以下文章