This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch 1.22
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/1.22 by this push:
new d56662f7b8 OAK-12001: CI for 1.22 (#2750)
d56662f7b8 is described below
commit d56662f7b8b7c17d193e5536e4e5a21dfdd8f0ce
Author: Julian Reschke <[email protected]>
AuthorDate: Thu Feb 19 10:23:47 2026 +0100
OAK-12001: CI for 1.22 (#2750)
---
.github/workflows/build.yml | 100 +++++++++++++++++++++++++++++++++++++
.github/workflows/commit-check.yml | 49 ++++++++++++++++++
.github/workflows/stale.yml | 31 ++++++++++++
3 files changed, 180 insertions(+)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000000..31f21c2215
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,100 @@
+# ~ 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:
+ - 1.22
+ pull_request:
+ types: [opened, synchronize, reopened]
+jobs:
+ build:
+ name: Maven Build
+ runs-on: ubuntu-latest
+ steps:
+ - name: Git clone
+ uses: actions/checkout@v4
+ - name: Set up JDK 11
+ uses: actions/setup-java@v4
+ with:
+ java-version: 11
+ distribution: temurin
+ cache: maven
+ server-id: apache.snapshots.https # Value of the
distributionManagement/repository/id field of the pom.xml
+ server-username: MAVEN_APACHE_NEXUS_USERNAME # env variable for
username in deploy
+ server-password: MAVEN_APACHE_NEXUS_PASSWORD # env variable for
token in deploy
+ # sets environment variables to be used in subsequent steps:
https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
+ - name: Set environment variables
+ shell: bash
+ run: |
+ if [ "${{github.ref}}" = "refs/heads/1.22" ] && [
"${{github.event_name}}" = "push" ] && [ "${{github.repository_owner}}" =
"apache" ]; then
+ echo 'Running on main branch of the canonical repo'
+ echo "MVN_ADDITIONAL_OPTS=-DdeployAtEnd=true" >> $GITHUB_ENV
+ echo "MVN_GOAL=deploy" >> $GITHUB_ENV
+ echo "MAVEN_APACHE_NEXUS_USERNAME=${{ secrets.NEXUS_USER }}" >>
$GITHUB_ENV
+ echo "MAVEN_APACHE_NEXUS_PASSWORD=${{ secrets.NEXUS_PW }}" >>
$GITHUB_ENV
+ else
+ echo 'Running outside main branch/canonical repo'
+ echo "MVN_ADDITIONAL_OPTS=-Dskip.coverage=true" >> $GITHUB_ENV
+ echo "MVN_GOAL=install" >> $GITHUB_ENV
+ fi
+ - name: Build
+ # executing ITs requires installing artifacts to the local repository
+ run: mvn -B ${{ env.MVN_GOAL }} ${{ env.MVN_ADDITIONAL_OPTS }}
-PintegrationTesting,javadoc -Dnsfixtures=SEGMENT_TAR,DOCUMENT_NS
+ - name: Upload build result
+ uses: actions/upload-artifact@v4
+ with:
+ name: compiled-classes-and-coverage
+ # compare with
https://docs.sonarsource.com/sonarqube-cloud/advanced-setup/languages/java/#java-analysis-and-bytecode
+ path: |
+ **/target/**/*.class
+ **/target/site/jacoco*/*.xml
+
+ # execute analysis in a separate job for better visualization and usage of
matrix builds
+ #
https://docs.sonarsource.com/sonarcloud/advanced-setup/ci-based-analysis/sonarscanner-for-maven/#invoking-the-goal
+ sonar:
+ name: SonarQube Analysis
+ runs-on: ubuntu-latest
+ needs: build
+ # not supported on forks,
https://portal.productboard.com/sonarsource/1-sonarqube-cloud/c/50-sonarcloud-analyzes-external-pull-request
+ if: ${{ github.repository == 'apache/jackrabbit-oak' }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # Shallow clones should be disabled for a better
relevancy of analysis
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ java-version: 17
+ distribution: temurin
+ cache: maven
+ - name: Download compiled classes
+ uses: actions/download-artifact@v4
+ with:
+ name: compiled-classes-and-coverage
+ - name: Cache SonarQube packages
+ uses: actions/cache@v4
+ with:
+ path: ~/.sonar/cache
+ key: ${{ runner.os }}-sonar
+ restore-keys: ${{ runner.os }}-sonar
+ - name: Analyze with SonarQube
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR
information, if any
+ SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }}
+ run: mvn -B
org.sonarsource.scanner.maven:sonar-maven-plugin:5.0.0.4389:sonar
-Dsonar.projectKey=org.apache.jackrabbit:jackrabbit-oak
-Dsonar.organization=apache -Dsonar.scanner.skipJreProvisioning=true
diff --git a/.github/workflows/commit-check.yml
b/.github/workflows/commit-check.yml
new file mode 100644
index 0000000000..1274e20d90
--- /dev/null
+++ b/.github/workflows/commit-check.yml
@@ -0,0 +1,49 @@
+# ~ 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: Commit Check
+
+on:
+ pull_request:
+ branches: 'trunk'
+
+jobs:
+ commit-check:
+ runs-on: ubuntu-latest
+ permissions: # use permissions because of use pr-comments
+ contents: read
+ pull-requests: write
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: ${{ github.event.pull_request.head.sha }} # checkout PR HEAD
commit
+ fetch-depth: 0 # required for merge-base check
+ # https://github.com/commit-check
+ # must be pinned due to
https://infra.apache.org/github-actions-policy.html
+ - uses:
commit-check/commit-check-action@8d507e12899a9feb405c3ed546252ff9508724e0
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # use GITHUB_TOKEN because
of use pr-comments
+ with:
+ # check commit message formatting convention
+ message: true
+ branch: true
+ author-name: true
+ author-email: true
+ commit-signoff: false
+ merge-base: false
+ job-summary: true
+ pr-comments: ${{ github.event_name == 'pull_request' }}
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 0000000000..68925cd7f6
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,31 @@
+# ~ 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: 'Close stale PR and Issues'
+on:
+ schedule:
+ - cron: '30 1 * * *'
+
+jobs:
+ stale:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/stale@v5
+ with:
+ stale-pr-message: 'This PR is stale because it has been open 24
months with no activity. Remove stale label or comment or this will be closed
in 30 days.'
+ days-before-pr-stale: 730
+ days-before-pr-close: 30