This is an automated email from the ASF dual-hosted git repository. twolf pushed a commit to branch dev_3.0 in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
commit a56c8f5ccde91cd91258fb02744a11c93a807baa Merge: 825cbda6b 6b4a81d6f Author: Thomas Wolf <[email protected]> AuthorDate: Sun Feb 1 14:32:50 2026 +0100 Merge branch 'master' into 3.0.0 .github/workflows/build.yml | 14 +-- .github/workflows/master-build.yml | 9 +- .github/workflows/next-build.yml | 13 +-- .mvn/wrapper/maven-wrapper.properties | 2 +- assembly/pom.xml | 2 +- docs/changes/2.17.0.md | 34 ++++++ docs/changes/2.17.1.md | 19 ++++ pom.xml | 16 +-- sshd-benchmarks/pom.xml | 2 +- sshd-cli/pom.xml | 2 +- sshd-common/pom.xml | 2 +- .../sshd/server/shell/TtyFilterOutputStream.java | 19 +--- .../server/shell/TtyFilterOutputStreamTest.java | 2 +- sshd-contrib/pom.xml | 2 +- sshd-core/pom.xml | 2 +- .../org/apache/sshd/server/shell/ProcessShell.java | 2 +- .../apache/sshd/server/shell/ProcessShellTest.java | 116 +++++++++++++++++++++ .../sshd/util/test/CoreTestSupportUtils.java | 4 +- sshd-git/pom.xml | 2 +- .../java/org/apache/sshd/git/GitTestSupport.java | 113 ++++++++++++++++++++ .../apache/sshd/git/pack/GitPackCommandTest.java | 8 +- .../org/apache/sshd/git/pgm/GitPgmCommandTest.java | 8 +- sshd-ldap/pom.xml | 4 +- sshd-mina/pom.xml | 2 +- sshd-netty/pom.xml | 2 +- sshd-openpgp/pom.xml | 2 +- sshd-osgi/pom.xml | 2 +- sshd-putty/pom.xml | 2 +- sshd-scp/pom.xml | 2 +- sshd-sftp/pom.xml | 2 +- sshd-spring-sftp/pom.xml | 2 +- 31 files changed, 337 insertions(+), 76 deletions(-) diff --cc .github/workflows/next-build.yml index 7b4611229,000000000..5112c9263 mode 100644,000000..100644 --- a/.github/workflows/next-build.yml +++ b/.github/workflows/next-build.yml @@@ -1,120 -1,0 +1,115 @@@ +# +# 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: next-build + +on: + push: + branches: + - 'dev_3.0' + paths-ignore: + - 'docs/**' + - '*.md' + - '.github/ISSUE_TEMPLATE/**' + - '*.txt' + +jobs: + build: + uses: ./.github/workflows/build.yml + + deploy-snapshot: + # Skip any commit from creating releases. The first snapshot after a new release + # will thus be published on the first real change on the new snapshot version, but + # there will be no snapshot release for just bumping the version. + if: "!startsWith(github.event.head_commit.message ,'[maven-release-plugin]')" + needs: build + # Serialize these jobs from different workflow runs. We do not want concurrent + # deployments. We don't cancel already running jobs because we do not want their + # workflows to report a failure. Github does not guarantee order between jobs + # that queue within 5 minutes, see https://docs.github.com/en/actions/using-jobs/using-concurrency . + # We do check below that the job is operating on the latest origin/master, and + # we skip deployment if not. + concurrency: mina-sshd-next-snapshot-deploy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '25' + # Create a ~/.m2/settings.xml referencing these environment variable names + server-id: 'apache.snapshots.https' + server-username: NEXUS_USERNAME + server-password: NEXUS_PASSWORD + + - uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ubuntu-latest-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ubuntu-latest-maven- + - - name: Set up Maven - uses: stCarolas/setup-maven@v5 - with: - maven-version: '3.9.11' - + - name: Check version (SNAPSHOT) + # Only deploy SNAPSHOT versions. We do not use "exit 1" because we still want the workflow + # to report success, we just want this job to do nothing. + # + # All subsequent steps are conditional. + run: | - export PROJECT_VERSION=$(mvn -B -q -DforceStdout -Dexpression=project.version help:evaluate) ++ export PROJECT_VERSION=$(./mvnw -B -q -DforceStdout -Dexpression=project.version help:evaluate) + echo "Project version: $PROJECT_VERSION" + [[ "$PROJECT_VERSION" =~ ^3\.[0-9]+\.[0-9]+-SNAPSHOT$ ]] || { + echo "**** Skipping deployment because not a snapshot version: $PROJECT_VERSION" 1>&2 + echo "SKIP_DEPLOYMENT=true" >> "$GITHUB_ENV" + } + + - name: Check HEAD is current + # Must be quoted, ! is special in yaml + if: "! env.SKIP_DEPLOYMENT" + # Do not deploy if refs/heads/dev_3.0 has advanced in the meantime + run : | + export CURR_HEAD=$(git rev-parse -q origin/dev_3.0) + echo "Local: github.sha=${{ github.sha }} refs/heads/dev_3.0=$(git rev-parse -q refs/heads/dev_3.0)" + echo "Origin: origin/dev_3.0=$CURR_HEAD" + [[ "${{ github.sha }}" == "$CURR_HEAD" ]] || { + echo "**** Skipping deployment because dev_3.0 branch advanced: ${{ github.sha }} != origin/dev_3.0 $CURR_HEAD" 1>&2 + echo "SKIP_DEPLOYMENT=true" >> "$GITHUB_ENV" + } + + - name: Build and deploy with maven + # Must be quoted, ! is special in yaml + if: "! env.SKIP_DEPLOYMENT" + # NEXUS_USERNAME and NEXUS_PASSWORD are used in ~/.m2/settings.xml created by + # the setup-java action. The two secrets are organization-wide secrets that + # were enabled by Apache Infra for our repository. + env: + NEXUS_USERNAME: ${{ secrets.NEXUS_USER }} + NEXUS_PASSWORD: ${{ secrets.NEXUS_PW }} + # Our root POM overwrites the release repository with an invalid value to prevent + # accidental release deployments as an additional safety measure. The snapshot + # repo from the Apache parent POM is not overridden. - run: mvn -B --errors --activate-profiles ci --no-transfer-progress deploy -DskipTests -DdeployAtEnd ++ run: ./mvnw -B --errors --activate-profiles ci --no-transfer-progress deploy -DskipTests -DdeployAtEnd + + - name: Build and deploy web site + if: "! env.SKIP_DEPLOYMENT" + # git config needs to be --global because scm-publish will clone the repo again. + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - mvn -B --no-transfer-progress -DskipTests -Pjapicmp clean install - mvn -B --no-transfer-progress scm-publish:publish-scm -Dgithub.actor=${{ github.actor }} -Dgithub.token=${{ secrets.GITHUB_TOKEN }} ++ ./mvnw -B --no-transfer-progress -DskipTests -Pjapicmp clean install ++ ./mvnw -B --no-transfer-progress scm-publish:publish-scm -Dgithub.actor=${{ github.actor }} -Dgithub.token=${{ secrets.GITHUB_TOKEN }} diff --cc pom.xml index 9a48d2c19,77bbf60db..d99bfc539 --- a/pom.xml +++ b/pom.xml @@@ -71,30 -71,33 +71,30 @@@ </scm> <properties> - <japicmp-sshd-last-release>2.16.0</japicmp-sshd-last-release> - <minimalJavaBuildVersion>17</minimalJavaBuildVersion> ++ <japicmp-sshd-last-release>2.17.1</japicmp-sshd-last-release> + <minimalJavaBuildVersion>24</minimalJavaBuildVersion> <surefireJdk>[${minimalJavaBuildVersion},)</surefireJdk> - <minimalMavenBuildVersion>3.9.11</minimalMavenBuildVersion> + <minimalMavenBuildVersion>3.9.12</minimalMavenBuildVersion> <format.impsort.action>sort</format.impsort.action> <format.formatter.action>format</format.formatter.action> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <project.build.outputTimestamp>2026-01-22T19:40:42Z</project.build.outputTimestamp> + <project.build.outputTimestamp>2025-10-22T16:19:01Z</project.build.outputTimestamp> <java.sdk.version>8</java.sdk.version> - <javac.source>${java.sdk.version}</javac.source> - <project.build.java.source>${javac.source}</project.build.java.source> - <maven.compiler.source>${javac.source}</maven.compiler.source> + <javac.release>${java.sdk.version}</javac.release> + <maven.compiler.release>${java.sdk.version}</maven.compiler.release> <ant.version>1.10.15</ant.version> - <ant.build.javac.source>${javac.source}</ant.build.javac.source> <build-helper-maven-plugin.version>3.6.1</build-helper-maven-plugin.version> - <javac.target>${javac.source}</javac.target> - <required.java.version>[${javac.target},)</required.java.version> - <project.build.java.target>${javac.target}</project.build.java.target> - <maven.compiler.target>${javac.target}</maven.compiler.target> - <ant.build.javac.target>${javac.target}</ant.build.javac.target> + <required.java.version>[${java.sdk.version},)</required.java.version> <groovy.version>4.0.17</groovy.version> - <bouncycastle.version>1.82</bouncycastle.version> + <bouncycastle.version>1.83</bouncycastle.version> + <!-- BC FIPS has version numbers 2.x.y. --> + <bouncycastle.upper.bound>3</bouncycastle.upper.bound> <!-- NOTE: upgrading slf4j beyond this version causes Execution verify-style of goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2:check failed.: NullPointerException @@@ -114,8 -117,8 +114,8 @@@ <maven.archiver.version>3.6.5</maven.archiver.version> <plexus.archiver.version>4.10.3</plexus.archiver.version> <!-- See https://pmd.github.io/ for available latest version --> - <pmd.version>7.17.0</pmd.version> + <pmd.version>7.20.0</pmd.version> - + <japicmp.version>0.23.1</japicmp.version> <sshd.tests.timeout.factor>1.0</sshd.tests.timeout.factor> <sshd.tests.rerun.count>2</sshd.tests.rerun.count> diff --cc sshd-git/src/test/java/org/apache/sshd/git/pack/GitPackCommandTest.java index 2ddcbf6a2,3e6dbe63d..fae7fb6e9 --- a/sshd-git/src/test/java/org/apache/sshd/git/pack/GitPackCommandTest.java +++ b/sshd-git/src/test/java/org/apache/sshd/git/pack/GitPackCommandTest.java @@@ -52,12 -53,10 +53,12 @@@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.TestMethodOrder; /** + * Tests for using git over ssh. */ @TestMethodOrder(MethodName.class) - class GitPackCommandTest extends BaseTestSupport { -public class GitPackCommandTest extends GitTestSupport { - public GitPackCommandTest() { ++class GitPackCommandTest extends GitTestSupport { + + GitPackCommandTest() { super(); } diff --cc sshd-git/src/test/java/org/apache/sshd/git/pgm/GitPgmCommandTest.java index b74b08bba,d3b47e108..eeae8be64 --- a/sshd-git/src/test/java/org/apache/sshd/git/pgm/GitPgmCommandTest.java +++ b/sshd-git/src/test/java/org/apache/sshd/git/pgm/GitPgmCommandTest.java @@@ -41,12 -42,10 +42,12 @@@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.TestMethodOrder; /** + * Tests for running git commands. */ @TestMethodOrder(MethodName.class) - class GitPgmCommandTest extends BaseTestSupport { -public class GitPgmCommandTest extends GitTestSupport { - public GitPgmCommandTest() { ++class GitPgmCommandTest extends GitTestSupport { + + GitPgmCommandTest() { super(); } diff --cc sshd-ldap/pom.xml index e97a44f07,3c46b36a8..eada261ee --- a/sshd-ldap/pom.xml +++ b/sshd-ldap/pom.xml @@@ -143,16 -143,9 +143,16 @@@ <argLine>${surefire.argLine}</argLine> </configuration> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <additionalparam>-Xdoclint:none</additionalparam> + </configuration> + </plugin> </plugins> </build> - + <profiles> <profile> <id>surefireJdk8</id>
