continuous-integration - CI/CD 脚本中是否需要构建阶段
问题描述
我使用这个配置大约两年了。我必须说我对 DevOps 知之甚少,但我使用它们来自动化测试过程和向远程 Artifactory 交付的 ftifact。
昨天我读到一篇关于 CI/CD 的文章,其中一件事引起了我的注意,第 3 条:“先打包,然后运行作业”。
我不喜欢我的管道的一件事是花费的时间……越快需要 6 分钟,越慢 10-11 分钟。
我正在使用 GitLab CI/CD,我说的是 Android 应用程序、Android 库和 Java 库。
我所有的管道都有 3 个阶段:
build
,我在其中运行命令./gradlew assembleReleasetest
,我在其中运行./gradlew test ,然后运行与 JaCoCo 相关的脚本deploy
,这里我有几个命令可以将工件发布到远程 Artifactory
我开始认为build
可以删除第一阶段,因为它不会产生任何有趣的结果(它将在 GitLab 中生成一个工件,但我没有使用它)。我正计划删除它。
那会是正确的吗?我问这个是因为它就像我在开始使用 DevOps 时学到的某种法则,每个脚本都必须有一个build
阶段,然后是一个test
阶段。但如果test
舞台确实建立起来了,那我为什么要先建立呢?
我认为这只是改善管道时间的一种方式。困扰我的是,我需要等待大约 10 分钟才能让 Artifactory 中的工件准备好使用。
如果您问,在某些脚本(Android 脚本)中,我启用了缓存,而在其他脚本中,我没有,也没有看到实质性差异。这是缓存部分
cache:
key: ${CI_PROJECT_ID}
paths:
- .gradle/
谢谢!
解决方案
推荐阅读
- database-design - 每个帐户具有单独数据库的 Web 应用程序
- azure-logic-apps - Azure 逻辑应用中的 Odata 时间格式问题
- react-native - 为什么 react redux firebase 不是一个函数?
- php - 为什么mysql数据库中的新值出现在我的php表中?
- design-patterns - 委托模式;如何共享上下文信息?
- javascript - 如何制作一个可以将任何看起来像 javascript 代码的字符串转换为对象的函数?
- python - ValueError:python AI程序中的矩阵未对齐问题
- c - 为什么在这种情况下使用 memset
- jquery - 使用 Jquery 在 foreach MVC Razor 表中定位特定 td
- omnet++ - Castalia WBAN application | Getting Throughput