Skip to content

Commit

Permalink
add build and release pipeline
Browse files Browse the repository at this point in the history
  • Loading branch information
Linsong Wang authored and Linsong Wang committed May 24, 2024
1 parent cea2b91 commit f6789f1
Show file tree
Hide file tree
Showing 3 changed files with 190 additions and 0 deletions.
138 changes: 138 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
pipeline {

agent {
kubernetes {
defaultContainer 'maven'
yamlFile 'jenkins/agent.yaml'
}
}

environment {
GPG_SECRET = credentials('presto-release-gpg-secret')
GPG_TRUST = credentials("presto-release-gpg-trust")
GPG_PASSPHRASE = credentials("presto-release-gpg-passphrase")

GITHUB_OSS_TOKEN_ID = 'github-personal-token-wanglinsong'

SONATYPE_NEXUS_CREDS = credentials('presto-sonatype-nexus-creds')
SONATYPE_NEXUS_PASSWORD = "$SONATYPE_NEXUS_CREDS_PSW"
SONATYPE_NEXUS_USERNAME = "$SONATYPE_NEXUS_CREDS_USR"
}

options {
buildDiscarder(logRotator(numToKeepStr: '100'))
disableConcurrentBuilds()
disableResume()
overrideIndexTriggers(false)
timeout(time: 30, unit: 'MINUTES')
timestamps()
}

parameters {
booleanParam(name: 'PERFORM_MAVEN_RELEASE',
defaultValue: false,
description: 'Release and update development version when running in the master')
}

stages {
stage('Setup') {
steps {
sh 'apt update && apt install -y bash build-essential git gpg python3 python3-venv'
}
}

stage ('Prepare to Release') {
steps {
script {
env.REPO_CURRENT_VERSION = sh(
script: 'mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -ntp -DforceStdout',
returnStdout: true).trim()
}
echo "current version: ${REPO_CURRENT_VERSION}"

sh '''
git config --global --add safe.directory ${PWD}
git config --global user.email "[email protected]"
git config --global user.name "oss-release-bot"
'''

sh '''
mvn release:prepare -B -DskipTests \
-DautoVersionSubmodules=true \
-DgenerateBackupPoms=false
git branch
git log --pretty="format:%ce: %s" -8
SCM_TAG=$(cat release.properties | grep scm.tag=)
echo ${SCM_TAG#*=} > repo-release-tag.txt
'''

script {
env.REPO_RELEASE_TAG = sh(
script: 'cat repo-release-tag.txt',
returnStdout: true).trim()
}
echo "release tag: ${REPO_RELEASE_TAG}"
}
}

stage ('Release Maven Artifacts') {
when {
allOf {
expression { params.PERFORM_MAVEN_RELEASE }
branch 'master'
}
}

steps {
echo "Update GitHub Repo"

sh '''
git switch -c master
git branch
'''

sh '''#!/bin/bash -ex
gpg --batch --import ${GPG_SECRET}
echo ${GPG_TRUST} | gpg --import-ownertrust -
gpg --list-secret-keys
echo "allow-loopback-pinentry" >> ~/.gnupg/gpg-agent.conf
'''

withCredentials([usernamePassword(
credentialsId: "${GITHUB_OSS_TOKEN_ID}",
passwordVariable: 'GIT_PASSWORD',
usernameVariable: 'GIT_USERNAME')]) {
sh '''
git --no-pager log --since="60 days ago" --graph --pretty=format:'%C(auto)%h%d%Creset %C(cyan)(%cd)%Creset %C(green)%cn <%ce>%Creset %s'
head -n 18 pom.xml
ORIGIN="https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/prestodb/drift.git"
git push --follow-tags --set-upstream ${ORIGIN} master
'''
}

echo "Release ${REPO_RELEASE_TAG} maven artifacts"
sh '''#!/bin/bash -ex
export GPG_TTY=$TTY
printenv | sort
git checkout ${REPO_RELEASE_TAG}
git status
git branch
git log -8
head -n 18 pom.xml
mvn -s ${WORKSPACE}/jenkins/settings.xml -V -B -U -e -T2C deploy \
-DautoReleaseAfterClose=true \
-Dgpg.passphrase=${GPG_PASSPHRASE} \
-DkeepStagingRepositoryOnCloseRuleFailure=true \
-DkeepStagingRepositoryOnFailure=true \
-DskipTests \
-Poss-release \
-Pdeploy-to-ossrh \
-DstagingProgressTimeoutMinutes=10
'''
}
}
}
}
19 changes: 19 additions & 0 deletions jenkins/agent.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: v1
kind: Pod
metadata:
namespace: oss-agent
spec:
serviceAccountName: oss-agent
containers:
- name: maven
image: maven:3.8.6-openjdk-8-slim
tty: true
resources:
requests:
memory: "1Gi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "1000m"
command:
- cat
33 changes: 33 additions & 0 deletions jenkins/settings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<settings
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<servers>
<server>
<id>sonatype-nexus-snapshots</id>
<username>${env.SONATYPE_NEXUS_USERNAME}</username>
<password>${env.SONATYPE_NEXUS_PASSWORD}</password>
</server>
<server>
<id>sonatype.snapshots</id>
<username>${env.SONATYPE_NEXUS_USERNAME}</username>
<password>${env.SONATYPE_NEXUS_PASSWORD}</password>
</server>
<server>
<id>ossrh</id>
<username>${env.SONATYPE_NEXUS_USERNAME}</username>
<password>${env.SONATYPE_NEXUS_PASSWORD}</password>
</server>
</servers>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>

0 comments on commit f6789f1

Please sign in to comment.