(geronimo-mail) branch main updated: Add nightly Jakarta Mail TCK workflow

[email protected] Sun, 19 Jul 2026 09:43:04 +0000
Newsgroups gmane.comp.java.geronimo.cvs
Message-ID <178445418490.687519.15971870136278103945@gitbox3-he-fi.apache.org>
This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/geronimo-mail.git


The following commit(s) were added to refs/heads/main by this push:
     new fe5e631  Add nightly Jakarta Mail TCK workflow
fe5e631 is described below

commit fe5e6314df9c0c189ad5507b62d811f2cb785dfd
Author: Richard Zowalla <[email protected]>
AuthorDate: Sun Jul 19 11:42:06 2026 +0200

    Add nightly Jakarta Mail TCK workflow
---
 .github/workflows/tck.yml | 85 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 85 insertions(+)

diff --git a/.github/workflows/tck.yml b/.github/workflows/tck.yml
new file mode 100644
index 0000000..6a0c134
--- /dev/null
+++ b/.github/workflows/tck.yml
@@ -0,0 +1,85 @@
+# 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: Jakarta Mail TCK
+
+on:
+  schedule:
+    # nightly, off the full hour to be kind to shared infrastructure
+    - cron: '17 2 * * *'
+  workflow_dispatch:
+
+concurrency:
+  # two concurrent TCK runs would race on nothing here (separate runners),
+  # but there is no point in running them in parallel either
+  group: jakarta-mail-tck
+  cancel-in-progress: false
+
+jobs:
+  tck:
+    # do not run the scheduled job on forks
+    if: github.repository == 'apache/geronimo-mail'
+    runs-on: ubuntu-latest
+    timeout-minutes: 40
+
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Set up JDK
+        uses: actions/setup-java@v4
+        with:
+          # the JavaTest harness installs a SecurityManager, which JDK 24+
+          # no longer supports - keep this pinned to a 21 line
+          java-version: '21'
+          distribution: 'temurin'
+
+      - name: Cache Maven packages
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2
+          key: ${{ runner.os }}-tck-m2-${{ hashFiles('**/pom.xml') }}
+          restore-keys: ${{ runner.os }}-tck-m2
+
+      - name: Cache TCK distribution
+        uses: actions/cache@v4
+        with:
+          path: geronimo-mail_2.1_tck/target/jakarta-mail-tck-2.1.1.zip
+          # the zip is immutable; key on its expected checksum (see the tck pom)
+          key: jakarta-mail-tck-c749d4245acc51a53c8c3058782f3da6dfd87384a4485ce3fee3c8d36bd0df1b
+
+      - name: Build
+        run: mvn -B install -DskipTests
+
+      - name: Run the Jakarta Mail TCK
+        # Retried once: Apache James 3.9 occasionally writes the fragments of a
+        # FETCH literal response out of order under concurrent load, which makes
+        # exactly one fetch test per run fail with "Unknown server response: )".
+        # This is a server-side write race (client verified blameless on the
+        # wire); drop the retry once a fixed James version is picked up.
+        run: |
+          mvn -B verify -Ptck -pl geronimo-mail_2.1_tck || {
+            echo "::warning::TCK run failed - retrying once (known Apache James 3.9 response write race)"
+            rm -rf geronimo-mail_2.1_tck/target/mail-tck/JTwork geronimo-mail_2.1_tck/target/mail-tck/JTreport
+            mvn -B verify -Ptck -pl geronimo-mail_2.1_tck
+          }
+
+      - name: Upload TCK report
+        if: always()
+        uses: actions/upload-artifact@v4
+        with:
+          name: jtreport
+          path: geronimo-mail_2.1_tck/target/mail-tck/JTreport/
+          if-no-files-found: ignore
+          retention-days: 14