Skip to content

Add release workflow #61

Add release workflow

Add release workflow #61

Workflow file for this run

name: kop tests
on:
pull_request:
branches:
- master
- branch-*
push:
branches:
- master
- branch-*
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
basic-validation:
name: Style check and basic unit tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
- name: License check
run: mvn -ntp -B license:check
- name: Style check
run: mvn -ntp -B checkstyle:check
- name: Build with Maven skipTests
run: mvn clean install -ntp -B -DskipTests
- name: Building JavaDocs
run: mvn -ntp -B javadoc:jar
- name: Spotbugs check
run: mvn -ntp -B spotbugs:check
- name: kafka-impl test after build
run: mvn test -ntp -B -DfailIfNoTests=false -pl kafka-impl
- name: schema registry test after build
run: mvn test -ntp -B -DfailIfNoTests=false -pl schema-registry
- name: kafka-payload-processor test after build
run: mvn test -ntp -B -DfailIfNoTests=false -pl kafka-payload-processor-shaded-tests
- name: Start and init the oauth server
run: ./ci/init_hydra_oauth_server.sh
timeout-minutes: 5
- name: oauth-client-shaded test after build
run: mvn test -ntp -B -DfailIfNoTests=false -pl oauth-client-shaded-test
- name: Upload to Codecov
uses: codecov/codecov-action@v3
- name: package surefire artifacts
if: failure()
run: |
rm -rf artifacts
mkdir artifacts
find . -type d -name "*surefire*" -exec cp --parents -R {} artifacts/ \;
zip -r artifacts.zip artifacts
- uses: actions/upload-artifact@master
name: upload surefire-artifacts
if: failure()
with:
name: surefire-artifacts
path: artifacts.zip
kop-unit-tests:
name: Unit Test (${{ matrix.test.name }})
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
# other jobs should run even if one test fails
fail-fast: false
matrix:
test: [
{
name: "admin_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.admin.*Test' -pl tests"
]
},
{
name: "compatibility_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.compatibility.*Test' -pl tests",
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.compatibility..*.*Test' -pl tests"
]
},
{
name: "coordinator_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.coordinator.*Test' -pl tests",
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.coordinator..*.*Test' -pl tests"
]
},
{
name: "end_to_end_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.e2e.*Test' -pl tests"
]
},
{
name: "format_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.format.*Test' -pl tests"
]
},
{
name: "metadata_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.metadata.*Test' -pl tests"
]
},
{
name: "metrics_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.metrics.*Test' -pl tests"
]
},
{
name: "producer_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.producer.*Test' -pl tests"
]
},
{
name: "schema_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.schemaregistry.model.impl.*Test' -pl tests"
]
},
{
name: "security_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.security.*Test' -pl tests",
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.security.*.*Test' -pl tests"
]
},
{
name: "storage_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.storage.*Test' -pl tests"
]
},
{
name: "streams_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.streams.*Test' -pl tests"
]
},
{
name: "util_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.util.timer.*Test' -pl tests"
]
},
{
name: "other_test",
scripts: [
"mvn test -ntp -B -DfailIfNoTests=false '-Dtest=io.streamnative.pulsar.handlers.kop.*Test' -pl tests"
]
},
]
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
- uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install jq
run: sudo apt-get install -y jq
- name: Build with Maven skipTests
run: mvn clean install -ntp -B -DskipTests
- name: Start and init the oauth server
run: ./ci/init_hydra_oauth_server.sh
timeout-minutes: 5
- name: ${{ matrix.test.name }}
run: |
echo '${{ matrix.test.scripts }}'
scripts=$(echo '${{ toJson(matrix.test.scripts) }}' | jq -r '.[]')
IFS=$'\n' # change the internal field separator to newline
echo $scripts
for script in $scripts
do
bash -c "${script}"
done
unset IFS # revert the internal field separator back to default
- name: package surefire artifacts
if: failure()
run: |
rm -rf artifacts
mkdir artifacts
find . -type d -name "*surefire*" -exec cp --parents -R {} artifacts/ \;
zip -r "artifacts-${{ matrix.test.name }}.zip" artifacts
- uses: actions/upload-artifact@master
name: upload surefire-artifacts
if: failure()
with:
name: "surefire-artifacts-${{ matrix.test.name }}"
path: "artifacts-${{ matrix.test.name }}.zip"
unit-test-check:
name: Unit Test Check
runs-on: ubuntu-latest
needs: kop-unit-tests # This job will only run if all 'kop-unit-tests' jobs have completed successfully
steps:
- name: Check
run: echo "All tests have passed!"