This is an automated email from the ASF dual-hosted git repository. ppkarwasz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/logging-flume.git
commit 7e82cd289c65f933ecae3315cf9817a66a711188 Author: Piotr P. Karwasz <[email protected]> AuthorDate: Fri Jul 31 22:31:46 2026 +0200 Build with the `logging-parent` reusable workflows (#470) * Build with the `logging-parent` reusable workflows Flume no longer maintains its own checkout, JDK and Maven steps, and gains snapshot/release deployment and reproducibility verification in exchange. Assisted-By: Claude Fable 5 <[email protected]> * Skip Taildir tests on non-POSIX file systems TaildirSource tracks files by inode, so its tests cannot pass when the default file system lacks a `unix` attribute view (e.g. on Windows). Document that requirement in the user guide. Assisted-By: Claude Fable 5 <[email protected]> * Formatting * Fix race condition in TestSyslogTcpSource.testSSLMessages The test read from the channel immediately after closing the client socket, but the source delivers events asynchronously, so the take could return null on slow machines (first seen on Windows CI). Wait for the source counter with Awaitility and close the TLS socket gracefully, flushing before close. Assisted-By: Claude Fable 5 <[email protected]> * Keep the client socket open until the syslog event is committed The Windows CI logs show the TLS handshake succeeding and the connection aborting one millisecond later: the client never reads the TLS 1.3 session tickets sent by the server, so close() aborts the connection with a TCP RST, which on Windows discards the syslog record before the server reads it. Assisted-By: Claude Fable 5 <[email protected]> * Reflow comment --- .github/workflows/build.yaml | 90 ++++++++++++++++++++++++++++++++++++++++++++ .github/workflows/build.yml | 77 ------------------------------------- 2 files changed, 90 insertions(+), 77 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 00000000..a60a31f8 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,90 @@ +# +# 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: + - "trunk" + - "release/*" + pull_request: + +# Disable all permissions by defaults: +# Permissions are enabled on a per-job basis. +permissions: { } + +concurrency: + # One group per PR, or per ref for branch pushes. + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + # Cancel in-progress runs for PRs only, so release branch builds always complete. + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +jobs: + + build: + uses: apache/logging-parent/.github/workflows/build-reusable.yaml@gha/v0 + with: + java-version: 17 + site-enabled: true + reproducibility-check-enabled: false + + deploy-snapshot: + needs: build + if: github.repository == 'apache/logging-flume' && github.ref_name == 'trunk' + uses: apache/logging-parent/.github/workflows/deploy-snapshot-reusable.yaml@gha/v0 + # Secrets for deployments + secrets: + NEXUS_USERNAME: ${{ secrets.LOGGING_STAGE_DEPLOYER_USER }} + NEXUS_PASSWORD: ${{ secrets.LOGGING_STAGE_DEPLOYER_PW }} + with: + java-version: 17 + + deploy-release: + needs: build + if: github.repository == 'apache/logging-flume' && startsWith(github.ref_name, 'release/') + uses: apache/logging-parent/.github/workflows/deploy-release-reusable.yaml@gha/v0 + # Secrets for deployments + secrets: + GPG_SECRET_KEY: ${{ secrets.LOGGING_GPG_SECRET_KEY }} + NEXUS_USERNAME: ${{ secrets.LOGGING_STAGE_DEPLOYER_USER }} + NEXUS_PASSWORD: ${{ secrets.LOGGING_STAGE_DEPLOYER_PW }} + SVN_USERNAME: ${{ secrets.LOGGING_SVN_DEV_USERNAME }} + SVN_PASSWORD: ${{ secrets.LOGGING_SVN_DEV_PASSWORD }} + # Write permissions to allow the Maven `revision` property update, changelog release, etc. + permissions: + contents: write + with: + java-version: 17 + project-id: flume + + verify-reproducibility-snapshot: + needs: deploy-snapshot + uses: apache/logging-parent/.github/workflows/verify-reproducibility-reusable.yaml@gha/v0 + with: + java-version: 17 + # Compare against the repository `deploy-snapshot` uploaded as a run artifact, so that + # the check does not depend on the snapshot having propagated to the Nexus group repository. + reference-artifact-name: ${{ needs.deploy-snapshot.outputs.repository-artifact-name }} + + verify-reproducibility-release: + needs: deploy-release + uses: apache/logging-parent/.github/workflows/verify-reproducibility-reusable.yaml@gha/v0 + with: + java-version: 17 + # `deploy-release` publishes no run artifact, so the staging repository is the reference. + nexus-url: ${{ needs.deploy-release.outputs.nexus-url }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 49f910d0..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,77 +0,0 @@ -# -# 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: - - trunk - - build-dev - pull_request: - -# Remove all permissions by default. They will be added at a job level. -permissions: {} - -concurrency: - # One group per PR, or per ref for branch pushes. - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - # Cancel in-progress runs for PRs only, so release branch builds always complete. - cancel-in-progress: ${{ github.event_name == 'pull_request' }} - -jobs: - build: - - runs-on: ${{ matrix.os }} - name: build (${{ matrix.os }}) - - strategy: - # Don't cancel the remaining OS builds when one fails - fail-fast: false - matrix: - os: [ ubuntu-latest, windows-latest ] - java-distribution: [ temurin ] - # - # There is no protobuf 2.x version for `aarch64`. - # Reenable the macOS build after the dependency has been upgraded. - # - #include: - # # There is no Temurin JDK 8 for ARM - # - os: macos-latest - # java-distribution: zulu - - steps: - - - name: Checkout repository - uses: actions/checkout@v6 - - # JDK 8 is needed for the build, and it is the primary bytecode target. - - name: Setup JDK 17 - uses: actions/setup-java@v5 - with: - distribution: ${{ matrix.java-distribution }} - java-version: 17 - cache: maven - - - name: Build with Maven - timeout-minutes: 120 - shell: bash - run: | - ./mvnw clean verify -DredirectTestOutput=true \ - --show-version --batch-mode --errors --no-transfer-progress \ - -DtrimStackTrace=false \ - -Dsurefire.rerunFailingTestsCount=2
