是否可以在工作流程中进行多个作业或构建?

Is it possible to have multiple jobs or builds in workflow?

首先让我告诉你我是 Circleci 的初学者,所以我的一些问题可能没有太大意义,但请耐心等待。

最近我在 Github PoC Akka FSM 上发布了我的一个项目,我从几个朋友那里听说了 Circleci 的好东西,我正在尝试将其用于我的项目。

Circleci 网页为我创建了一个 config.yml,它看起来不错,但我有一个复杂的问题,我的项目是一个 Gradle 项目,但它依赖于 Eclipse .p2 存储库,它Gradle 无法开箱即用。所以我有一个小的 Maven 项目,它从 .p2 存储库收集我的依赖项并将它们转换为一个大的胖依赖 jar。

现在,当我在本地构建时,我构建了第一个 Maven 项目,它将依赖项放置在本地 Maven 存储库中,因此 Gradle 可以从 Maven 存储库中找到工件。

现在,由于您可能猜想这在 Github 和 Circleci 的默认 config.yml 中不起作用,所以我的问题是可以结合 maven 构建和 gradle 构建在 Circleci。或在额外构建的前置步骤中定义。

否则我会尝试将 Maven 项目转换为 Gradle 项目(我不确定 Gradle 是否能够读取 .p2 存储库)。

下面是Maven Project.

感谢解答

我解决了我的问题,我想在这里解释如何,以防另一个完整的初学者登陆这里。

首先,如果您是 CircleCI 的新手,请先阅读本文,生活会轻松得多。

CircleCI Concepts

其次,这个link

CirceCI Sequential Jobs

完美地解释了顺序作业应该如何工作,一开始 'Steps' 在 'Job' 和 'Workflow' 下的措辞让我很困惑,我不确定我是否必须实施我的Maven Step in Job or Workflow, 不过好像一定是Workflow.

第三,我不太确定如何将Maven Build 的Artefacts 转移到Gradle Build,似乎是Cache 机制负责的。当我第一次阅读它时,Build System 中的缓存并没有太大意义,但我认为(我完全是在猜测)CirceCI 中的缓存就像 Java 地图,你在 Job 中输入一个带键的值,下一步作业可以为键选择值(值在这里是人工制品?)。所以我在我的 Maven 作业中,我用键“v1-dependencies-{{ checksum“fsm-akka-eclipse-dependencies/pom.xml”}}”保存我的缓存,在下一个作业中,我用相同的键加载它(另外 v1-dependencies-{{ checksum "build.gradle" }} 虽然我觉得 'build-gradle' 的校验和没有改变 CircleCI 优化了一些东西)有更多经验的人可能会清楚这里

第四,我不确定如何说 CircleCI 来安装 Maven 或 Gradle,但 CircleCI 似乎以一种神奇的方式做到了。在我之前的观点中,我提到了传输 Artefacts 的缓存,但是对于 Maven Job,我告诉将缓存保存在通常 Gradle 会寻找 Maven Artefact 的 '.m2' 目录中,可能是这样我不知道是在做把戏还是缓存。

如果你喜欢我最后的 config.yml 的样子,你可以在 link.

上找到它