使用 Jenkinsfile 为 gradle 构建自动生成构建管道
Auto generate build pipeline for gradle build using Jenkinsfile
我正在尝试基于 Gradle 任务创建构建管道。我查看了 JenkinsFile 配置 Pipeline-as-code-demo,但我无法为 gradle 任务创建管道。请给我一个可能的方法,这样我就可以使用 Jenkinsfile 来自动显示构建管道,只需从 Jenkinsfile 中读取配置即可。
谢谢
在 jenkins 中,您可以使用 Jenkinsfile 中编写的脚本创建 jenkins 管道。
我们使用 'stages' 和 'node' 作为构建块编写脚本,这些构建块允许您指定应作为 jenkins 管道的一部分执行的指令。
要使用 JenkinsFile 执行 gradle 构建,首先检查操作系统并调用可以执行该 gradle 任务的适当 shell,如下所示:
詹金斯文件
stage 'build_Project'
node{
if(isUnix()){
sh 'gradle build --info'
}
else{
bat 'gradle build --info'
}
}
以上代码片段创建一个名为 build_project 的阶段并执行当前项目的 gradle 构建脚本。
如果您使用 Artifactory 来解决构建依赖项或部署构建工件,建议使用 Pipeline DSL for Gradle build with Artifactory。
这是从 Jenkins Pipeline Examples 页面获取的示例:
node {
// Get Artifactory server instance, defined in the Artifactory Plugin administration page.
def server = Artifactory.server "SERVER_ID"
// Create an Artifactory Gradle instance.
def rtGradle = Artifactory.newGradleBuild()
stage 'Clone sources'
git url: 'https://github.com/jfrogdev/project-examples.git'
stage 'Artifactory configuration'
// Tool name from Jenkins configuration
rtGradle.tool = "Gradle-2.4"
// Set Artifactory repositories for dependencies resolution and artifacts deployment.
rtGradle.deployer repo:'ext-release-local', server: server
rtGradle.resolver repo:'remote-repos', server: server
stage 'Gradle build'
def buildInfo = rtGradle.run rootDir: "gradle-examples/4/gradle-example-ci-server/", buildFile: 'build.gradle', tasks: 'clean artifactoryPublish'
stage 'Publish build info'
server.publishBuildInfo buildInfo
}
否则,您可以简单地 运行 gradle 命令与 sh 或 bat 流水线步骤。
如果您的项目使用 Gradle Wrapper,您可以在 Jenkinsfile
中使用以下代码段:
stage('Gradle Build') {
if (isUnix()) {
sh './gradlew clean build'
} else {
bat 'gradlew.bat clean build'
}
}
如果您检出到子目录 sub-dir
,您可能想要使用
stage('Gradle Build') {
if (isUnix()) {
dir('sub-dir') {sh './gradlew clean build'}
} else {
dir('sub-dir') {bat 'gradlew.bat clean build'}
}
}
我正在尝试基于 Gradle 任务创建构建管道。我查看了 JenkinsFile 配置 Pipeline-as-code-demo,但我无法为 gradle 任务创建管道。请给我一个可能的方法,这样我就可以使用 Jenkinsfile 来自动显示构建管道,只需从 Jenkinsfile 中读取配置即可。
谢谢
在 jenkins 中,您可以使用 Jenkinsfile 中编写的脚本创建 jenkins 管道。
我们使用 'stages' 和 'node' 作为构建块编写脚本,这些构建块允许您指定应作为 jenkins 管道的一部分执行的指令。
要使用 JenkinsFile 执行 gradle 构建,首先检查操作系统并调用可以执行该 gradle 任务的适当 shell,如下所示:
詹金斯文件
stage 'build_Project'
node{
if(isUnix()){
sh 'gradle build --info'
}
else{
bat 'gradle build --info'
}
}
以上代码片段创建一个名为 build_project 的阶段并执行当前项目的 gradle 构建脚本。
如果您使用 Artifactory 来解决构建依赖项或部署构建工件,建议使用 Pipeline DSL for Gradle build with Artifactory。
这是从 Jenkins Pipeline Examples 页面获取的示例:
node {
// Get Artifactory server instance, defined in the Artifactory Plugin administration page.
def server = Artifactory.server "SERVER_ID"
// Create an Artifactory Gradle instance.
def rtGradle = Artifactory.newGradleBuild()
stage 'Clone sources'
git url: 'https://github.com/jfrogdev/project-examples.git'
stage 'Artifactory configuration'
// Tool name from Jenkins configuration
rtGradle.tool = "Gradle-2.4"
// Set Artifactory repositories for dependencies resolution and artifacts deployment.
rtGradle.deployer repo:'ext-release-local', server: server
rtGradle.resolver repo:'remote-repos', server: server
stage 'Gradle build'
def buildInfo = rtGradle.run rootDir: "gradle-examples/4/gradle-example-ci-server/", buildFile: 'build.gradle', tasks: 'clean artifactoryPublish'
stage 'Publish build info'
server.publishBuildInfo buildInfo
}
否则,您可以简单地 运行 gradle 命令与 sh 或 bat 流水线步骤。
如果您的项目使用 Gradle Wrapper,您可以在 Jenkinsfile
中使用以下代码段:
stage('Gradle Build') {
if (isUnix()) {
sh './gradlew clean build'
} else {
bat 'gradlew.bat clean build'
}
}
如果您检出到子目录 sub-dir
,您可能想要使用
stage('Gradle Build') {
if (isUnix()) {
dir('sub-dir') {sh './gradlew clean build'}
} else {
dir('sub-dir') {bat 'gradlew.bat clean build'}
}
}