From cc29aad9c42005160fb9e6b55a937892e0eab62a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JB=20Onofr=C3=A9?= Date: Mon, 29 Sep 2025 14:29:22 +0200 Subject: [PATCH] Sync branch --- .asf.yaml | 47 +++++++++ .github/dependabot.yml | 36 +++++++ .github/workflows/build.yml | 45 ++++++++ Jenkinsfile | 200 ------------------------------------ 4 files changed, 128 insertions(+), 200 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build.yml delete mode 100644 Jenkinsfile diff --git a/.asf.yaml b/.asf.yaml index 9420e0abc70..6ac3155568e 100644 --- a/.asf.yaml +++ b/.asf.yaml @@ -15,5 +15,52 @@ # limitations under the License. # +github: + description: "Apache Karaf, the enterprise modulith runtime" + homepage: https://karaf.apache.org + labels: + - apache + - karaf + - osgi + - modulith + + enabled_merge_buttons: + merge: false + rebase: false + squash: true + + del_branch_on_merge: true + + protected_branches: + main: + required_pull_request_reviews: + require_code_owner_reviews: false + required_approving_review_count: 0 + required_linear_history: true + required_status_checks: + strict: false + contexts: + - build + karaf-4.4.x: + required_pull_request_reviews: + require_code_owner_reviews: false + required_approving_review_count: 0 + required_linear_history: true + required_status_checks: + strict: false + contexts: + - build + + features: + wiki: false + issues: true + projects: true + + autolink_jira: + - KARAF + notifications: + commits: commits@karaf.apache.org + issues: issues@karaf.apache.org pullrequests: commits@karaf.apache.org + jira_options: link label diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000000..686695e99a8 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,36 @@ +# +# 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. +# + +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + ignore: + - dependency-name: "*" + update-types: ["version-update:semver-major"] + - package-ecosystem: "maven" + directory: "/" + schedule: + interval: "daily" + open-pull-requests-limit: 50 + ignore: + - dependency-name: "*" + update-types: ["version-update:semver-major"] diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000000..e8b5f283d41 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,45 @@ +# +# 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. +# + +name: Build + +on: + push: + branches: [ "karaf-4.4.x" ] + pull_request: + branches: [ "karaf-4.4.x" ] + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 11 + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'temurin' + - name: Build + run: mvn -U -B -e clean install -DskipTests -Prat + - name: Test + run: mvn -B -e -fae test -Ptest diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 76deecb42d8..00000000000 --- a/Jenkinsfile +++ /dev/null @@ -1,200 +0,0 @@ -#!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 { - node { - label 'ubuntu' - } - } - - environment { - // ... setup any environment variables ... - MVN_LOCAL_REPO_OPT = '-Dmaven.repo.local=.repository' - MVN_TEST_FAIL_IGNORE = '-Dmaven.test.failure.ignore=true' - } - - tools { - // ... tell Jenkins what java version, maven version or other tools are required ... - maven 'maven_3_latest' - jdk 'jdk_11_latest' - } - - options { - // Configure an overall timeout for the build of one hour. - timeout(time: 5, unit: 'HOURS') - // When we have test-fails e.g. we don't need to run the remaining steps - skipStagesAfterUnstable() - buildDiscarder(logRotator(numToKeepStr: '5', artifactNumToKeepStr: '5')) - } - - stages { - stage('Initialization') { - steps { - echo 'Building branch ' + env.BRANCH_NAME - echo 'Using PATH ' + env.PATH - } - } - - stage('Cleanup') { - steps { - echo 'Cleaning up the workspace' - deleteDir() - } - } - - stage('Checkout') { - steps { - echo 'Checking out branch ' + env.BRANCH_NAME - checkout scm - } - } - - stage('Build JDK 20') { - tools { - jdk "jdk_20_latest" - } - steps { - echo 'Building JDK 20' - sh 'java -version' - sh 'mvn -version' - sh 'mvn -U -B -e clean install -DskipTests' - } - } - - stage('Build JDK 17') { - tools { - jdk "jdk_17_latest" - } - steps { - echo 'Building JDK 17' - sh 'java -version' - sh 'mvn -version' - sh 'mvn -U -B -e clean install -DskipTests' - } - } - - stage('Build JDK 11') { - tools { - jdk "jdk_11_latest" - } - steps { - echo 'Building JDK 11' - sh 'java -version' - sh 'mvn -version' - sh 'mvn -U -B -e clean install -DskipTests -Dinvoker.skip=true -Prat' - } - } - - stage('Tests') { - steps { - echo 'Running tests' - sh 'mvn -B -e -fae test -Ptest' - } - post { - always { - junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true) - junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true) - } - } - } - - // stage('Code Quality') { - // steps { - // echo 'Checking Code Quality on SonarCloud' - // withCredentials([string(credentialsId: 'sonarcloud-key-apache-karaf', variable: 'SONAR_TOKEN')]) { - // sh 'mvn sonar:sonar -Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache -Dsonar.projectKey=apache_karaf -Dsonar.branch.name=${BRANCH_NAME} -Dsonar.login=${SONAR_TOKEN}' - // } - // } - //} - - stage('Deploy') { - when { - expression { - env.BRANCH_NAME ==~ /(karaf-4.3.x|main)/ - } - } - steps { - echo 'Deploying' - sh 'mvn -B -e deploy -Pdeploy -DskipTests' - } - } - } - - // Do any post build stuff ... such as sending emails depending on the overall build result. - post { - // If this build failed, send an email to the list. - failure { - script { - if(env.BRANCH_NAME == "karaf-4.3.x" || env.BRANCH_NAME == "main") { - emailext( - subject: "[BUILD-FAILURE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'", - body: """ -BUILD-FAILURE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]': -Check console output at "${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]" -""", - to: "commits@karaf.apache.org", - recipientProviders: [[$class: 'DevelopersRecipientProvider']] - ) - } - } - } - - // If this build didn't fail, but there were failing tests, send an email to the list. - unstable { - script { - if(env.BRANCH_NAME == "karaf-4.3.x" || env.BRANCH_NAME == "main") { - emailext( - subject: "[BUILD-UNSTABLE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'", - body: """ -BUILD-UNSTABLE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]': -Check console output at "${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]" -""", - to: "commits@karaf.apache.org", - recipientProviders: [[$class: 'DevelopersRecipientProvider']] - ) - } - } - } - - // Send an email, if the last build was not successful and this one is. - success { - // Cleanup the build directory if the build was successful - // (in this cae we probably don't have to do any post-build analysis) - deleteDir() - script { - if ((env.BRANCH_NAME == "karaf-4.3.x" || env.BRANCH_NAME == "main") && (currentBuild.previousBuild != null) && (currentBuild.previousBuild.result != 'SUCCESS')) { - emailext ( - subject: "[BUILD-STABLE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'", - body: """ -BUILD-STABLE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]': -Is back to normal. -""", - to: "commits@karaf.apache.org", - recipientProviders: [[$class: 'DevelopersRecipientProvider']] - ) - } - } - } - } - -}