跳到主要内容

2、Gradle构建工具实践

实战:Gradle构建工具实践-2023.6.22(测试成功)

image-20230622084504342

目录

[toc]

推荐文章

https://www.yuque.com/xyy-onlyone/aevhhf?# 《玩转Typora》

image-20230619080407452

实验环境

gitlab/gitlab-ce:15.0.3-ce.0
jenkins/jenkins:2.346.3-2-lts-jdk11
gradle-7.6.1
openjdk 11.0.18

实验软件

链接:https://pan.baidu.com/s/1OQaybJhxxCiGUo0Cjo6cTQ?pwd=0820 提取码:0820

2023.6.22-实战:Gradle构建工具实践-(测试成功)

image-20230622084424449

1、Gradle构建工具配置

官网:https://gradle.org/releases/ Gradle基于Groovy,具有更灵活更强大的构建系统,能帮助我们构建更复杂的项目。

image-20230622080919455

1.spring boot项目生成

初始化一个springboot项目 https://start.spring.io/ (也可以下载一个ide) 如果打不开也可以使用:https://start.aliyun.com/bootstrap.html

一个spring boot项目其实有很多依赖。

生成一个标准的Gradle项目:

  • 项目类型: Gradle-Groovy
  • 语言: Java
  • SpringBoot: 2.7.12 (版本)(随着时间变化版本号会变,默认即可)
  • Metadata
    • Group : 组信息
    • Artifact:包名称
    • Packging: 包格式(Jar、War)
  • Dependencies: 定义项目依赖(最后都会写入Pom.xml)

jar包:可执行的程序。(目前基本是这种) war包:需要放到容器里,例如tomcat里,需要支持jsp环境的那种,才可以解析。

image-20230622081055880

以上配置完成后,点击Generate,生成测试代码。

image-20230622081149595

代码下载完成 后,可以用vscode打开,看下项目代码结构:

image-20230622081244837

2.创建gitlab仓库并上传代码

  • 创建一个devops6-gradle-service项目

注意:这里取消勾选初始化仓库配置项。

image-20230622081332354

  • 在本地git端将项目代码上传到刚才创建的项目里:

image-20230622081343691

Push an existing folder

cd existing_folder
git init --initial-branch=main
git remote add origin http://172.29.9.101:8076/devops6/devops6-gradle-service.git
git add .
git commit -m "Initial commit"
git push -u origin main

自己推送过程:

git init --initial-branch=main
git remote add origin http://172.29.9.101:8076/devops6/devops6-gradle-service.git
git add .
git commit -m "Initial commit"
git push -u origin main

image-20230622081442653

  • 到gitlab查看推送上来的代码:

image-20230622081453627

3.配置Gradle环境

提前安装好JDK, 然后安装gradle-7.6.1。

本次在gitlanci-runner上下载Gradle:(后面的环境为gitlab runner和jenkins agent都在一台机器上)

1、JDK环境自己之前已经安装好。

image-20230619213016203

如何安装JDK环境,请查看我的另一篇文章!

本地文档路径:实战:Linux下jdk8环境安装(测试成功)-2022.4.16(二进制方式) (jdk11安装方式一样)

image-20230619214431567

网络文档路径:https://blog.csdn.net/weixin_39246554/article/details/124221560

2、安装gradle-7.6.1

https://gradle.org/releases/

image-20230622081758252

###1、下载gradle-7.6.1软件包并解压
[root@Devops6 ~]#ll -h gradle-7.6.1-bin.zip
-rw-r--r-- 1 root root 117M Jun 22 08:17 gradle-7.6.1-bin.zip
[root@Devops6 ~]#unzip gradle-7.6.1-bin.zip -d /usr/local/

###2、配置环境
[root@Devops6 ~]#vim /etc/profile
……
export GRADLE_HOME=/usr/local/gradle-7.6.1/
export PATH=$GRADLE_HOME/bin:$PATH
[root@Devops6 ~]#source /etc/profile

###3、验证
[root@Devops6 ~]#gradle -v

Welcome to Gradle 7.6.1!

Here are the highlights of this release:
- Added support for Java 19.
- Introduced `--rerun` flag for individual task rerun.
- Improved dependency block for test suites to be strongly typed.
- Added a pluggable system for Java toolchains provisioning.

For more details see https://docs.gradle.org/7.6.1/release-notes.html


------------------------------------------------------------
Gradle 7.6.1
------------------------------------------------------------

Build time: 2023-02-24 13:54:42 UTC
Revision: 3905fe8ac072bbd925c70ddbddddf4463341f4b4

Kotlin: 1.7.10
Groovy: 3.0.13
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 11.0.18 (Red Hat, Inc. 11.0.18+10-LTS)
OS: Linux 3.10.0-957.el7.x86_64 amd64

4.配置Gradle镜像源

  • 修改Gradle源为国内阿里源

https://developer.aliyun.com/mvn/guide?spm=a2c6h.13651104.mirror-free-trial.5.10596e1aktMoO5

    maven {
url 'https://maven.aliyun.com/repository/public/'
}

image-20230622082441491

这里在本地更改代码,然后推送到gitlab仓库:

repositories {
maven {
url 'https://maven.aliyun.com/repository/public/'
}
}

image-20230622082604918

image-20230622082639969

推送代码:

$ git add -A
$ git commit -m "update repo"
$ git push

再到gitlab上确认:

image-20230622082837298

5.手动测试代码

  • 下载代码
[root@Devops6 ~]#cd /data/devops6/
[root@Devops6 devops6]#ls
devops6-maven-service gitlab jenkins_agent jenkins_home
[root@Devops6 devops6]#git clone http://172.29.9.101:8076/devops6/devops6-gradle-service.git
Cloning into 'devops6-gradle-service'...
Username for 'http://172.29.9.101:8076': root
Password for 'http://root@172.29.9.101:8076':
remote: Enumerating objects: 29, done.
remote: Counting objects: 100% (29/29), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 29 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (29/29), done.
[root@Devops6 devops6]#ls
devops6-gradle-service devops6-maven-service gitlab jenkins_agent jenkins_home
[root@Devops6 devops6]#cd devops6-gradle-service/
[root@Devops6 devops6-gradle-service]#ls
build.gradle gradle gradlew gradlew.bat settings.gradle src
[root@Devops6 devops6-gradle-service]#
  • 打包
[root@Devops6 devops6-gradle-service]#gradle build

image-20230622083111938

image-20230622083208292

image-20230622083304946

==大部分gradle构建失败,都和网络有关系,再次重试下就行。==

再次构建,速度就很快了:

image-20230622083343909

2、Jenkins与Gradle集成

image-20230622080758657

1.创建GitLab仓库

见上部分2.创建gitlab仓库并上传代码内容。

2.创建Jenkins作业

  • Jenkins上以devops6-maven-service来拷贝创建devops6-gradle-servicepipeline类型作业,点击保存。

image-20230622083536577

然后这里改变一些参数值:

image-20230622083709173

image-20230622083749525

其它都是一样的,点击保存。

3.编写Jenkins Pipeline

  • 注意:因为Maven和Gradle只是构建工具不一样,而后面的Jenkins代码则是完全一致的,因此这里直接测试。

image-20230622083957866

pipeline {
agent {label "build"}
stages{
stage("CheckOut"){
steps{
script{
println("CheckOut")

checkout([$class: 'GitSCM',
branches: [[name: "${env.branchName}"]],
extensions: [],
userRemoteConfigs: [[credentialsId: 'gitlab-root', url: "${env.srcUrl}"]]])

sh "ls -l" //验证
}
}
}

stage("Build"){
steps{
script{
println("Build")

sh "${env.buildShell}"
}
}

}

}
}

image-20230622084022238

image-20230622084042312

image-20230622084058375

测试结束。😘

3、Gradle常用命令

gradle build  构建项目
gradle build -x test 构建项目跳过测试
gradle clean 清空构建目录

FAQ

案例:gitlabCI & Gradle集成

  • 我们先给gitlabci-runner打一个叫做gradle的tag:

  • 在项目里创建一个.gitlabci.yml文件,编写代码,并提交,观察构建效果:
stages:
- build
- test

variables:
GIT_CHECKOUT: "false"
RUNNER_TAG: "gradle"

pipelineInit:
stage: .pre
tags:
- "${RUNNER_TAG}"
variables:
GIT_CHECKOUT: "true"
script:
- ls -l

cibuild:
tags:
- "${RUNNER_TAG}"
stage: build
script:
- /usr/local/gradle-7.4.2/bin/gradle build

能够看到,构建成功了。

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码 x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号 《云原生架构师实战》

image-20230107215126971

🍀 语雀

https://www.yuque.com/xyy-onlyone

image-20230515221819681

🍀 csdn https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎 https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!