You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2020/07/19 18:54:35 UTC

[logging-pipelines] 01/01: Import latest pipelines from repositories

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

mattsicker pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-pipelines.git

commit 7bbfbad777c732a1f8e1096ad4c67e727f1df182
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Jul 19 13:51:30 2020 -0500

    Import latest pipelines from repositories
---
 README.md            |   4 ++
 audit/Jenkinsfile    |  61 ++++++++++++++++++++++
 chainsaw/Jenkinsfile |  68 +++++++++++++++++++++++++
 kotlin/Jenkinsfile   |  61 ++++++++++++++++++++++
 log4j/Jenkinsfile    | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++
 parent/Jenkinsfile   |  42 ++++++++++++++++
 scala/Jenkinsfile    |  72 ++++++++++++++++++++++++++
 7 files changed, 448 insertions(+)

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..68d9239
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+# Apache Logging Services Jenkins Pipelines
+
+This repository is a centralized collection of [Jenkins pipelines](https://www.jenkins.io/doc/book/pipeline/) used in the [Apache Logging Services](https://logging.apache.org/) project.
+These pipelines are located on [ci-builds.apache.org](https://ci-builds.apache.org/job/Logging/).
diff --git a/audit/Jenkinsfile b/audit/Jenkinsfile
new file mode 100644
index 0000000..a68a6e1
--- /dev/null
+++ b/audit/Jenkinsfile
@@ -0,0 +1,61 @@
+#!groovy
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+pipeline {
+    agent {
+        label 'ubuntu'
+    }
+    tools {
+        maven 'Maven 3 (latest)'
+        jdk 'JDK 1.8 (latest)'
+    }
+    options {
+        ansiColor 'xterm'
+        buildDiscarder logRotator(numToKeepStr: '25')
+        timeout time: 1, unit: 'HOURS'
+    }
+    stages {
+        stage('Build') {
+            steps {
+                sh 'mvn install'
+            }
+        }
+        stage('Deploy') {
+            when {
+                branch 'master'
+            }
+            steps {
+                sh 'mvn deploy'
+            }
+            post {
+                fixed {
+                    emailext to: 'notifications@logging.apache.org',
+                        from: 'Mr. Jenkins <je...@ci-builds.apache.org>',
+                        subject: "[CI][SUCCESS] ${env.JOB_NAME}#${env.BUILD_NUMBER} back to normal",
+                        body: '${SCRIPT, template="groovy-text.template"}'
+                }
+                failure {
+                    emailext to: 'notifications@logging.apache.org',
+                        from: 'Mr. Jenkins <je...@ci-builds.apache.org>',
+                        subject: "[CI][FAILURE] ${env.JOB_NAME}#${env.BUILD_NUMBER} has potential issues",
+                        body: '${SCRIPT, template="groovy-text.template"}'
+                }
+            }
+        }
+    }
+}
diff --git a/chainsaw/Jenkinsfile b/chainsaw/Jenkinsfile
new file mode 100644
index 0000000..9e35adb
--- /dev/null
+++ b/chainsaw/Jenkinsfile
@@ -0,0 +1,68 @@
+#!groovy
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+pipeline {
+    agent {
+        label 'ubuntu'
+    }
+    tools {
+        maven 'Maven 3 (latest)'
+        jdk 'JDK 1.8 (latest)'
+    }
+    options {
+        ansiColor 'xterm'
+        buildDiscarder logRotator(numToKeepStr: '25')
+        timeout time: 1, unit: 'HOURS'
+    }
+    stages {
+        stage('Build') {
+            steps {
+                sh '''
+                mvn -Pdevelopment site:site
+                mvn -Pdevelopment install
+                '''
+                junit '**/target/surefire-reports/*.xml'
+            }
+        }
+        stage('Deploy') {
+            when {
+                branch 'master'
+            }
+            steps {
+                sh 'mvn -Pdevelopment deploy'
+            }
+            post {
+                fixed {
+                    emailext to: 'notifications@logging.apache.org',
+                        from: 'Mr. Jenkins <je...@ci-builds.apache.org>',
+                        subject: "[CI][SUCCESS] ${env.JOB_NAME}#${env.BUILD_NUMBER} back to normal",
+                        body: '${SCRIPT, template="groovy-text.template"}'
+                }
+                failure {
+                    emailext to: 'notifications@logging.apache.org',
+                        from: 'Mr. Jenkins <je...@ci-builds.apache.org>',
+                        subject: "[CI][FAILURE] ${env.JOB_NAME}#${env.BUILD_NUMBER} has potential issues",
+                        body: '${SCRIPT, template="groovy-text.template"}'
+                }
+            }
+        }
+    }
+}
+
diff --git a/kotlin/Jenkinsfile b/kotlin/Jenkinsfile
new file mode 100644
index 0000000..a68a6e1
--- /dev/null
+++ b/kotlin/Jenkinsfile
@@ -0,0 +1,61 @@
+#!groovy
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+pipeline {
+    agent {
+        label 'ubuntu'
+    }
+    tools {
+        maven 'Maven 3 (latest)'
+        jdk 'JDK 1.8 (latest)'
+    }
+    options {
+        ansiColor 'xterm'
+        buildDiscarder logRotator(numToKeepStr: '25')
+        timeout time: 1, unit: 'HOURS'
+    }
+    stages {
+        stage('Build') {
+            steps {
+                sh 'mvn install'
+            }
+        }
+        stage('Deploy') {
+            when {
+                branch 'master'
+            }
+            steps {
+                sh 'mvn deploy'
+            }
+            post {
+                fixed {
+                    emailext to: 'notifications@logging.apache.org',
+                        from: 'Mr. Jenkins <je...@ci-builds.apache.org>',
+                        subject: "[CI][SUCCESS] ${env.JOB_NAME}#${env.BUILD_NUMBER} back to normal",
+                        body: '${SCRIPT, template="groovy-text.template"}'
+                }
+                failure {
+                    emailext to: 'notifications@logging.apache.org',
+                        from: 'Mr. Jenkins <je...@ci-builds.apache.org>',
+                        subject: "[CI][FAILURE] ${env.JOB_NAME}#${env.BUILD_NUMBER} has potential issues",
+                        body: '${SCRIPT, template="groovy-text.template"}'
+                }
+            }
+        }
+    }
+}
diff --git a/log4j/Jenkinsfile b/log4j/Jenkinsfile
new file mode 100644
index 0000000..204bd4a
--- /dev/null
+++ b/log4j/Jenkinsfile
@@ -0,0 +1,140 @@
+#!groovy
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *     https://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.
+ */
+
+// =================================================================
+// https://cwiki.apache.org/confluence/display/LOGGING/Jenkins+Setup
+// =================================================================
+
+// general pipeline documentation: https://jenkins.io/doc/book/pipeline/syntax/
+pipeline {
+    // https://jenkins.io/doc/book/pipeline/syntax/#options
+    options {
+        // support ANSI colors in stdout/stderr
+        ansiColor 'xterm'
+        // only keep the latest 10 builds
+        buildDiscarder logRotator(numToKeepStr: '10')
+        // cancel build if not complete within two hours of scheduling
+        timeout time: 2, unit: 'HOURS'
+        // fail parallel stages as soon as any of them fail
+        parallelsAlwaysFailFast()
+    }
+    triggers {
+        // TODO: this can be removed once gitbox webhooks are re-enabled
+        pollSCM 'H/5 * * * *'
+    }
+
+    // https://jenkins.io/doc/book/pipeline/syntax/#agent
+    // start with no Jenkins agent allocated as they will only be needed for the individual stages
+    // therefore, anything in the top level post section can only contain steps that don't require a Jenkins agent
+    // (such as slackSend, mail, etc.)
+    agent none
+    stages {
+        stage('Continuous Integration') {
+            // https://jenkins.io/doc/book/pipeline/syntax/#parallel
+            parallel {
+                stage('Ubuntu') {
+                    agent {
+                        // https://cwiki.apache.org/confluence/display/INFRA/Jenkins+node+labels
+                        label 'ubuntu'
+                    }
+                    // https://jenkins.io/doc/book/pipeline/syntax/#tools
+                    tools {
+                        // https://cwiki.apache.org/confluence/display/INFRA/JDK+Installation+Matrix
+                        jdk 'JDK 1.8 (latest)'
+                        // https://cwiki.apache.org/confluence/display/INFRA/Maven+Installation+Matrix
+                        maven 'Maven 3 (latest)'
+                    }
+                    // https://jenkins.io/doc/book/pipeline/syntax/#environment
+                    environment {
+                        LANG = 'C.UTF-8'
+                    }
+                    steps {
+                        // https://issues.jenkins-ci.org/browse/JENKINS-43353
+                        script {
+                            def buildNumber = BUILD_NUMBER as int
+                            if (buildNumber > 1) milestone(buildNumber - 1)
+                            milestone(buildNumber)
+                        }
+                        // build, test, and deploy snapshots
+                        // note that the jenkins system property is set here to activate certain pom properties in
+                        // some log4j modules that compile against system jars (e.g., log4j-jmx-gui)
+                        // also note that the Jenkins agents on builds.a.o already have an ~/.m2/settings.xml for snapshots
+                        sh 'mvn --show-version --fail-at-end --toolchains toolchains-jenkins-ubuntu.xml -Djenkins clean install deploy'
+                    }
+                    post {
+                        always {
+                            // record linux run of tests
+                            junit '**/*-reports/*.xml'
+                            // additional warnings generated during build
+                            // TODO: would be nice to be able to include checkstyle, cpd, pmd, and spotbugs,
+                            //       but current site build takes too long
+                            recordIssues enabledForFailure: true,
+                                    sourceCodeEncoding: 'UTF-8',
+                                    referenceJobName: 'log4j/master',
+                                    tools: [mavenConsole(), errorProne(), java(),
+                                            taskScanner(highTags: 'FIXME', normalTags: 'TODO', includePattern: '**/*.java', excludePattern: '*/target/**')]
+                        }
+                    }
+                }
+                stage('Windows') {
+                    agent {
+                        // https://cwiki.apache.org/confluence/display/INFRA/Jenkins+node+labels
+                        label 'Windows'
+                    }
+                    tools {
+                        // https://cwiki.apache.org/confluence/display/INFRA/JDK+Installation+Matrix
+                        jdk 'JDK 1.8 (latest)'
+                        // https://cwiki.apache.org/confluence/display/INFRA/Maven+Installation+Matrix
+                        maven 'Maven 3 (latest)'
+                    }
+                    environment {
+                        LANG = 'C.UTF-8'
+                    }
+                    steps {
+                        // note that previous test runs of log4j-mongodb* may have left behind an embedded mongo folder
+                        // also note that we don't need to use the jenkins system property here as it's ubuntu-specific
+                        bat '''
+                    if exist %userprofile%\\.embedmongo\\ rd /s /q %userprofile%\\.embedmongo
+                    mvn --show-version --fail-at-end --toolchains toolchains-jenkins-win.xml clean install
+                    '''
+                    }
+                    post {
+                        always {
+                            // record windows run of tests
+                            junit '**/*-reports/*.xml'
+                        }
+                    }
+                }
+            }
+        }
+    }
+    post {
+        fixed {
+            emailext to: 'notifications@logging.apache.org',
+                from: 'Mr. Jenkins <je...@ci-builds.apache.org>',
+                subject: "[CI][SUCCESS] ${env.JOB_NAME}#${env.BUILD_NUMBER} back to normal",
+                body: '${SCRIPT, template="groovy-text.template"}'
+        }
+        failure {
+            emailext to: 'notifications@logging.apache.org',
+                from: 'Mr. Jenkins <je...@ci-builds.apache.org>',
+                subject: "[CI][FAILURE] ${env.JOB_NAME}#${env.BUILD_NUMBER} has potential issues",
+                body: '${SCRIPT, template="groovy-text.template"}'
+        }
+    }
+}
diff --git a/parent/Jenkinsfile b/parent/Jenkinsfile
new file mode 100644
index 0000000..2a7d4f5
--- /dev/null
+++ b/parent/Jenkinsfile
@@ -0,0 +1,42 @@
+#!groovy
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+pipeline {
+    agent {
+        label 'ubuntu'
+    }
+    tools {
+        maven 'Maven 3 (latest)'
+        jdk 'JDK 1.8 (latest)'
+    }
+    options {
+        ansiColor 'xterm'
+        buildDiscarder logRotator(numToKeepStr: '10')
+        timeout time: 5, unit: 'MINUTES'
+    }
+    stages {
+        stage('Deploy') {
+            steps {
+                sh 'mvn deploy'
+            }
+        }
+    }
+}
+
diff --git a/scala/Jenkinsfile b/scala/Jenkinsfile
new file mode 100644
index 0000000..1d277f6
--- /dev/null
+++ b/scala/Jenkinsfile
@@ -0,0 +1,72 @@
+#!groovy
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+pipeline {
+    agent {
+        label 'ubuntu'
+    }
+    tools {
+        jdk 'JDK 1.8 (latest)'
+    }
+    options {
+        ansiColor 'xterm'
+        buildDiscarder logRotator(numToKeepStr: '25')
+        timeout time: 1, unit: 'HOURS'
+    }
+    stages {
+        stage('Build') {
+            steps {
+                sh './sbt -batch auditCheck'
+                sh './sbt -batch "+ compile"'
+            }
+        }
+        stage('Test') {
+            steps {
+                sh './sbt -batch Test/auditCheck'
+                sh './sbt -batch "+ test"'
+            }
+        }
+        stage('Deploy') {
+            when {
+                anyOf {
+                    branch 'master'
+                }
+            }
+            environment {
+                NEXUS = credentials('logging-snapshots')
+            }
+            steps {
+                sh './sbt -batch "+ publish"'
+            }
+            post {
+                fixed {
+                    emailext to: 'notifications@logging.apache.org',
+                        from: 'Mr. Jenkins <je...@ci-builds.apache.org>',
+                        subject: "[CI][SUCCESS] ${env.JOB_NAME}#${env.BUILD_NUMBER} back to normal",
+                        body: '${SCRIPT, template="groovy-text.template"}'
+                }
+                failure {
+                    emailext to: 'notifications@logging.apache.org',
+                        from: 'Mr. Jenkins <je...@ci-builds.apache.org>',
+                        subject: "[CI][FAILURE] ${env.JOB_NAME}#${env.BUILD_NUMBER} has potential issues",
+                        body: '${SCRIPT, template="groovy-text.template"}'
+                }
+            }
+        }
+    }
+}