You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tw...@apache.org on 2026/03/14 20:18:42 UTC
(mina-sshd) 02/03: Merge branch 'master' into 3.0.0
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 <tw...@apache.org>
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>