jenkins - CI 开发的最佳实践是什么?
问题描述
我们开始为CI
我公司的系统开发工作流程。
目前我们只做一些基本的任务,比如构建、测试和上传到Nexus
.
技术堆栈是一个 Java 项目,它构建Gradle
并构建Jenkins
了我们的构建。
目前我正在使用一些基本Groovy
脚本来制作我们需要的东西,但是每次我将更新的代码复制并粘贴到UIJenkins
并从 UI 运行作业Jenkins
以查看结果时,对我来说这似乎不是一个很好的方法用于开发此类自动化代码。
我的问题是,构建和运行Jenkins
作业的最佳实践是什么?
- 是否可以直接运行它
Intellij
? - 我们是否需要创建一个
Jenkins
应该保存为存储库的项目,然后将其部署到Jenkins
机器上? - 我们是否需要使用一些
Intellij
插件才能使用Jenkins
?
欢迎更多最佳实践:)
解决方案
Jenkins 有一个 API - 所以你可以做任何你想做的事!
但总的来说,对于中小型团队来说,最好使用Jenkinsfile并让 Jenkins 从 SCM 中拉取代码更改(或拉取请求)并触发构建。如果您的 SCM 支持此功能(Github 和 bitbucket 支持此功能),您还可以配置挂钩以触发构建。
如果您最终将工件推送到 docker 映像,我强烈推荐 docker multi-stage builds。
如果您对 CI/CD 的东西完全陌生 - Atlassian 有很多很好的资源https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment
推荐阅读
- php - 如何不打印等于使用 php 脚本登录的用户的会话名称的 mysql 表值
- ioctl - nvme-cli 发送 io-passthru,data_len 等于 max_sectors_kb,显示“passthru:无效参数”
- javascript - 提交表单时如何调用API?
- azure-active-directory - Azure Active Directory(AAD) 默认生成具有 90 天滑动到期的令牌。如何减少相同的滑动到期时间?
- ios - 如果设备日期在 Swift 中更改,则计时器递减时间会更改
- php - 复合键的 Laravel 验证
- java - Hibernate+ postgres 批量更新不起作用
- c# - 如何在 NOPCOMMERCE app 中使用开发和生产环境?
- javascript - 在离子电容器 ios 平台中出现错误:仅在浏览器 HTTP/HTTPS 环境中支持 RecaptchaVerifier
- apache-spark - Zeppelin 0.9 在 YARN 客户端模式下运行 Spark 笔记本,但不是 YARN 集群