Skip to content

Implement nats avro serdes #10740

Implement nats avro serdes

Implement nats avro serdes #10740

name: Integration Tests Workflow
on:
push:
paths-ignore:
- '.gitignore'
- 'LICENSE'
- 'README*'
- 'docs/**'
- '.github/workflows/**'
branches: [ main ]
pull_request:
paths-ignore:
- '.gitignore'
- 'LICENSE'
- 'README*'
- 'docs/**'
branches: [ main ]
concurrency:
# Only run once for latest commit per ref and cancel other (previous) runs.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
prepare-integration-tests:
name: Prepare for Integration Tests
runs-on: ubuntu-20.04
if: github.repository_owner == 'Apicurio' && !contains(github.event.*.labels.*.name, 'DO NOT MERGE')
steps:
- name: Show Actor
run: echo ${{github.actor}}
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
# Open-Source Machine emulator that allows you to emulate multiple CPU architectures on your machine
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
# Docker CLI plugin for extended build capabilities with BuildKit
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
- name: Inspect builder
run: |
echo "Name: ${{ steps.buildx.outputs.name }}"
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
echo "Status: ${{ steps.buildx.outputs.status }}"
echo "Flags: ${{ steps.buildx.outputs.flags }}"
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
- name: Get maven wrapper
run: mvn -N io.takari:maven:wrapper -Dmaven=3.8.2
- name: Build Application
run: ./mvnw clean package -pl app,distro/docker -am --no-transfer-progress -Pprod -DskipTests=true -Dmaven.javadoc.skip=true -Dmaven.wagon.httpconnectionManager.maxTotal=30 -Dmaven.wagon.http.retryHandler.count=5
- name: Build and Push Application image
run: |
docker buildx build --push -f ./distro/docker/target/docker/Dockerfile.jvm -t ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d --platform linux/amd64,linux/arm64,linux/s390x,linux/ppc64le ./distro/docker/target/docker
prepare-ui-tests:
name: Prepare for UI Integration Tests
runs-on: ubuntu-20.04
if: github.repository_owner == 'Apicurio' && !contains(github.event.*.labels.*.name, 'DO NOT MERGE')
steps:
- name: Show Actor
run: echo ${{github.actor}}
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up Node
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
cache-dependency-path: 'ui/**/package-lock.json'
- name: Build and verify the typescript-sdk
working-directory: typescript-sdk
run: |
npm install
npm run generate-registry-sdk
npm run lint
npm run build
- name: Install UI Dependencies
run: |
cd ui
npm install
- name: Lint UI Code
run: |
cd ui
npm run lint
- name: Build and Package UI
run: |
cd ui
npm run build
npm run package
- name: Build and Push UI image
env:
IMAGE_REPO: ttl.sh/${{ github.sha }}
# maximum allowed
IMAGE_TAG: 1d
run: |
cd ui
docker build -t $IMAGE_REPO/apicurio/apicurio-registry-ui:$IMAGE_TAG .
docker push $IMAGE_REPO/apicurio/apicurio-registry-ui:$IMAGE_TAG
integration-tests-h2:
name: Integration Tests H2
runs-on: ubuntu-20.04
needs: prepare-integration-tests
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: Setup Minikube
uses: manusa/[email protected]
with:
minikube version: 'v1.31.1'
kubernetes version: 'v1.26.3'
github token: ${{ secrets.GITHUB_TOKEN }}
driver: docker
- name: Prepare minikube tunnel
run: minikube tunnel &> /dev/null &
- name: Run Integration Tests - H2
run: ./mvnw verify -am --no-transfer-progress -Pintegration-tests -Pci -Dregistry-in-memory-image=ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d -Premote-mem -pl integration-tests -Dmaven.javadoc.skip=true
- name: Run Integration Tests - auth - H2
run: ./mvnw verify -am --no-transfer-progress -Pintegration-tests -Pauth -Dregistry-in-memory-image=ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d -Premote-mem -pl integration-tests -Dmaven.javadoc.skip=true
- name: Run Integration Tests - migration - H2
run: ./mvnw verify -am --no-transfer-progress -Pintegration-tests -Pmigration -Dregistry-in-memory-image=ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d -Premote-mem -pl integration-tests -Dmaven.javadoc.skip=true
- name: Collect logs
if: failure()
run: sh ./.github/scripts/collect_logs.sh
- name: Upload tests logs artifacts
if: failure()
uses: actions/[email protected]
with:
name: tests-logs-h2
path: artifacts
integration-tests-postgresql:
name: Integration Tests Postgresql
runs-on: ubuntu-20.04
needs: prepare-integration-tests
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: Setup Minikube
uses: manusa/[email protected]
with:
minikube version: 'v1.31.1'
kubernetes version: 'v1.26.3'
github token: ${{ secrets.GITHUB_TOKEN }}
driver: docker
- name: Prepare minikube tunnel
run: minikube tunnel &> /dev/null &
- name: Run Integration Tests - Postgresql
run: ./mvnw verify -am --no-transfer-progress -Pintegration-tests -Pci -Dregistry-sql-image=ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d -Premote-sql -pl integration-tests -Dmaven.javadoc.skip=true
- name: Run Integration Tests - auth - Postgresql
run: ./mvnw verify -am --no-transfer-progress -Pintegration-tests -Pauth -Dregistry-sql-image=ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d -Premote-sql -pl integration-tests -Dmaven.javadoc.skip=true
- name: Run Integration Tests - migration - Postgresql
run: ./mvnw verify -am --no-transfer-progress -Pintegration-tests -Pmigration -Dregistry-sql-image=ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d -Premote-sql -pl integration-tests -Dmaven.javadoc.skip=true
- name: Collect logs
if: failure()
run: sh ./.github/scripts/collect_logs.sh
- name: Upload tests logs artifacts
if: failure()
uses: actions/[email protected]
with:
name: tests-logs-postgresql
path: artifacts
integration-tests-kafkasql:
name: Integration Tests KafkaSql
runs-on: ubuntu-20.04
needs: prepare-integration-tests
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: Setup Minikube
uses: manusa/[email protected]
with:
minikube version: 'v1.31.1'
kubernetes version: 'v1.26.3'
github token: ${{ secrets.GITHUB_TOKEN }}
driver: docker
- name: Prepare minikube tunnel
run: minikube tunnel &> /dev/null &
- name: Run Integration Tests - Kafkasql
run: ./mvnw verify -am --no-transfer-progress -Pintegration-tests -Pci -Dregistry-kafkasql-image=ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d -Premote-kafka -pl integration-tests -Dmaven.javadoc.skip=true
- name: Run Integration Tests - auth - Kafkasql
run: ./mvnw verify -am --no-transfer-progress -Pintegration-tests -Pauth -Dregistry-kafkasql-image=ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d -Premote-kafka -pl integration-tests -Dmaven.javadoc.skip=true
- name: Run Integration Tests - migration - Kafkasql
run: ./mvnw verify -am --no-transfer-progress -Pintegration-tests -Pmigration -Dregistry-kafkasql-image=ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d -Premote-kafka -pl integration-tests -Dmaven.javadoc.skip=true
- name: Run Integration Tests - snapshotting - Kafkasql
run: ./mvnw verify -am --no-transfer-progress -Pintegration-tests -Pkafkasql-snapshotting -Dregistry-kafkasql-image=ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d -Premote-kafka -pl integration-tests -Dmaven.javadoc.skip=true
- name: Collect logs
if: failure()
run: sh ./.github/scripts/collect_logs.sh
- name: Upload tests logs artifacts
if: failure()
uses: actions/[email protected]
with:
name: tests-logs-kafkasql
path: artifacts
integration-tests-ui:
name: Integration Tests UI
runs-on: ubuntu-20.04
needs: [prepare-ui-tests, prepare-integration-tests]
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up Node
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
cache-dependency-path: 'ui/tests/package-lock.json'
- name: Run UI tests
run: |
echo "Starting Registry App (In Memory)"
docker run -it -p 8080:8080 -e apicurio.rest.deletion.artifact.enabled=true -d ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d
echo "Starting Registry UI"
docker run -it -p 8888:8080 -d ttl.sh/${{ github.sha }}/apicurio/apicurio-registry-ui:1d
cd ui/tests
npm install
npx playwright install --with-deps
echo "App System Info:"
echo "--"
curl -s http://localhost:8080/apis/registry/v3/system/info
echo "--"
echo ""
echo "UI Config Info (Local):"
echo "--"
curl -s http://localhost:8888/config.js
echo "--"
echo ""
echo "UI Config Info (Remote):"
echo "--"
curl -s http://localhost:8080/apis/registry/v3/system/uiConfig
echo "--"
echo ""
echo "UI Version Info:"
curl -s http://localhost:8888/version.js
echo "--"
echo "UI index.html:"
echo "--"
curl -s http://localhost:8888
echo "--"
echo ""
echo "-------------------------"
echo "Running Playwright tests!"
echo "-------------------------"
npm run test
- name: Upload Test Report
uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: ui/tests/playwright-report/
retention-days: 30
- name: Collect logs
if: failure()
run: sh ./.github/scripts/collect_logs.sh
- name: Upload tests logs artifacts
if: failure()
uses: actions/upload-artifact@v3
with:
name: tests-logs-ui
path: artifacts
integration-tests-legacy-v2:
name: Integration Tests Legacy V2
runs-on: ubuntu-20.04
needs: prepare-integration-tests
steps:
- name: Checkout Registry 2.5
uses: actions/checkout@v4
with:
ref: '2.5.x'
path: registry-v2
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: Run Legacy Integration Tests (Core API v2)
run: |
echo "Starting Registry App (In Memory)"
docker run -it -p 8181:8080 -e apicurio.rest.deletion.artifact.enabled=true -d ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d
cd registry-v2
./mvnw -Pintegration-tests clean install -DskipTests=true -DskipUiBuild=true -Dmaven.javadoc.skip=true
cd integration-tests
../mvnw verify -Pregression -Dmaven.javadoc.skip=true -Dquarkus.http.test-host=localhost -Dquarkus.http.test-port=8181
- name: Collect logs
if: failure()
run: sh ./.github/scripts/collect_logs.sh
- name: Upload tests logs artifacts
if: failure()
uses: actions/[email protected]
with:
name: tests-logs-legacy-v2
path: artifacts
build-examples:
name: Build and Run Application examples
runs-on: ubuntu-20.04
needs: prepare-integration-tests
steps:
- name: Checkout Code with Ref '${{ github.ref }}'
uses: actions/checkout@v2
with:
path: apicurio-registry
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: Run Apicurio Registry application
run: docker run -d -p 8080:8080 -it ttl.sh/${{ github.sha }}/apicurio/apicurio-registry:1d
- name: Build Apicurio Registry with Examples
run: cd apicurio-registry && mvn clean install -DskipTests -Pexamples