Jenkins ビルド システムでのみ呼び出される特定の Gradle タスクを作成しました。プロジェクトのコンパイルが成功した後、マスター ブランチの HEAD にタグを付ける必要がある別のタスクに、このタスクを依存させる必要があります。
Gradle を使用してリモート リポジトリの特定のブランチにタグをコミット/プッシュ/追加する方法がわかりません。これを達成する最も簡単な方法は何ですか?
どんな助けでも本当に感謝しています...
Gradle Git プラグインを使用してシナリオを実装する方法は次のとおりです。重要なのは、提供されているプラグインのJavadocを確認することです。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.ajoberstar:gradle-git:0.6.1'
}
}
import org.ajoberstar.gradle.git.tasks.GitTag
import org.ajoberstar.gradle.git.tasks.GitPush
ext.yourTag = "REL-${project.version.toString()}"
task createTag(type: GitTag) {
repoPath = rootDir
tagName = yourTag
message = "Application release ${project.version.toString()}"
}
task pushTag(type: GitPush, dependsOn: createTag) {
namesOrSpecs = [yourTag]
}
これ大好き:
private void createReleaseTag() {
def tagName = "release/${project.version}"
("git tag $tagName").execute()
("git push --tags").execute()
}
編集:より広範なバージョン
private void createReleaseTag() {
def tagName = "release/${version}"
try {
runCommands("git", "tag", "-d", tagName)
} catch (Exception e) {
println(e.message)
}
runCommands("git", "status")
runCommands("git", "tag", tagName)
}
private String runCommands(String... commands) {
def process = new ProcessBuilder(commands).redirectErrorStream(true).start()
process.waitFor()
def result = ''
process.inputStream.eachLine { result += it + '\n' }
def errorResult = process.exitValue() == 0
if (!errorResult) {
throw new IllegalStateException(result)
}
return result
}
例外を処理できます。
上記のコメントで指摘されているように Exec を使用するか、JGit を使用してタグをプッシュできます。Javaでプラグイン/クラスを作成し、それをgradleで使用する