[git-bridge] migrate pipeline to Jenkins (#28763)

* [git-bridge] migrate pipeline to Jenkins

* [terraform] remove cloud build trigger for git-bridge

GitOrigin-RevId: fdf842a561c00a609f2de0cab894a761900322c6
This commit is contained in:
Jakob Ackermann
2025-10-06 13:20:13 +02:00
committed by Copybot
parent 2c95b64bb6
commit 6649c13d8e
3 changed files with 118 additions and 0 deletions

View File

@@ -0,0 +1 @@
services/git-bridge/**

88
services/git-bridge/Jenkinsfile vendored Normal file
View File

@@ -0,0 +1,88 @@
pipeline {
agent {
node {
label 'jenkins-agent-web'
customWorkspace '/workspace'
}
}
options {
timestamps()
parallelsAlwaysFailFast()
timeout(time: 15, unit: 'MINUTES')
}
environment {
BRANCH_NAME = "${env.CHANGE_BRANCH ? env.CHANGE_BRANCH : env.BRANCH_NAME}"
JENKINS_BUILD_NUMBER = "${BUILD_NUMBER}"
BUILD_NUMBER = "${SHORT_SHA}_${BUILD_NUMBER}"
COMMIT_SHA = "${GIT_COMMIT}"
SHORT_SHA = "${GIT_COMMIT.take(7)}"
}
stages {
stage('Stage 1') {
parallel {
stage('Build') {
steps {
dir('services/git-bridge') {
sh 'make docker_build_base'
}
}
}
stage('Install monorepo') {
steps {
sh 'make monorepo_setup'
}
}
}
}
stage('Stage 2') {
parallel {
stage('Build production and push') {
steps {
dir('services/git-bridge') {
sh 'make docker_build'
sh 'make push_branch'
}
}
}
stage('Format Java') {
steps {
dir('services/git-bridge') {
sh 'make docker_format'
}
}
}
stage('Format Jenkinsfile') {
steps {
sh 'bin/run monorepo npm run format:jenkins'
}
}
stage('Test') {
steps {
dir('services/git-bridge') {
sh 'make docker_test'
}
}
}
}
}
stage('Push Production') {
steps {
dir('services/git-bridge') {
sh 'make push'
}
}
}
}
post {
// Collect junit test results for both success and failure case.
always {
junit checksName: 'git-bridge test results', testResults: 'services/git-bridge/target/surefire-reports/*.xml'
}
cleanup {
dir('services/git-bridge') {
sh 'make clean_ci'
}
sh 'make clean_jenkins'
}
}
}

View File

@@ -3,6 +3,17 @@
MVN_OPTS := --no-transfer-progress
MVN_TARGET := target/writelatex-git-bridge-1.0-SNAPSHOT-jar-with-dependencies.jar
export BUILD_NUMBER ?= local
export BRANCH_NAME ?= $(shell git rev-parse --abbrev-ref HEAD)
export COMMIT_SHA ?= $(shell git rev-parse HEAD)
PROJECT_NAME = git-bridge
IMAGE_CI ?= ci/$(PROJECT_NAME):$(BRANCH_NAME)-$(BUILD_NUMBER)
IMAGE_REPO ?= us-east1-docker.pkg.dev/overleaf-ops/ol-docker/$(PROJECT_NAME)
IMAGE_REPO_BRANCH ?= $(IMAGE_REPO):$(BRANCH_NAME)
IMAGE_REPO_MAIN ?= $(IMAGE_REPO):main
IMAGE_REPO_FINAL ?= $(IMAGE_REPO_BRANCH)-$(BUILD_NUMBER)
runtime-conf:
/opt/envsubst < conf/envsubst_template.json > conf/runtime.json
@@ -16,10 +27,17 @@ $(MVN_TARGET): $(shell find src -type f) pom.xml
build: $(MVN_TARGET)
docker_build_base:
docker build --tag $(IMAGE_CI) --target base .
docker_build:
docker build --tag $(IMAGE_REPO_BRANCH) --tag $(IMAGE_REPO_FINAL) .
format:
mvn $(MVN_OPTS) com.spotify.fmt:fmt-maven-plugin:check
docker_format:
docker run --rm -v $(PWD):$(PWD) -w $(PWD) --user node $(IMAGE_CI) make format
format_fix:
mvn $(MVN_OPTS) com.spotify.fmt:fmt-maven-plugin:format
@@ -28,6 +46,8 @@ format_fix:
test:
mvn $(MVN_OPTS) test
docker_test:
docker run --rm -v $(PWD):$(PWD) -w $(PWD) --user node $(IMAGE_CI) make test
clean:
mvn $(MVN_OPTS) clean
@@ -36,5 +56,14 @@ clean:
package: clean
mvn $(MVN_OPTS) package -DskipTests
push:
docker push $(IMAGE_REPO_FINAL)
push_branch:
docker push $(IMAGE_REPO_BRANCH)
clean_ci:
-docker rmi -f $(IMAGE_CI) $(IMAGE_REPO_BRANCH) $(IMAGE_REPO_FINAL)
-git clean -xdf .
.PHONY: run package build clean test runtime-conf