This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 1bd8d8f56f HDDS-11813. Reduce duplication in CI workflow (#7497)
1bd8d8f56f is described below
commit 1bd8d8f56f13b46ea76e8f18c8804c560e4df1e4
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Mon Mar 10 15:08:01 2025 +0100
HDDS-11813. Reduce duplication in CI workflow (#7497)
---
.github/workflows/check.yml | 289 +++++++++++++
.github/workflows/ci.yml | 592 ++++++--------------------
hadoop-ozone/dev-support/checks/acceptance.sh | 2 +-
3 files changed, 411 insertions(+), 472 deletions(-)
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
new file mode 100644
index 0000000000..6d06484d94
--- /dev/null
+++ b/.github/workflows/check.yml
@@ -0,0 +1,289 @@
+# 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.
+
+# This reusable workflow executes a single check from
`hadoop-ozone/dev-support/checks/`.
+# Before and after the check, it performs various steps based on workflow
inputs.
+
+name: ci-check
+
+on:
+ workflow_call:
+ inputs:
+ # REQUIRED
+ script:
+ type: string
+ description: "Test script to run from hadoop-ozone/dev-support/checks,
without .sh extension"
+ required: true
+
+ sha:
+ type: string
+ description: "Commit SHA to test"
+ required: true
+
+ # OPTIONAL (ordered alphabetically)
+ checkout-fetch-depth:
+ type: number
+ description: "Fetch depth for checking out the repo (default: no
history)"
+ default: 1
+ required: false
+
+ java-version:
+ type: string
+ description: "Java version to set up (default: none)"
+ default: ''
+ required: false
+
+ needs-maven-cache:
+ type: boolean
+ description: "Whether to restore Maven cache before run (default: yes)"
+ default: true
+ required: false
+
+ needs-npm-cache:
+ type: boolean
+ description: "Whether to restore NPM cache before run (default: no)"
+ default: false
+ required: false
+
+ needs-ozone-binary-tarball:
+ type: boolean
+ description: "Whether to download Ozone binary tarball created by
build (default: no)"
+ default: false
+ required: false
+
+ needs-ozone-repo:
+ type: boolean
+ description: "Whether to download Ozone jars created by build
(default: no)"
+ default: false
+ required: false
+
+ needs-ozone-source-tarball:
+ type: boolean
+ description: "Whether to download Ozone source tarball created by
build (default: no)"
+ default: false
+ required: false
+
+ pre-script:
+ type: string
+ description: "Command to execute before the test script (default:
none)"
+ default: ''
+ required: false
+
+ post-failure:
+ type: string
+ description: "Command to execute after the test script, if it failed
(default: none)"
+ default: ''
+ required: false
+
+ post-success:
+ type: string
+ description: "Command to execute after the test script, if it
succeeded (default: none)"
+ default: ''
+ required: false
+
+ ratis-args:
+ type: string
+ description: "Version overrides from custom Ratis build (default:
none)"
+ default: ''
+ required: false
+
+ runner:
+ type: string
+ description: "GitHub Actions runner to use"
+ default: 'ubuntu-24.04'
+ required: false
+
+ script-args:
+ type: string
+ description: "Arguments for the test script, ratis-args are appended"
+ default: ''
+ required: false
+
+ split:
+ type: string
+ description: "Name of split for matrix jobs, only used in display name"
+ default: ''
+ required: false
+
+ timeout-minutes:
+ type: number
+ description: "Job timeout in minutes (default: 30)"
+ default: 30
+ required: false
+
+ with-coverage:
+ type: boolean
+ description: "The value of OZONE_WITH_COVERAGE to set"
+ default: true
+ required: false
+
+env:
+ HADOOP_IMAGE: ghcr.io/apache/hadoop
+ MAVEN_ARGS: --batch-mode --settings ${{ github.workspace
}}/dev-support/ci/maven-settings.xml
+ MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
-Dmaven.wagon.http.retryHandler.class=standard
-Dmaven.wagon.http.retryHandler.count=3
+ OZONE_IMAGE: ghcr.io/apache/ozone
+ OZONE_RUNNER_IMAGE: ghcr.io/apache/ozone-runner
+ OZONE_VOLUME_OWNER: 1000
+
+jobs:
+ check:
+ name: ${{ (inputs.split && format('{0} ({1})', inputs.script,
inputs.split)) || inputs.script }}
+ runs-on: ${{ inputs.runner }}
+ timeout-minutes: ${{ inputs.timeout-minutes }}
+ steps:
+ - name: Checkout project
+ if: ${{ !inputs.needs-ozone-source-tarball }}
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ inputs.sha }}
+ fetch-depth: ${{ inputs.checkout-fetch-depth }}
+
+ - name: Download Ozone source tarball
+ if: ${{ inputs.needs-ozone-source-tarball }}
+ uses: actions/download-artifact@v4
+ with:
+ name: ozone-src
+
+ - name: Extract source tarball
+ if: ${{ inputs.needs-ozone-source-tarball }}
+ run: |
+ tar --strip-components 1 -xzvf ozone*-src.tar.gz
+
+ - name: Cache for NPM dependencies
+ if: ${{ inputs.needs-npm-cache }}
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.pnpm-store
+ **/node_modules
+ key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-pnpm-
+
+ - name: Cache for Maven dependencies
+ if: ${{ inputs.needs-maven-cache }}
+ uses: actions/cache/restore@v4
+ with:
+ path: |
+ ~/.m2/repository/*/*/*
+ !~/.m2/repository/org/apache/ozone
+ key: maven-repo-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ maven-repo-
+
+ - name: Download Ozone repo
+ id: download-ozone-repo
+ if: ${{ inputs.needs-ozone-repo }}
+ uses: actions/download-artifact@v4
+ with:
+ name: ozone-repo
+ path: |
+ ~/.m2/repository/org/apache/ozone
+
+ - name: Download Ratis repo
+ if: ${{ inputs.ratis-args != '' }}
+ uses: actions/download-artifact@v4
+ with:
+ name: ratis-jars
+ path: |
+ ~/.m2/repository/org/apache/ratis
+
+ - name: Download Ozone binary tarball
+ if: ${{ inputs.needs-ozone-binary-tarball }}
+ uses: actions/download-artifact@v4
+ with:
+ name: ozone-bin
+
+ - name: Extract binary tarball
+ if: ${{ inputs.needs-ozone-binary-tarball }}
+ run: |
+ mkdir -p hadoop-ozone/dist/target
+ tar xzvf ozone*.tar.gz -C hadoop-ozone/dist/target
+ rm ozone*.tar.gz
+
+ - name: Setup java ${{ inputs.java-version }}
+ if: ${{ inputs.java-version }}
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: ${{ inputs.java-version }}
+
+ - name: Execute pre-test steps
+ if: ${{ inputs.pre-script }}
+ run: |
+ ${{ inputs.pre-script }}
+
+ - name: Execute tests
+ run: |
+ hadoop-ozone/dev-support/checks/${{ inputs.script }}.sh ${{
inputs.script-args }} ${{ inputs.ratis-args }}
+ env:
+ DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
+ OZONE_WITH_COVERAGE: ${{ inputs.with-coverage }}
+
+ - name: Execute post-failure steps
+ if: ${{ failure() && inputs.post-failure }}
+ run: |
+ ${{ inputs.post-failure }}
+
+ - name: Execute post-success steps
+ if: ${{ !failure() && inputs.post-success }}
+ run: |
+ ${{ inputs.post-success }}
+
+ - name: Summary of failures
+ if: ${{ failure() }}
+ run: |
+ if [[ -s "target/${{ inputs.script }}/summary.md" ]]; then
+ cat target/${{ inputs.script }}/summary.md >> $GITHUB_STEP_SUMMARY
+ fi
+ hadoop-ozone/dev-support/checks/_summary.sh target/${{ inputs.script
}}/summary.txt
+
+ - name: Archive build results
+ if: ${{ !cancelled() }}
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ (inputs.split && format('{0}-{1}', inputs.script,
inputs.split)) || inputs.script }}
+ path: target/${{ inputs.script }}
+ continue-on-error: true
+
+ # The following steps are hard-coded to be run only for 'build' check,
+ # to avoid the need for 3 more inputs.
+ - name: Store binaries for tests
+ if: ${{ inputs.script == 'build' && !cancelled() }}
+ uses: actions/upload-artifact@v4
+ with:
+ name: ozone-bin
+ path: |
+ hadoop-ozone/dist/target/ozone-*.tar.gz
+ !hadoop-ozone/dist/target/ozone-*-src.tar.gz
+ retention-days: 1
+
+ - name: Store source tarball for compilation
+ if: ${{ inputs.script == 'build' && !cancelled() }}
+ uses: actions/upload-artifact@v4
+ with:
+ name: ozone-src
+ path: |
+ hadoop-ozone/dist/target/ozone-*-src.tar.gz
+ retention-days: 1
+
+ - name: Store Maven repo for tests
+ if: ${{ inputs.script == 'build' && !cancelled() }}
+ uses: actions/upload-artifact@v4
+ with:
+ name: ozone-repo
+ path: |
+ ~/.m2/repository/org/apache/ozone
+ retention-days: 1
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 87193106c2..f68ae51111 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -27,15 +27,14 @@ on:
default: ''
required: false
env:
- FAIL_FAST: ${{ github.event_name == 'pull_request' }}
+ BUILD_ARGS: "-Pdist -Psrc -Dmaven.javadoc.skip=true"
# Minimum required Java version for running Ozone is defined in pom.xml
(javac.version).
TEST_JAVA_VERSION: 21 # JDK version used by CI build and tests; should match
the JDK version in apache/ozone-runner image
+ # MAVEN_ARGS and MAVEN_OPTS are duplicated in check.yml, please keep in sync
MAVEN_ARGS: --batch-mode --settings ${{ github.workspace
}}/dev-support/ci/maven-settings.xml
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
-Dmaven.wagon.http.retryHandler.class=standard
-Dmaven.wagon.http.retryHandler.count=3
- HADOOP_IMAGE: ghcr.io/apache/hadoop
- OZONE_IMAGE: ghcr.io/apache/ozone
- OZONE_RUNNER_IMAGE: ghcr.io/apache/ozone-runner
OZONE_WITH_COVERAGE: ${{ github.event_name == 'push' }}
+
jobs:
build-info:
runs-on: ubuntu-24.04
@@ -53,6 +52,10 @@ jobs:
needs-integration-tests: ${{
steps.selective-checks.outputs.needs-integration-tests }}
needs-kubernetes-tests: ${{
steps.selective-checks.outputs.needs-kubernetes-tests }}
sha: ${{ steps.get-sha.outputs.sha }}
+ # `env` context cannot be used when calling reusable workflow, so we
need to convert these to `outputs`
+ build-args: ${{ env.BUILD_ARGS }}
+ java-version: ${{ env.TEST_JAVA_VERSION }}
+ with-coverage: ${{ env.OZONE_WITH_COVERAGE }}
steps:
- name: "Checkout ${{ github.ref }} / ${{ github.sha }} (push)"
uses: actions/checkout@v4
@@ -105,80 +108,23 @@ jobs:
env:
ALL_BASIC_CHECKS: "${{ steps.selective-checks.outputs.basic-checks
}}"
run: dev-support/ci/categorize_basic_checks.sh
+
build:
needs:
- build-info
- runs-on: ubuntu-24.04
- timeout-minutes: 60
if: needs.build-info.outputs.needs-build == 'true'
- steps:
- - name: Checkout project
- uses: actions/checkout@v4
- with:
- ref: ${{ needs.build-info.outputs.sha }}
- - name: Cache for npm dependencies
- uses: actions/cache@v4
- with:
- path: |
- ~/.pnpm-store
- **/node_modules
- key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-
- - name: Cache for maven dependencies
- uses: actions/cache/restore@v4
- with:
- path: |
- ~/.m2/repository/*/*/*
- !~/.m2/repository/org/apache/ozone
- key: maven-repo-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- maven-repo-
- - name: Download Ratis repo
- if: ${{ inputs.ratis_args != '' }}
- uses: actions/download-artifact@v4
- with:
- name: ratis-jars
- path: |
- ~/.m2/repository/org/apache/ratis
- - name: Setup java ${{ env.TEST_JAVA_VERSION }}
- uses: actions/setup-java@v4
- with:
- distribution: 'temurin'
- java-version: ${{ env.TEST_JAVA_VERSION }}
- - name: Run a full build
- run: hadoop-ozone/dev-support/checks/build.sh -Pdist -Psrc
-Dmaven.javadoc.skip=true ${{ inputs.ratis_args }}
- env:
- DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- - name: Archive build results
- uses: actions/upload-artifact@v4
- if: ${{ !cancelled() }}
- with:
- name: ${{ github.job }}
- path: target/${{ github.job }}
- continue-on-error: true
- - name: Store binaries for tests
- uses: actions/upload-artifact@v4
- with:
- name: ozone-bin
- path: |
- hadoop-ozone/dist/target/ozone-*.tar.gz
- !hadoop-ozone/dist/target/ozone-*-src.tar.gz
- retention-days: 1
- - name: Store source tarball for compilation
- uses: actions/upload-artifact@v4
- if: needs.build-info.outputs.needs-compile == 'true'
- with:
- name: ozone-src
- path: hadoop-ozone/dist/target/ozone-*-src.tar.gz
- retention-days: 1
- - name: Store Maven repo for tests
- uses: actions/upload-artifact@v4
- with:
- name: ozone-repo
- path: |
- ~/.m2/repository/org/apache/ozone
- retention-days: 1
+ uses: ./.github/workflows/check.yml
+ with:
+ java-version: ${{ needs.build-info.outputs.java-version }}
+ needs-npm-cache: true
+ ratis-args: ${{ inputs.ratis_args }}
+ script: build
+ script-args: ${{ needs.build-info.outputs.build-args }}
+ sha: ${{ needs.build-info.outputs.sha }}
+ timeout-minutes: 60
+ with-coverage: ${{ fromJSON(needs.build-info.outputs.with-coverage) }}
+ secrets: inherit
+
compile:
needs:
- build-info
@@ -186,7 +132,6 @@ jobs:
- basic
- dependency
- license
- timeout-minutes: 45
if: needs.build-info.outputs.needs-compile == 'true'
strategy:
matrix:
@@ -196,243 +141,80 @@ jobs:
- java: 8
os: macos-13
fail-fast: false
- runs-on: ${{ matrix.os }}
- steps:
- - name: Download Ozone source tarball
- uses: actions/download-artifact@v4
- with:
- name: ozone-src
- - name: Untar sources
- run: |
- tar --strip-components 1 -xzvf ozone*-src.tar.gz
- - name: Workaround for HADOOP-19011
- run: |
- git init
- git config user.name 'Github Actions'
- git config user.email '[email protected]'
- git commit --allow-empty -a -m 'workaround for HADOOP-19011'
- - name: Cache for maven dependencies
- uses: actions/cache/restore@v4
- with:
- path: |
- ~/.m2/repository/*/*/*
- !~/.m2/repository/org/apache/ozone
- key: maven-repo-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- maven-repo-
- - name: Download Ratis repo
- if: ${{ inputs.ratis_args != '' }}
- uses: actions/download-artifact@v4
- with:
- name: ratis-jars
- path: |
- ~/.m2/repository/org/apache/ratis
- - name: Setup java ${{ matrix.java }}
- uses: actions/setup-java@v4
- with:
- distribution: 'temurin'
- java-version: ${{ matrix.java }}
- - name: Compile Ozone using Java ${{ matrix.java }}
- run: hadoop-ozone/dev-support/checks/compile.sh -Pdist -DskipRecon
-Dmaven.javadoc.failOnWarnings=${{ matrix.java != 8 }} -Djavac.version=${{
matrix.java }} ${{ inputs.ratis_args }}
- env:
- OZONE_WITH_COVERAGE: false
- DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- - name: Archive build results
- uses: actions/upload-artifact@v4
- if: ${{ !cancelled() }}
- with:
- name: ${{ github.job }}-${{ matrix.java }}
- path: target/${{ github.job }}
- continue-on-error: true
+ uses: ./.github/workflows/check.yml
+ with:
+ java-version: ${{ matrix.java }}
+ needs-ozone-source-tarball: true
+ ratis-args: ${{ inputs.ratis_args }}
+ runner: ${{ matrix.os }}
+ script: compile
+ script-args: "-Pdist -DskipRecon -Dmaven.javadoc.failOnWarnings=${{
matrix.java != 8 }} -Djavac.version=${{ matrix.java }}"
+ sha: ${{ needs.build-info.outputs.sha }}
+ split: ${{ matrix.java }}
+ timeout-minutes: 45
+ with-coverage: false
+ secrets: inherit
+
basic:
needs:
- build-info
- runs-on: ubuntu-24.04
- timeout-minutes: 30
if: needs.build-info.outputs.needs-basic-check == 'true'
+ uses: ./.github/workflows/check.yml
+ with:
+ checkout-fetch-depth: ${{ matrix.check != 'bats' && 1 || 0 }}
+ java-version: 8 # HDDS-10150
+ needs-maven-cache: ${{ !contains('author,bats', matrix.check) }}
+ ratis-args: ${{ inputs.ratis_args }}
+ script: ${{ matrix.check }}
+ sha: ${{ needs.build-info.outputs.sha }}
+ timeout-minutes: 30
+ secrets: inherit
strategy:
matrix:
check: ${{ fromJson(needs.build-info.outputs.basic-checks) }}
fail-fast: false
- steps:
- - name: Checkout project
- uses: actions/checkout@v4
- with:
- ref: ${{ needs.build-info.outputs.sha }}
- if: matrix.check != 'bats'
- - name: Checkout project with history
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
- ref: ${{ needs.build-info.outputs.sha }}
- if: matrix.check == 'bats'
- - name: Cache for maven dependencies
- uses: actions/cache/restore@v4
- with:
- path: |
- ~/.m2/repository/*/*/*
- !~/.m2/repository/org/apache/ozone
- key: maven-repo-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- maven-repo-
- if: ${{ !contains('author,bats', matrix.check) }}
- - name: Download Ratis repo
- if: ${{ inputs.ratis_args != '' }}
- uses: actions/download-artifact@v4
- with:
- name: ratis-jars
- path: |
- ~/.m2/repository/org/apache/ratis
- - name: Setup java 8
- uses: actions/setup-java@v4
- with:
- distribution: 'temurin'
- java-version: 8
- - name: Execute tests
- run: hadoop-ozone/dev-support/checks/${{ matrix.check }}.sh ${{
inputs.ratis_args }}
- env:
- DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- - name: Summary of failures
- run: hadoop-ozone/dev-support/checks/_summary.sh target/${{
matrix.check }}/summary.txt
- if: ${{ failure() }}
- - name: Archive build results
- uses: actions/upload-artifact@v4
- if: ${{ !cancelled() }}
- with:
- name: ${{ matrix.check }}
- path: target/${{ matrix.check }}
- continue-on-error: true
+
native:
needs:
- build-info
- basic
- runs-on: ubuntu-24.04
- timeout-minutes: 150
if: needs.build-info.outputs.needs-native-check == 'true'
- steps:
- - name: Checkout project
- uses: actions/checkout@v4
- with:
- ref: ${{ needs.build-info.outputs.sha }}
- - name: Cache for maven dependencies
- uses: actions/cache/restore@v4
- with:
- path: |
- ~/.m2/repository/*/*/*
- !~/.m2/repository/org/apache/ozone
- key: maven-repo-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- maven-repo-
- - name: Download Ratis repo
- if: ${{ inputs.ratis_args != '' }}
- uses: actions/download-artifact@v4
- with:
- name: ratis-jars
- path: |
- ~/.m2/repository/org/apache/ratis
- - name: Setup java ${{ env.TEST_JAVA_VERSION }}
- uses: actions/setup-java@v4
- with:
- distribution: 'temurin'
- java-version: ${{ env.TEST_JAVA_VERSION }}
- - name: Execute tests
- run: hadoop-ozone/dev-support/checks/${{ github.job }}.sh ${{
inputs.ratis_args }}
- env:
- DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- - name: Summary of failures
- run: hadoop-ozone/dev-support/checks/_summary.sh target/${{ github.job
}}/summary.txt
- if: ${{ failure() }}
- - name: Archive build results
- uses: actions/upload-artifact@v4
- if: ${{ !cancelled() }}
- with:
- name: ${{ github.job }}
- path: target/${{ github.job }}
- continue-on-error: true
+ uses: ./.github/workflows/check.yml
+ secrets: inherit
+ with:
+ java-version: ${{ needs.build-info.outputs.java-version }}
+ ratis-args: ${{ inputs.ratis_args }}
+ script: native
+ sha: ${{ needs.build-info.outputs.sha }}
+ timeout-minutes: 150
+ with-coverage: ${{ fromJSON(needs.build-info.outputs.with-coverage) }}
+
dependency:
needs:
- build-info
- build
- runs-on: ubuntu-24.04
- timeout-minutes: 5
- steps:
- - name: Checkout project
- uses: actions/checkout@v4
- with:
- ref: ${{ needs.build-info.outputs.sha }}
- - name: Cache for maven dependencies
- uses: actions/cache/restore@v4
- with:
- path: |
- ~/.m2/repository/*/*/*
- !~/.m2/repository/org/apache/ozone
- key: maven-repo-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- maven-repo-
- - name: Download compiled Ozone binaries
- uses: actions/download-artifact@v4
- with:
- name: ozone-bin
- - name: Untar binaries
- run: |
- mkdir dist
- tar -C dist --strip-components 1 -xzf ozone*.tar.gz
- - name: Execute tests
- run: |
- export OZONE_DIST_DIR=`pwd`/dist
- ./hadoop-ozone/dev-support/checks/dependency.sh
- - name: Archive build results
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: dependency
- path: target/dependency
- continue-on-error: true
+ uses: ./.github/workflows/check.yml
+ secrets: inherit
+ with:
+ java-version: ${{ needs.build-info.outputs.java-version }}
+ needs-ozone-binary-tarball: true
+ script: dependency
+ sha: ${{ needs.build-info.outputs.sha }}
+ timeout-minutes: 5
+
license:
needs:
- build-info
- build
- runs-on: ubuntu-24.04
- timeout-minutes: 15
- steps:
- - name: Checkout project
- uses: actions/checkout@v4
- with:
- ref: ${{ needs.build-info.outputs.sha }}
- - name: Cache for maven dependencies
- uses: actions/cache/restore@v4
- with:
- path: |
- ~/.m2/repository/*/*/*
- !~/.m2/repository/org/apache/ozone
- key: maven-repo-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- maven-repo-
- - name: Download Ozone repo
- id: download-ozone-repo
- uses: actions/download-artifact@v4
- with:
- name: ozone-repo
- path: |
- ~/.m2/repository/org/apache/ozone
- - name: Setup java ${{ env.TEST_JAVA_VERSION }}
- uses: actions/setup-java@v4
- with:
- distribution: 'temurin'
- java-version: ${{ env.TEST_JAVA_VERSION }}
- - name: Execute tests
- run: |
- hadoop-ozone/dev-support/checks/${{ github.job }}.sh
- - name: Summary of failures
- run: hadoop-ozone/dev-support/checks/_summary.sh target/${{ github.job
}}/summary.txt
- if: ${{ failure() }}
- - name: Archive build results
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: ${{ github.job }}
- path: target/${{ github.job }}
- continue-on-error: true
+ uses: ./.github/workflows/check.yml
+ secrets: inherit
+ with:
+ java-version: ${{ needs.build-info.outputs.java-version }}
+ needs-ozone-repo: true
+ script: license
+ sha: ${{ needs.build-info.outputs.sha }}
+ timeout-minutes: 15
+
repro:
needs:
- build-info
@@ -440,56 +222,19 @@ jobs:
- basic
- dependency
- license
- runs-on: ubuntu-24.04
- timeout-minutes: 30
- steps:
- - name: Checkout project
- uses: actions/checkout@v4
- - name: Cache for maven dependencies
- uses: actions/cache/restore@v4
- with:
- path: |
- ~/.m2/repository/*/*/*
- !~/.m2/repository/org/apache/ozone
- key: maven-repo-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- maven-repo-
- - name: Download Ozone repo
- id: download-ozone-repo
- uses: actions/download-artifact@v4
- with:
- name: ozone-repo
- path: |
- ~/.m2/repository/org/apache/ozone
- - name: Download Ratis repo
- if: ${{ inputs.ratis_args != '' }}
- uses: actions/download-artifact@v4
- with:
- name: ratis-jars
- path: |
- ~/.m2/repository/org/apache/ratis
- - name: Setup java ${{ env.TEST_JAVA_VERSION }}
- uses: actions/setup-java@v4
- with:
- distribution: 'temurin'
- java-version: ${{ env.TEST_JAVA_VERSION }}
- - name: Execute tests
- run: |
- hadoop-ozone/dev-support/checks/${{ github.job }}.sh -Pdist -Psrc
-Dmaven.javadoc.skip=true ${{ inputs.ratis_args }}
- - name: Summary of failures
- run: hadoop-ozone/dev-support/checks/_summary.sh target/${{ github.job
}}/summary.txt
- if: ${{ failure() }}
- - name: Check artifact differences
- run: |
- hadoop-ozone/dev-support/checks/_diffoscope.sh
- if: ${{ failure() }}
- - name: Archive build results
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: ${{ github.job }}
- path: target/${{ github.job }}
- continue-on-error: true
+ uses: ./.github/workflows/check.yml
+ secrets: inherit
+ with:
+ java-version: ${{ needs.build-info.outputs.java-version }}
+ needs-ozone-repo: true
+ ratis-args: ${{ inputs.ratis_args }}
+ script: repro
+ script-args: ${{ needs.build-info.outputs.build-args }}
+ post-failure: hadoop-ozone/dev-support/checks/_diffoscope.sh
+ sha: ${{ needs.build-info.outputs.sha }}
+ timeout-minutes: 30
+ with-coverage: ${{ fromJSON(needs.build-info.outputs.with-coverage) }}
+
acceptance:
needs:
- build-info
@@ -497,57 +242,24 @@ jobs:
- basic
- dependency
- license
- runs-on: ubuntu-24.04
- timeout-minutes: 150
if: needs.build-info.outputs.needs-compose-tests == 'true'
+ uses: ./.github/workflows/check.yml
+ secrets: inherit
+ with:
+ java-version: 11 # Hadoop may not work with newer Java
+ needs-ozone-binary-tarball: true
+ ratis-args: ${{ inputs.ratis_args }}
+ script: acceptance
+ script-args: ${{ matrix.suite }}
+ sha: ${{ needs.build-info.outputs.sha }}
+ split: ${{ matrix.suite }}
+ timeout-minutes: 150
+ with-coverage: ${{ fromJSON(needs.build-info.outputs.with-coverage) }}
strategy:
matrix:
suite: ${{ fromJson(needs.build-info.outputs.acceptance-suites) }}
fail-fast: false
- steps:
- - name: Checkout project
- uses: actions/checkout@v4
- with:
- ref: ${{ needs.build-info.outputs.sha }}
- - name: Cache for maven dependencies
- uses: actions/cache/restore@v4
- with:
- path: |
- ~/.m2/repository/*/*/*
- !~/.m2/repository/org/apache/ozone
- key: maven-repo-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- maven-repo-
- - name: Download compiled Ozone binaries
- uses: actions/download-artifact@v4
- with:
- name: ozone-bin
- - name: Untar binaries
- run: |
- mkdir -p hadoop-ozone/dist/target
- tar xzvf ozone*.tar.gz -C hadoop-ozone/dist/target
- rm ozone*.tar.gz
- - name: Setup java 11
- uses: actions/setup-java@v4
- with:
- distribution: 'temurin'
- java-version: 11 # Hadoop may not work with newer Java
- - name: Execute tests
- run: |
- ./hadoop-ozone/dev-support/checks/acceptance.sh
- env:
- KEEP_IMAGE: false
- OZONE_ACCEPTANCE_SUITE: ${{ matrix.suite }}
- - name: Summary of failures
- run: hadoop-ozone/dev-support/checks/_summary.sh target/${{ github.job
}}/summary.txt
- if: ${{ failure() }}
- - name: Archive build results
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: acceptance-${{ matrix.suite }}
- path: target/acceptance
- continue-on-error: true
+
kubernetes:
needs:
- build-info
@@ -555,100 +267,38 @@ jobs:
- basic
- dependency
- license
- runs-on: ubuntu-24.04
- timeout-minutes: 60
if: needs.build-info.outputs.needs-kubernetes-tests == 'true'
- steps:
- - name: Checkout project
- uses: actions/checkout@v4
- with:
- ref: ${{ needs.build-info.outputs.sha }}
- - name: Cache for maven dependencies
- uses: actions/cache/restore@v4
- with:
- path: |
- ~/.m2/repository/*/*/*
- !~/.m2/repository/org/apache/ozone
- key: maven-repo-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- maven-repo-
- - name: Download compiled Ozone binaries
- uses: actions/download-artifact@v4
- with:
- name: ozone-bin
- - name: Untar binaries
- run: |
- mkdir -p hadoop-ozone/dist/target
- tar xzvf ozone*.tar.gz -C hadoop-ozone/dist/target
- - name: Execute tests
- run: |
- ./hadoop-ozone/dev-support/checks/kubernetes.sh
- - name: Summary of failures
- run: hadoop-ozone/dev-support/checks/_summary.sh target/${{ github.job
}}/summary.txt
- if: ${{ failure() }}
- - name: Archive build results
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: kubernetes
- path: target/kubernetes
- continue-on-error: true
+ uses: ./.github/workflows/check.yml
+ secrets: inherit
+ with:
+ needs-ozone-binary-tarball: true
+ ratis-args: ${{ inputs.ratis_args }}
+ script: kubernetes
+ sha: ${{ needs.build-info.outputs.sha }}
+ timeout-minutes: 60
+ with-coverage: ${{ fromJSON(needs.build-info.outputs.with-coverage) }}
+
integration:
needs:
- build-info
- basic
- runs-on: ubuntu-24.04
- timeout-minutes: 150
if: needs.build-info.outputs.needs-integration-tests == 'true'
+ uses: ./.github/workflows/check.yml
+ secrets: inherit
+ with:
+ java-version: ${{ needs.build-info.outputs.java-version }}
+ ratis-args: ${{ inputs.ratis_args }}
+ script: integration
+ script-args: -Ptest-${{ matrix.profile }}
+ sha: ${{ needs.build-info.outputs.sha }}
+ split: ${{ matrix.profile }}
+ timeout-minutes: 150
+ with-coverage: ${{ fromJSON(needs.build-info.outputs.with-coverage) }}
strategy:
matrix:
profile: ${{ fromJson(needs.build-info.outputs.integration-suites) }}
fail-fast: false
- steps:
- - name: Checkout project
- uses: actions/checkout@v4
- with:
- ref: ${{ needs.build-info.outputs.sha }}
- - name: Cache for maven dependencies
- uses: actions/cache/restore@v4
- with:
- path: |
- ~/.m2/repository/*/*/*
- !~/.m2/repository/org/apache/ozone
- key: maven-repo-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- maven-repo-
- - name: Download Ratis repo
- if: ${{ inputs.ratis_args != '' }}
- uses: actions/download-artifact@v4
- with:
- name: ratis-jars
- path: |
- ~/.m2/repository/org/apache/ratis
- - name: Setup java ${{ env.TEST_JAVA_VERSION }}
- uses: actions/setup-java@v4
- with:
- distribution: 'temurin'
- java-version: ${{ env.TEST_JAVA_VERSION }}
- - name: Execute tests
- run: |
- hadoop-ozone/dev-support/checks/integration.sh -Ptest-${{
matrix.profile }} ${{ inputs.ratis_args }}
- env:
- DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- - name: Summary of failures
- run: |
- if [[ -s "target/${{ github.job }}/summary.md" ]]; then
- cat target/${{ github.job }}/summary.md >> $GITHUB_STEP_SUMMARY
- fi
- hadoop-ozone/dev-support/checks/_summary.sh target/${{ github.job
}}/summary.txt
- if: ${{ failure() }}
- - name: Archive build results
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: it-${{ matrix.profile }}
- path: target/integration
- continue-on-error: true
+
coverage:
runs-on: ubuntu-24.04
timeout-minutes: 30
diff --git a/hadoop-ozone/dev-support/checks/acceptance.sh
b/hadoop-ozone/dev-support/checks/acceptance.sh
index 4a46efe6d6..c286c9b0f2 100755
--- a/hadoop-ozone/dev-support/checks/acceptance.sh
+++ b/hadoop-ozone/dev-support/checks/acceptance.sh
@@ -22,7 +22,7 @@ cd "$DIR/../../.." || exit 1
OZONE_ROOT=$(pwd -P)
: ${HADOOP_AWS_DIR:=""}
-: ${OZONE_ACCEPTANCE_SUITE:=""}
+: ${OZONE_ACCEPTANCE_SUITE:="${1:-}"}
: ${OZONE_TEST_SELECTOR:=""}
: ${OZONE_ACCEPTANCE_TEST_TYPE:="robot"}
: ${OZONE_WITH_COVERAGE:="false"}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]