如何用构建脚本执行git任务?

627 阅读2分钟

在本教程中,学习如何在构建脚本中执行以下git操作。

  • 在gradle构建中克隆git仓库
  • git从gradle任务中拉出变化
  • 创建一个git标签并提交修改到远程仓库。

有些时候,我们必须写一个构建脚本来自动完成持续集成和构建部署过程中的git任务。

这种构建脚本被配置为gradle构建周期中的依赖插件,也可以单独运行。

我们有gradle-git插件,我们可以使用gradle构建脚本来完成多个git操作。

在build.gradle脚本中,请配置以下步骤来编写任何git操作的任务

  • 首先,使用buildScript下载这个插件。
  • 让我们在build.gradle中配置这个插件
buildscript {
  repositories { 
      mavenCentral()
       }
  dependencies { 
      classpath 'org.ajoberstar:gradle-git:1.6.0'
       }
}
  • 在build脚本中导入org.ajoberstar.grgit
import org.ajoberstar.grgit.*

如何在build等级中克隆git仓库

git克隆是用git clone命令完成的。

同样的事情也可以用gradle任务来完成

  • 首先导入grgit类
  • 创建一个gradle任务
  • 在它里面,使用Grgit.clone(),用dir参数克隆到本地文件夹
  • 和URI指向git仓库的网址

task cloneRepository << {
  Grgit.clone(dir: file('build/localreponame'), uri: 'git@github.com:username/reponame.git')
}

同样的事情也可以从命令行运行,如下所示

gradle  cloneRepository
or
gradlew cloneRepository

如何用gradle任务做git pull

task pullRepo << {
   def grGit = Grgit.open(dir: project.file('.'))
   grGit.pull(rebase: false)
}

同样的事情也可以用gradle或wrapper命令运行

gradlew pullRepo
 (or)
gradle pullRepo

如何用gradle构建任务来创建git标签?

这将创建一个新的标签,并使用gradle build task提交修改到远程仓库。

  • 首先使用Grgit.open 方法创建Grgit对象
  • 使用对象添加标签,加上新的标签名称和提交信息
  • 最后使用push方法推送变化
task createGitTag <<{                                                      
def grGit = Grgit.open(dir: 'location_folder')    
// create a tag with new  name and commt message    
grGit.tag.add(name: 'release-tag-1..0', message: 'Create a new tag using gradle tag')           
// push
grGit.push(tags: true)     
//clean resource
grGit.close()                                         
}    

同样的事情也可以用gradle或wrapper命令运行

gradlew createGitTag
 (or)
gradle createGitTag

如何在build.grade脚本中提交和推送文件变化到git远程仓库

在构建脚本中

  • 首先用本地目录路径创建一个Grgit对象
  • 接下来,给grGit添加模式对象,告诉它要包括文件夹或单个文件来提交
  • 使用提交方法提供提交信息
  • 最后,使用推送方法推送更改。
task pushtoGitRepo <<{ 
    def grGit = Grgit.open(dir: '.')
    grGit.add(patterns: ['src'])
    grGit.commit(message: 'Committing final Changes')
    grGit.push(force: true) 
}

同样的事情也可以用gradle或wrapper命令运行。

gradlew pushtoGitRepo
 (or)
gradle pushtoGitRepo

总结

你学会了如何为git commit推拉和创建分支写一个构建任务。

这有助于devops使用构建脚本来自动化git操作。