This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch docs/jenkins-javadocs-pipeline-spec
in repository https://gitbox.apache.org/repos/asf/struts-site.git

commit 0800911aa50363f794edc665297da35c7ea028c3
Author: Lukasz Lenart <[email protected]>
AuthorDate: Wed Jul 1 08:50:33 2026 +0200

    ci: add declarative pipeline for the javadocs job
    
    Converts the shell-based Struts-site-javadocs freestyle job into
    Jenkinsfile.javadocs. Builds Struts with plain `mvn` and publishes the
    staged Maven site into source/maven on main via the asf remote.
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
---
 Jenkinsfile.javadocs | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 113 insertions(+)

diff --git a/Jenkinsfile.javadocs b/Jenkinsfile.javadocs
new file mode 100644
index 000000000..4fc90a4f6
--- /dev/null
+++ b/Jenkinsfile.javadocs
@@ -0,0 +1,113 @@
+#!groovy
+
+pipeline {
+  agent {
+    label 'git-websites'
+  }
+  parameters {
+    string(name: 'STRUTS_TAG', defaultValue: 'main',
+           description: 'Struts release tag (e.g. STRUTS_7_2_1) or "main"')
+  }
+  options {
+    buildDiscarder logRotator(numToKeepStr: '5')
+    timeout(90)
+    disableConcurrentBuilds()
+    skipStagesAfterUnstable()
+  }
+  environment {
+    MAVEN_OPTS = '-Xmx2048m -Dhttps.protocols=TLSv1.2 -DfailOnError=false'
+    // Required: resolves `mvn` on the ASF agent (we use plain mvn, not the 
wrapper).
+    PATH = "${MAVEN_3_LATEST_HOME}:${env.PATH}"
+  }
+  stages {
+    stage('Build Struts & Maven site') {
+      steps {
+        sh '''
+          echo "Building Struts ${STRUTS_TAG} and staging the Maven site"
+
+          rm -rf target/struts
+          git clone https://gitbox.apache.org/repos/asf/struts.git 
target/struts
+
+          cd target/struts
+          if [ "${STRUTS_TAG}" = "main" ]; then
+            git checkout main
+          else
+            git checkout "tags/${STRUTS_TAG}"
+          fi
+
+          mvn -B -V clean install -DskipTests
+          mvn -B -V site:site site:stage
+        '''
+      }
+    }
+    stage('Publish to source/maven') {
+      steps {
+        sh '''
+          echo "Publishing the staged Maven site into source/maven on main"
+
+          if ! git config remote.asf.url > /dev/null; then
+            git remote add asf 
https://gitbox.apache.org/repos/asf/struts-site.git
+          fi
+
+          git fetch asf
+          git checkout main
+          git pull asf main
+
+          rm -rf source/maven
+          mkdir -p source/maven
+          mv target/struts/target/staging/* source/maven/
+
+          git add source/maven
+          git status
+
+          git diff --cached --quiet || git commit -m "Updates Maven site by 
Jenkins"
+          git push asf main
+        '''
+      }
+    }
+  }
+  post {
+    // If this build failed, send an email to the developers.
+    failure {
+      script {
+        emailext(
+            recipientProviders: [[$class: 'DevelopersRecipientProvider']],
+            from: "Mr. Jenkins <[email protected]>",
+            subject: "Jenkins job ${env.JOB_NAME}#${env.BUILD_NUMBER} failed",
+            body: """
+There is a build failure in ${env.JOB_NAME}.
+
+Build: ${env.BUILD_URL}
+Logs: ${env.BUILD_URL}console
+Changes: ${env.BUILD_URL}changes
+
+--
+Mr. Jenkins
+Director of Continuous Integration
+"""
+        )
+      }
+    }
+    // Send an email, if the last build was not successful and this one is.
+    fixed {
+      script {
+        emailext(
+            recipientProviders: [[$class: 'DevelopersRecipientProvider']],
+            from: 'Mr. Jenkins <[email protected]>',
+            subject: "Jenkins job ${env.JOB_NAME}#${env.BUILD_NUMBER} back to 
normal",
+            body: """
+The build for ${env.JOB_NAME} completed successfully and is back to normal.
+
+Build: ${env.BUILD_URL}
+Logs: ${env.BUILD_URL}console
+Changes: ${env.BUILD_URL}changes
+
+--
+Mr. Jenkins
+Director of Continuous Integration
+"""
+        )
+      }
+    }
+  }
+}

Reply via email to