blob: c09748c7db45506c4187498fafbc232fb7d44f16 [file] [log] [blame]
#!/usr/bin/env groovy
// Copyright (C) 2025 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/**
* Declarative pipeline for building and testing JGit servlet-4 branch against Gerrit stable-3.12 and Gerrit master.
* Parameters: None
* Usage in a Jenkinsfile:
* gerritJGitServlet4Pipeline()
*/
def call(Map cfg = [:]) {
echo "Starting pipeline for JGit servlet-4"
echo "Change : ${env.GERRIT_CHANGE_NUMBER}/${GERRIT_PATCHSET_NUMBER} '${env.GERRIT_CHANGE_SUBJECT}'"
echo "Change URL: ${env.GERRIT_CHANGE_URL}"
pipeline {
agent { label 'bazel-debian' }
options {
skipDefaultCheckout true
}
stages {
stage('Checkout JGit') {
steps {
dir('jgit') {
checkout scm
}
}
}
stage('Build JGit') {
steps {
dir('jgit') {
sh '''
. set-java.sh 21
java -version
bazelisk build all
'''
}
}
}
stage('Test JGit') {
steps {
dir('jgit') {
sh '''
echo "Running JGit tests..."
. set-java.sh 21
bazelisk test //...
'''
}
}
}
stage('Checkout Gerrit stable-3.12') {
steps {
sh '''
git clone -b stable-3.12 --recursive https://gerrit.googlesource.com/gerrit
'''
}
}
stage('Build Gerrit stable-3.12') {
steps {
script {
def jgitSourceDir = "${env.WORKSPACE}/jgit"
def jgitTargetDir = "${env.WORKSPACE}/gerrit/modules/jgit"
echo "Replacing gerrit jgit module with jgit change ${env.GERRIT_CHANGE_NUMBER}..."
sh """
echo "${jgitSourceDir} -> ${jgitTargetDir}"
mv ${jgitTargetDir} /tmp/jgit-3.12
ln -sfn ${jgitSourceDir} ${jgitTargetDir}
"""
dir('gerrit') {
sh '''
. set-java.sh 21
bazelisk build release
'''
}
}
}
}
stage('Test Gerrit stable-3.12') {
steps {
dir('gerrit') {
sh '''
. set-java.sh 21
echo "running gerrit stable-3.12 tests..."
bazelisk test \
--test_tag_filters=-flaky \
--flaky_test_attempts 3 \
--test_timeout 3600 \
//...
'''
}
}
}
stage('Checkout Gerrit master') {
steps {
dir('gerrit') {
sh '''
git reset --hard origin/master
git checkout master
git submodule update --init --recursive
'''
}
}
}
stage('Build Gerrit master') {
steps {
script {
def jgitSourceDir = "${env.WORKSPACE}/jgit"
def jgitTargetDir = "${env.WORKSPACE}/gerrit/modules/jgit"
echo "Replacing gerrit jgit module with jgit change ${env.GERRIT_CHANGE_NUMBER}..."
sh """
echo "${jgitSourceDir} -> ${jgitTargetDir}"
mv ${jgitTargetDir} /tmp/jgit-master
ln -sfn ${jgitSourceDir} ${jgitTargetDir}
"""
dir('gerrit') {
sh """
. set-java.sh 21
bazelisk build release
"""
}
}
}
}
stage('Test Gerrit master') {
steps {
dir('gerrit') {
sh '''
. set-java.sh 21
echo "running gerrit master tests..."
bazelisk test \
--test_tag_filters=-flaky \
--flaky_test_attempts 3 \
--test_timeout 3600 \
//...
'''
}
}
}
}
post {
success {
gerritReview labels: ["Code-Review": 1], message: "Gerrit successfully builds with this JGit change.\nBuild: ${env.BUILD_URL}"
}
unstable {
gerritReview labels: ["Code-Review": -1], message: "Gerrit build with this JGit change is unstable.\nBuild: ${env.BUILD_URL}"
}
failure {
gerritReview labels: ["Code-Review": -1], message: "Gerrit does not build successfully with this JGit change.\nBuild: ${env.BUILD_URL}"
}
}
}
}