| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // CI/CD for Gogs: push and pull requests targeting main.
- // Builds, tests and packaging run inside Docker (DinD), not on the Jenkins host.
- // Triggers are configured on the Jenkins job (Generic Webhook) + Gogs webhooks.
- pipeline {
- agent {
- docker {
- image 'ura-ci-maven:21'
- label 'built-in'
- alwaysPull false
- args '-u root -v jenkins-m2-cache:/root/.m2 -e MAVEN_OPTS=-Xmx1024m'
- }
- }
- options {
- timestamps()
- disableConcurrentBuilds()
- timeout(time: 45, unit: 'MINUTES')
- buildDiscarder(logRotator(numToKeepStr: '20', artifactNumToKeepStr: '10'))
- }
- stages {
- stage('Checkout') {
- steps {
- script {
- def sha = env.pr_head_sha ?: env.after ?: 'main'
- if (!sha?.trim() || sha == 'null' || sha == '0000000000000000000000000000000000000000') {
- sha = 'main'
- }
- echo "Gogs event ref=${env.ref} action=${env.action} pr=#${env.pr_number} sha=${sha}"
- checkout([
- $class: 'GitSCM',
- branches: [[name: sha]],
- extensions: [[$class: 'CloneOption', shallow: false, noTags: false]],
- userRemoteConfigs: [[url: 'https://git.barcelos.dev/allan/jenkins-mfa-auth-plugin.git']]
- ])
- }
- }
- }
- stage('Test') {
- steps {
- sh 'mvn -B -ntp verify'
- }
- post {
- always {
- junit allowEmptyResults: true, testResults: 'target/surefire-reports/*.xml'
- }
- }
- }
- stage('Package') {
- steps {
- sh 'mvn -B -ntp -DskipTests -Dset.changelist package'
- sh 'ls -la target/*.hpi target/*.jar'
- archiveArtifacts artifacts: 'target/*.hpi,target/*-SNAPSHOT.jar', fingerprint: true
- }
- }
- stage('Release') {
- when {
- allOf {
- expression { env.ref == 'refs/heads/main' }
- expression { !env.pr_number?.trim() || env.pr_number == 'null' }
- }
- }
- steps {
- echo 'Release artifact is the archived HPI from this build (lastSuccessfulBuild).'
- sh '''
- set -e
- HPI=$(ls -1 target/*.hpi | head -1)
- echo "HPI=${HPI} size=$(wc -c < "$HPI") sha256=$(sha256sum "$HPI" | awk '{print $1}')"
- '''
- }
- }
- }
- post {
- always {
- sh 'chmod -R a+rwX "$WORKSPACE" || true'
- }
- }
- }
|