跳到主要内容

Gradle 构建

表单介绍

  • JDK 版本号:下拉列表选择合适的 JDK 版本,插件执行时会根据选择的版本初始化 JDK 环境。

  • Gradle 版本号:下拉列表选择合适的 Gradle 版本,插件执行时会根据选择的版本初始化 Gradle 环境。

  • 构建命令:构建命令为用户自定义构建命令,命令执行目录为代码库根路径,支持 ${参数 Key} 获取环境变量,注意添加 set -e 可控制脚本命令出错自动退出。

# Gradle默认构建命令
chmod +x ./gradlew
./gradlew build
  • 暂存构建物

    • 唯一标识:制品产出的标识,在下游任务可以通过 ${唯一标识} 方式引用来获取构建物。
    • 打包文件/目录:选择制品产出的文件或目录,可以是单个,也可以是多个(这些打包目录规整到一起压缩)。
  • 构建缓存

缓存参数支持绝对路径、相对路径两种写法,例如:

  • ~/.gradle/caches
  • xxx/xxx 相对于代码库的根目录
  • /root/workspace/xxx

规则说明:

  • 所谓缓存,实质上就是把我们流水线中重复使用的模块,打包上传的 S3 中存储,当再次触发流水线时,从 S3 中下载解压缓存文件
  • 只有流水线构建成功,才会上传更新缓存文件
  • 缓存文件默认失效 30 天
  • 每次触发流水线,可延长缓存失效(即使构建失败)

注意事项:

设置依赖源

  • 单个项目生效:修改 build.gradle
  • 全局项目生效:/root/.gradle/init.gradle 下创建 init.gradle

构建加速

为了加快构建效率,插件设置了默认依赖源为阿里云

/root/.gradle/init.gradle下创建init.gradle

allprojects{
repositories {
def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public/'
def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter/'
def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google/'
def ALIYUN_GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
remove repo
}
if (url.startsWith('https://plugins.gradle.org/m2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GRADLE_PLUGIN_URL."
remove repo
}
}
}
maven { url ALIYUN_REPOSITORY_URL }
maven { url ALIYUN_JCENTER_URL }
maven { url ALIYUN_GOOGLE_URL }
maven { url ALIYUN_GRADLE_PLUGIN_URL }
}
}

常用搭配:

镜像构建部署 (单制品)

制品上传部署 (单制品)

镜像构建部署 (多制品)