当前位置: 首页 > news >正文

Gradle 与 CI/CD 集成:Jenkins/GitHub Actions 自动化构建配置

将 Gradle 与 CI/CD 工具(如 Jenkins 或 GitHub Actions)集成,可以实现自动化构建、测试、打包和部署,极大提升开发效率。以下是具体的配置方案:

一、Gradle 项目基础配置

首先确保 Gradle 项目本身支持自动化执行,关键配置如下:

  1. build.gradle 核心任务
    定义构建、测试、打包等任务,确保可通过命令行执行:

    // 示例:Java 项目
    plugins {id 'java'id 'maven-publish' // 如需发布到仓库
    }group = 'com.example'
    version = '1.0.0'repositories {mavenCentral()
    }dependencies {testImplementation 'junit:junit:4.13.2'
    }// 打包任务(如生成 JAR)
    jar {manifest {attributes 'Main-Class': 'com.example.Main'}
    }// 自定义任务:构建+测试+打包
    task buildAndPackage(type: GradleBuild) {tasks = ['clean', 'test', 'jar']
    }
    
  2. 添加可执行权限
    确保项目中的 gradlew(Gradle wrapper)有执行权限:

    chmod +x gradlew
    

    提交 gradlewgradlew.batgradle/wrapper/ 目录到版本控制,避免依赖系统安装的 Gradle。

二、与 Jenkins 集成

Jenkins 是常用的 CI/CD 工具,通过 Pipeline 实现 Gradle 自动化流程:

1. 前提条件
  • Jenkins 已安装 Gradle Plugin(可选,也可直接用 gradlew)。
  • 项目代码托管在 Git 仓库(如 GitHub、GitLab)。
2. Pipeline 配置(Jenkinsfile

在项目根目录创建 Jenkinsfile,定义流水线步骤:

pipeline {agent any // 可指定特定节点stages {stage('拉取代码') {steps {git url: 'https://github.com/your/repo.git', branch: 'main'}}stage('构建与测试') {steps {// 使用 gradlew 执行任务(无需系统安装 Gradle)sh './gradlew clean test' // Linux/macOS// bat 'gradlew.bat clean test' // Windows}post {// 归档测试报告always {junit 'build/test-results/test/**/*.xml'}}}stage('打包') {steps {sh './gradlew jar'}post {// 归档构建产物success {archiveArtifacts artifacts: 'build/libs/*.jar', fingerprint: true}}}stage('部署') { // 可选:部署到服务器/仓库steps {sh './gradlew publish' // 如需发布到 Maven 仓库// 或通过 SSH 部署到服务器// sshPublisher(publishers: [sshPublisherDesc(...)])}}}
}
3. Jenkins 配置步骤
  1. 新建“流水线”项目,选择“从 SCM 加载 Jenkinsfile”。
  2. 配置 Git 仓库地址和分支,Jenkins 会自动检测 Jenkinsfile 并执行流程。

三、与 GitHub Actions 集成

GitHub Actions 是 GitHub 内置的 CI/CD 工具,配置更轻量(通过 .github/workflows 目录)。

1. 工作流配置文件

在项目根目录创建 .github/workflows/gradle-ci.yml

name: Gradle CI/CDon:push:branches: [ main, develop ] # 推送时触发pull_request:branches: [ main ] # PR 时触发jobs:build:runs-on: ubuntu-latest # 可选:windows-latest, macos-lateststeps:- name: 拉取代码uses: actions/checkout@v4- name: 设置 JDK 17uses: actions/setup-java@v4with:java-version: '17'distribution: 'temurin'cache: gradle # 缓存 Gradle 依赖,加速构建- name: 授予 gradlew 执行权限run: chmod +x ./gradlew- name: 构建与测试run: ./gradlew clean test- name: 打包run: ./gradlew jar- name: 上传构建产物uses: actions/upload-artifact@v4with:name: gradle-buildpath: build/libs/*.jar- name: 部署(可选)if: github.ref == 'refs/heads/main' # 仅 main 分支触发部署run: ./gradlew publishenv:# 传递仓库凭证(如 Nexus/GitHub Packages)MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
2. 关键配置说明
  • 触发条件:通过 on 定义触发场景(推送、PR 等)。
  • 缓存优化cache: gradle 缓存依赖,减少重复下载。
  • 安全凭证:敏感信息(如账号密码)通过 GitHub Secrets 存储,避免硬编码。
  • 多环境支持:可通过 runs-on 指定不同操作系统(Linux/Windows/macOS)。

四、通用最佳实践

  1. 依赖缓存:在 CI/CD 中缓存 ~/.gradle/caches 目录,加速构建(Jenkins 可通过插件,GitHub Actions 已集成)。
  2. 并行任务:对多模块项目,使用 ./gradlew build --parallel 并行执行任务。
  3. 测试报告:归档测试结果(如 JUnit 报告),便于问题排查。
  4. 条件执行:通过分支名(如 main/develop)或标签(tags: v*)触发不同流程(如生产部署仅在 main 分支)。
  5. 版本管理:结合 gradle-release-plugin 实现自动版本号递增和标签创建。
http://www.dtcms.com/a/536133.html

相关文章:

  • STM32——IWDG
  • 一般的网站开发语言用什么免费网页制作
  • 浅述视频汇聚平台EasyCVR视频编解码与转码技术如何成就视频体验
  • 站长工具seo域名解析不了腾讯微信小程序公众号
  • cms网站访问人数网站主机多大
  • 基于线性预测算法的PON系统动态资源调度matlab仿真
  • 10月27日
  • 系规案例模拟题分享
  • flink实验三:实时数据流处理(踩坑记录)
  • Milvus简介
  • 高并发内存池 - 开发记录08,09
  • 廊坊网站排名优化公司哪家好哈尔滨网站制作公司
  • Node.js 数据查询优化技巧
  • 最新电子电气架构(EEA)调研-2
  • 【数据结构】顺序表+回调函数
  • 图像归一化:OpenCV 高效映射 [0,255] → [-1,1] 性能实测
  • allWebPlugin.IE扩展使用介绍
  • C语言输入输出函数完整指南:从基础到高级应用
  • 20.10 多模态PPT生成准确率突破93%!ChatPPT v3.0动态权重技术深度解析
  • 中国移动通信联合会人工智能与元宇宙产业委联席秘书长叶毓睿受聘为“北京设计学会无障碍设计专业委员会指导专家”
  • 励志网站织梦源码建个人网上银行登录入口
  • Nginx清除浏览器缓存的三个缓存响应头的关系详解
  • 14天极限复习软考-day5 软件工程 、UML
  • 基于M4-R1开发板的OpenHarmony开发实战丨创建第一个应用工程
  • 【计算机视觉】Python 验证码图片分割:基于 OpenCV 的字符区域提取实现
  • 时序论文速递:覆盖时间序列预测、分类、异常检测及交叉应用!(10.20-10.24)
  • wordpress 建视频网站福步外贸论坛怎样注册
  • 没有网站可以做的广告联盟家居企业网站建设精英
  • navicat11不支持mysql8.0的加密方式
  • 程序综合实践第五次DP1