827 lines
33 KiB
YAML
827 lines
33 KiB
YAML
# 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: CI
|
|
|
|
on:
|
|
pull_request:
|
|
schedule:
|
|
- cron: "0 18 * * *" # TimeZone: UTC 0
|
|
|
|
concurrency:
|
|
group: skywalking-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
SW_AGENT_JDK_VERSION: 8
|
|
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
|
|
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 5 # Cache restore timeout
|
|
|
|
jobs:
|
|
license-header:
|
|
if: (github.event_name == 'schedule' && github.repository == 'apache/skywalking') || (github.event_name != 'schedule')
|
|
name: License header
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: Check license header
|
|
uses: apache/skywalking-eyes@5b7ee1731d036b5aac68f8bd3fc9e6f98ada082e
|
|
|
|
code-style:
|
|
if: (github.event_name == 'schedule' && github.repository == 'apache/skywalking') || (github.event_name != 'schedule')
|
|
name: Code style
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: Check code style
|
|
run: ./mvnw -B -q clean checkstyle:check
|
|
|
|
dependency-license:
|
|
if: |
|
|
( always() && ! cancelled() ) &&
|
|
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.pom == 'true' || needs.changes.outputs.ui == 'true')
|
|
name: Dependency licenses
|
|
needs: [changes]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-java@v3
|
|
with:
|
|
distribution: "temurin"
|
|
java-version: "11"
|
|
cache: "maven"
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: "1.17"
|
|
- name: Check Dependencies Licenses
|
|
run: |
|
|
go install github.com/apache/skywalking-eyes/cmd/license-eye@5b7ee1731d036b5aac68f8bd3fc9e6f98ada082e
|
|
license-eye dependency resolve --summary ./dist-material/release-docs/LICENSE.tpl || exit 1
|
|
if [ ! -z "$(git diff -U0 ./dist-material/release-docs/LICENSE)" ]; then
|
|
echo "LICENSE file is not updated correctly"
|
|
git diff -U0 ./dist-material/release-docs/LICENSE
|
|
exit 1
|
|
fi
|
|
|
|
sanity-check:
|
|
if: ( always() && ! cancelled() ) && (github.event_name == 'schedule' && github.repository == 'apache/skywalking') || (github.event_name != 'schedule')
|
|
name: Sanity check results
|
|
needs: [license-header, code-style, dependency-license]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- name: Check results
|
|
run: |
|
|
[[ ${{ needs.license-header.result }} == 'success' ]] || exit 1;
|
|
[[ ${{ needs.code-style.result }} == 'success' ]] || exit 1;
|
|
[[ ${{ needs.dependency-license.result }} == 'success' ]] || [[ ${{ needs.dependency-license.result }} == 'skipped' ]] || exit 1;
|
|
|
|
changes:
|
|
# Check if anything related to Actual code / CI(functional testing) is changed
|
|
# set outputs for other jobs to access for if conditions
|
|
runs-on: ubuntu-latest
|
|
# To prevent error when there's no base branch
|
|
if: github.event_name != 'schedule'
|
|
timeout-minutes: 10
|
|
outputs:
|
|
oap: ${{ steps.filter-oap.outputs.any_modified }}
|
|
pom: ${{ steps.filter-pom.outputs.any_modified }}
|
|
ui: ${{ steps.filter-ui.outputs.any_modified }}
|
|
steps:
|
|
- uses: actions/checkout@v3 # required for push event
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Filter OAP
|
|
id: filter-oap
|
|
# The GHA version is pinned by infra
|
|
uses: tj-actions/changed-files@v35.9.2
|
|
with:
|
|
files_ignore: |
|
|
**/*.{md,txt}
|
|
skywalking-ui
|
|
.asf.yaml
|
|
.dlc.json
|
|
.gitignore
|
|
.licenserc.yaml
|
|
codeStyle.xml
|
|
HEADER
|
|
LICENSE
|
|
NOTICE
|
|
docs/**
|
|
.github/workflows/codeql.yaml
|
|
.github/ISSUE_TEMPLATE/**
|
|
.github/PULL_REQUEST_TEMPLATE
|
|
dist-material/release-docs/**
|
|
component-libraries.yml
|
|
- name: Filter POM
|
|
id: filter-pom
|
|
uses: tj-actions/changed-files@v35.9.2
|
|
with:
|
|
files: |
|
|
**/pom.xml
|
|
- name: Filter UI
|
|
id: filter-ui
|
|
uses: tj-actions/changed-files@v35.9.2
|
|
with:
|
|
files: |
|
|
skywalking-ui
|
|
- name: List all modified files
|
|
if: steps.filter-oap.outputs.any_modified == 'true' || steps.filter-ui.outputs.any_modified == 'true' || steps.filter-pom.outputs.any_modified == 'true'
|
|
run: |
|
|
echo "Files that have changed or modified:"
|
|
echo "OAP: ${{ steps.filter-oap.outputs.all_changed_and_modified_files }}"
|
|
echo "POM: ${{ steps.filter-pom.outputs.all_changed_and_modified_files }}"
|
|
echo "UI: ${{ steps.filter-ui.outputs.all_changed_and_modified_files }}"
|
|
|
|
dist-tar:
|
|
if: |
|
|
( always() && ! cancelled() ) &&
|
|
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.oap == 'true')
|
|
name: Build dist tar
|
|
needs: [sanity-check, changes]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-java@v3
|
|
with:
|
|
distribution: "temurin"
|
|
java-version: "11"
|
|
cache: "maven"
|
|
- name: Build distribution tar
|
|
run: |
|
|
./mvnw clean install javadoc:javadoc -B -q \
|
|
-Dmaven.test.skip \
|
|
-Dcheckstyle.skip
|
|
- uses: actions/upload-artifact@v3
|
|
name: Upload distribution tar
|
|
with:
|
|
name: dist
|
|
path: dist
|
|
|
|
docker:
|
|
if: |
|
|
( always() && ! cancelled() ) &&
|
|
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.oap == 'true')
|
|
name: Docker images
|
|
needs: [dist-tar, changes]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
java-version: [11, 17]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- uses: actions/download-artifact@v3
|
|
name: Download distribution tar
|
|
with:
|
|
name: dist
|
|
path: dist
|
|
- name: Set up Java
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
distribution: temurin
|
|
java-version: ${{ matrix.java-version }}
|
|
- name: Build and save docker images
|
|
env:
|
|
SW_OAP_BASE_IMAGE: eclipse-temurin:${{ matrix.java-version }}-jre
|
|
run: |
|
|
make docker.all || make docker.all
|
|
docker save -o docker-images-skywalking-oap.tar skywalking/oap:latest
|
|
docker save -o docker-images-skywalking-ui.tar skywalking/ui:latest
|
|
- name: Upload docker images
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: docker-images-${{ matrix.java-version }}
|
|
path: docker-images-skywalking-*.tar
|
|
|
|
unit-test:
|
|
if: |
|
|
( always() && ! cancelled() ) &&
|
|
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.oap == 'true')
|
|
name: Unit test
|
|
needs: [sanity-check, changes]
|
|
runs-on: ${{ matrix.os }}-latest
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu, macos, windows]
|
|
java-version: [11]
|
|
include:
|
|
- os: ubuntu
|
|
java-version: 17
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: Cache maven repository
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.m2/repository
|
|
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-maven-
|
|
- uses: actions/setup-java@v3
|
|
with:
|
|
java-version: ${{ matrix.java-version }}
|
|
distribution: temurin
|
|
- name: Unit test
|
|
run: ./mvnw clean test -q -B -D"checkstyle.skip" || ./mvnw clean test -q -B -D"checkstyle.skip"
|
|
|
|
integration-test:
|
|
if: |
|
|
( always() && ! cancelled() ) &&
|
|
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.oap == 'true')
|
|
name: Integration test
|
|
needs: [sanity-check, changes]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
strategy:
|
|
matrix:
|
|
java-version: [11, 17]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: Cache maven repository
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.m2/repository
|
|
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-maven-
|
|
- uses: actions/setup-java@v3
|
|
with:
|
|
java-version: ${{ matrix.java-version }}
|
|
distribution: temurin
|
|
- name: Integration test
|
|
run: |
|
|
# Exclude slow integration tests and run those tests separately below.
|
|
./mvnw -B clean integration-test -Dcheckstyle.skip -DskipUTs=true -DexcludedGroups=slow || \
|
|
./mvnw -B clean integration-test -Dcheckstyle.skip -DskipUTs=true -DexcludedGroups=slow
|
|
|
|
# Slow tests
|
|
slow-integration-test:
|
|
if: |
|
|
( always() && ! cancelled() ) &&
|
|
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.oap == 'true')
|
|
name: Slow Integration Tests
|
|
needs: [sanity-check, changes]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
strategy:
|
|
matrix:
|
|
test:
|
|
- name: ElasticSearch / OpenSearch
|
|
class: org.apache.skywalking.library.elasticsearch.ElasticSearchIT
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: Cache maven repository
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.m2/repository
|
|
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-maven-
|
|
- uses: actions/setup-java@v3
|
|
with:
|
|
java-version: 11
|
|
distribution: temurin
|
|
- name: ${{ matrix.test.name }}
|
|
run: |
|
|
./mvnw -B clean integration-test -Dcheckstyle.skip -DskipUTs=true -Dit.test=${{ matrix.test.class }} -DfailIfNoTests=false || \
|
|
./mvnw -B clean integration-test -Dcheckstyle.skip -DskipUTs=true -Dit.test=${{ matrix.test.class }} -DfailIfNoTests=false
|
|
|
|
e2e-test:
|
|
if: |
|
|
( always() && ! cancelled() ) &&
|
|
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.oap == 'true')
|
|
name: E2E test
|
|
needs: [docker]
|
|
runs-on: ${{ matrix.test.runs-on || 'ubuntu-latest' }}
|
|
timeout-minutes: 60
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
test:
|
|
- name: Cluster ZK/ES
|
|
config: test/e2e-v2/cases/cluster/zk/es/e2e.yaml
|
|
|
|
- name: Agent NodeJS Backend
|
|
config: test/e2e-v2/cases/nodejs/e2e.yaml
|
|
- name: Agent Golang
|
|
config: test/e2e-v2/cases/go/e2e.yaml
|
|
- name: Agent NodeJS Frontend
|
|
config: test/e2e-v2/cases/browser/e2e.yaml
|
|
- name: Agent NodeJS Frontend ES
|
|
config: test/e2e-v2/cases/browser/es/e2e.yaml
|
|
- name: Agent NodeJS Frontend ES Sharding
|
|
config: test/e2e-v2/cases/browser/es/es-sharding/e2e.yaml
|
|
- name: Agent PHP
|
|
config: test/e2e-v2/cases/php/e2e.yaml
|
|
- name: Agent Python
|
|
config: test/e2e-v2/cases/python/e2e.yaml
|
|
- name: Agent Lua
|
|
config: test/e2e-v2/cases/lua/e2e.yaml
|
|
|
|
- name: BanyanDB
|
|
config: test/e2e-v2/cases/storage/banyandb/e2e.yaml
|
|
- name: Storage H2
|
|
config: test/e2e-v2/cases/storage/h2/e2e.yaml
|
|
- name: Storage MySQL
|
|
config: test/e2e-v2/cases/storage/mysql/e2e.yaml
|
|
- name: Storage PostgreSQL
|
|
config: test/e2e-v2/cases/storage/postgres/e2e.yaml
|
|
- name: Storage ES 7.16.3
|
|
config: test/e2e-v2/cases/storage/es/e2e.yaml
|
|
env: ES_VERSION=7.16.3
|
|
- name: Storage ES 7.17.10
|
|
config: test/e2e-v2/cases/storage/es/e2e.yaml
|
|
env: ES_VERSION=7.17.10
|
|
- name: Storage ES 8.1.0
|
|
config: test/e2e-v2/cases/storage/es/e2e.yaml
|
|
env: ES_VERSION=8.1.0
|
|
- name: Storage ES 8.9.0
|
|
config: test/e2e-v2/cases/storage/es/e2e.yaml
|
|
env: ES_VERSION=8.9.0
|
|
- name: Storage OpenSearch 1.1.0
|
|
config: test/e2e-v2/cases/storage/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.1.0
|
|
- name: Storage OpenSearch 1.3.10
|
|
config: test/e2e-v2/cases/storage/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.3.10
|
|
- name: Storage OpenSearch 2.4.0
|
|
config: test/e2e-v2/cases/storage/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=2.4.0
|
|
- name: Storage OpenSearch 2.8.0
|
|
config: test/e2e-v2/cases/storage/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=2.8.0
|
|
- name: Storage ES Sharding
|
|
config: test/e2e-v2/cases/storage/es/es-sharding/e2e.yaml
|
|
|
|
- name: Alarm H2
|
|
config: test/e2e-v2/cases/alarm/h2/e2e.yaml
|
|
- name: Alarm ES
|
|
config: test/e2e-v2/cases/alarm/es/e2e.yaml
|
|
- name: Alarm ES Sharding
|
|
config: test/e2e-v2/cases/alarm/es/es-sharding/e2e.yaml
|
|
- name: Alarm MySQL
|
|
config: test/e2e-v2/cases/alarm/mysql/e2e.yaml
|
|
- name: Alarm PostgreSQL
|
|
config: test/e2e-v2/cases/alarm/postgres/e2e.yaml
|
|
|
|
- name: TTL ES 7.16.3
|
|
config: test/e2e-v2/cases/ttl/es/e2e.yaml
|
|
env: ES_VERSION=7.16.3
|
|
- name: TTL ES 8.8.1
|
|
config: test/e2e-v2/cases/ttl/es/e2e.yaml
|
|
env: ES_VERSION=8.8.1
|
|
|
|
- name: Event BanyanDB
|
|
config: test/e2e-v2/cases/event/banyandb/e2e.yaml
|
|
- name: Event H2
|
|
config: test/e2e-v2/cases/event/h2/e2e.yaml
|
|
- name: Event ES
|
|
config: test/e2e-v2/cases/event/es/e2e.yaml
|
|
- name: Event MySQL
|
|
config: test/e2e-v2/cases/event/mysql/e2e.yaml
|
|
|
|
- name: Log H2
|
|
config: test/e2e-v2/cases/log/h2/e2e.yaml
|
|
- name: Log MySQL
|
|
config: test/e2e-v2/cases/log/mysql/e2e.yaml
|
|
- name: Log PostgreSQL
|
|
config: test/e2e-v2/cases/log/postgres/e2e.yaml
|
|
- name: Log ES 7.16.3
|
|
config: test/e2e-v2/cases/log/es/e2e.yaml
|
|
env: ES_VERSION=7.16.3
|
|
- name: Log ES 7.17.10
|
|
config: test/e2e-v2/cases/log/es/e2e.yaml
|
|
env: ES_VERSION=7.17.10
|
|
- name: Log ES 8.8.1 Shardng
|
|
config: test/e2e-v2/cases/log/es/es-sharding/e2e.yaml
|
|
env: ES_VERSION=8.8.1
|
|
|
|
- name: Log FluentBit ES 7.16.3
|
|
config: test/e2e-v2/cases/log/fluent-bit/e2e.yaml
|
|
env: ES_VERSION=7.16.3
|
|
- name: Log FluentBit ES 7.17.10
|
|
config: test/e2e-v2/cases/log/fluent-bit/e2e.yaml
|
|
env: ES_VERSION=7.17.10
|
|
- name: Log FluentBit ES 8.8.1
|
|
config: test/e2e-v2/cases/log/fluent-bit/e2e.yaml
|
|
env: ES_VERSION=8.8.1
|
|
|
|
- name: Trace Profiling BanyanDB
|
|
config: test/e2e-v2/cases/profiling/trace/banyandb/e2e.yaml
|
|
- name: Trace Profiling H2
|
|
config: test/e2e-v2/cases/profiling/trace/h2/e2e.yaml
|
|
- name: Trace Profiling ES
|
|
config: test/e2e-v2/cases/profiling/trace/es/e2e.yaml
|
|
- name: Trace Profiling ES Sharding
|
|
config: test/e2e-v2/cases/profiling/trace/es/es-sharding/e2e.yaml
|
|
- name: Trace Profiling MySQL
|
|
config: test/e2e-v2/cases/profiling/trace/mysql/e2e.yaml
|
|
- name: Trace Profiling Postgres
|
|
config: test/e2e-v2/cases/profiling/trace/postgres/e2e.yaml
|
|
- name: Trace Profiling OpenSearch 1.1.0
|
|
config: test/e2e-v2/cases/profiling/trace/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.1.0
|
|
- name: Trace Profiling OpenSearch 1.3.6
|
|
config: test/e2e-v2/cases/profiling/trace/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.3.6
|
|
- name: Trace Profiling OpenSearch 2.4.0
|
|
config: test/e2e-v2/cases/profiling/trace/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=2.4.0
|
|
|
|
- name: eBPF Profiling On CPU BanyanDB
|
|
config: test/e2e-v2/cases/profiling/ebpf/oncpu/banyandb/e2e.yaml
|
|
- name: eBPF Profiling On CPU H2
|
|
config: test/e2e-v2/cases/profiling/ebpf/oncpu/h2/e2e.yaml
|
|
- name: eBPF Profiling On CPU ES
|
|
config: test/e2e-v2/cases/profiling/ebpf/oncpu/es/e2e.yaml
|
|
- name: eBPF Profiling On CPU ES
|
|
config: test/e2e-v2/cases/profiling/ebpf/oncpu/es/es-sharding/e2e.yaml
|
|
- name: eBPF Profiling On CPU MySQL
|
|
config: test/e2e-v2/cases/profiling/ebpf/oncpu/mysql/e2e.yaml
|
|
- name: eBPF Profiling On CPU Postgres
|
|
config: test/e2e-v2/cases/profiling/ebpf/oncpu/postgres/e2e.yaml
|
|
- name: eBPF Profiling On CPU OpenSearch 1.1.0
|
|
config: test/e2e-v2/cases/profiling/ebpf/oncpu/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.1.0
|
|
- name: eBPF Profiling On CPU OpenSearch 1.3.6
|
|
config: test/e2e-v2/cases/profiling/ebpf/oncpu/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.3.6
|
|
- name: eBPF Profiling On CPU OpenSearch 2.4.0
|
|
config: test/e2e-v2/cases/profiling/ebpf/oncpu/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=2.4.0
|
|
- name: eBPF Profiling Off CPU
|
|
config: test/e2e-v2/cases/profiling/ebpf/offcpu/e2e.yaml
|
|
runs-on: ubuntu-20.04
|
|
- name: eBPF Profiling Network BanyanDB
|
|
config: test/e2e-v2/cases/profiling/ebpf/network/banyandb/e2e.yaml
|
|
- name: eBPF Profiling Network H2
|
|
config: test/e2e-v2/cases/profiling/ebpf/network/h2/e2e.yaml
|
|
- name: eBPF Profiling Network ES
|
|
config: test/e2e-v2/cases/profiling/ebpf/network/es/e2e.yaml
|
|
- name: eBPF Profiling Network ES Sharding
|
|
config: test/e2e-v2/cases/profiling/ebpf/network/es/es-sharding/e2e.yaml
|
|
- name: eBPF Profiling Network MySQL
|
|
config: test/e2e-v2/cases/profiling/ebpf/network/mysql/e2e.yaml
|
|
- name: eBPF Profiling Network Postgres
|
|
config: test/e2e-v2/cases/profiling/ebpf/network/postgres/e2e.yaml
|
|
- name: eBPF Profiling Network OpenSearch 1.1.0
|
|
config: test/e2e-v2/cases/profiling/ebpf/network/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.1.0
|
|
- name: eBPF Profiling Network OpenSearch 1.3.6
|
|
config: test/e2e-v2/cases/profiling/ebpf/network/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.3.6
|
|
- name: eBPF Profiling Network OpenSearch 2.4.0
|
|
config: test/e2e-v2/cases/profiling/ebpf/network/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=2.4.0
|
|
|
|
- name: Continuous Profiling BanyanDB
|
|
config: test/e2e-v2/cases/profiling/ebpf/continuous/banyandb/e2e.yaml
|
|
- name: Continuous Profiling H2
|
|
config: test/e2e-v2/cases/profiling/ebpf/continuous/h2/e2e.yaml
|
|
- name: Continuous Profiling ES
|
|
config: test/e2e-v2/cases/profiling/ebpf/continuous/es/e2e.yaml
|
|
- name: Continuous Profiling Sharding ES
|
|
config: test/e2e-v2/cases/profiling/ebpf/continuous/es/es-sharding/e2e.yaml
|
|
- name: Continuous Profiling MySQL
|
|
config: test/e2e-v2/cases/profiling/ebpf/continuous/mysql/e2e.yaml
|
|
- name: Continuous Profiling Postgres
|
|
config: test/e2e-v2/cases/profiling/ebpf/continuous/postgres/e2e.yaml
|
|
- name: Continuous Profiling OpenSearch 1.1.0
|
|
config: test/e2e-v2/cases/profiling/ebpf/continuous/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.1.0
|
|
- name: Continuous Profiling OpenSearch 1.3.6
|
|
config: test/e2e-v2/cases/profiling/ebpf/continuous/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.3.6
|
|
- name: Continuous Profiling OpenSearch 2.4.0
|
|
config: test/e2e-v2/cases/profiling/ebpf/continuous/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=2.4.0
|
|
|
|
- name: Kafka Basic
|
|
config: test/e2e-v2/cases/kafka/simple-so11y/e2e.yaml
|
|
- name: Kafka Profiling
|
|
config: test/e2e-v2/cases/kafka/profile/e2e.yaml
|
|
- name: Kafka Meter
|
|
config: test/e2e-v2/cases/kafka/meter/e2e.yaml
|
|
- name: Kafka Log
|
|
config: test/e2e-v2/cases/kafka/log/e2e.yaml
|
|
|
|
- name: Istio Metrics Service 1.15.0
|
|
config: test/e2e-v2/cases/istio/metrics/e2e.yaml
|
|
env: |
|
|
ISTIO_VERSION=1.15.0
|
|
KUBERNETES_VERSION=25
|
|
- name: Istio Metrics Service 1.16.0
|
|
config: test/e2e-v2/cases/istio/metrics/e2e.yaml
|
|
env: |
|
|
ISTIO_VERSION=1.16.0
|
|
KUBERNETES_VERSION=25
|
|
- name: Istio Metrics Service 1.17.0
|
|
config: test/e2e-v2/cases/istio/metrics/e2e.yaml
|
|
env: |
|
|
ISTIO_VERSION=1.17.0
|
|
KUBERNETES_VERSION=25
|
|
- name: Istio Metrics Service 1.18.0
|
|
config: test/e2e-v2/cases/istio/metrics/e2e.yaml
|
|
env: |
|
|
ISTIO_VERSION=1.18.0
|
|
KUBERNETES_VERSION=25
|
|
|
|
- name: Satellite
|
|
config: test/e2e-v2/cases/satellite/native-protocols/e2e.yaml
|
|
- name: Auth
|
|
config: test/e2e-v2/cases/simple/auth/e2e.yaml
|
|
- name: SSL
|
|
config: test/e2e-v2/cases/simple/ssl/e2e.yaml
|
|
- name: mTLS
|
|
config: test/e2e-v2/cases/simple/mtls/e2e.yaml
|
|
- name: Virtual Gateway
|
|
config: test/e2e-v2/cases/gateway/e2e.yaml
|
|
- name: Meter
|
|
config: test/e2e-v2/cases/meter/e2e.yaml
|
|
- name: VM Zabbix
|
|
config: test/e2e-v2/cases/vm/zabbix/e2e.yaml
|
|
- name: VM Prometheus
|
|
config: test/e2e-v2/cases/vm/prometheus-node-exporter/e2e.yaml
|
|
- name: VM Telegraf
|
|
config: test/e2e-v2/cases/vm/telegraf/e2e.yaml
|
|
- name: So11y
|
|
config: test/e2e-v2/cases/so11y/e2e.yaml
|
|
- name: MySQL Prometheus and slowsql
|
|
config: test/e2e-v2/cases/mysql/mysql-slowsql/e2e.yaml
|
|
- name: PostgreSQL Prometheus
|
|
config: test/e2e-v2/cases/postgresql/postgres-exporter/e2e.yaml
|
|
- name: MariaDB Prometheus and slowsql
|
|
config: test/e2e-v2/cases/mariadb/mariadb-slowsql/e2e.yaml
|
|
|
|
- name: Rover with Istio Process 1.15.0
|
|
config: test/e2e-v2/cases/rover/process/istio/e2e.yaml
|
|
env: ISTIO_VERSION=1.15.0
|
|
runs-on: ubuntu-20.04
|
|
|
|
- name: Zipkin ES
|
|
config: test/e2e-v2/cases/zipkin/es/e2e.yaml
|
|
- name: Zipkin ES Sharding
|
|
config: test/e2e-v2/cases/zipkin/es/es-sharding/e2e.yaml
|
|
- name: Zipkin MySQL
|
|
config: test/e2e-v2/cases/zipkin/mysql/e2e.yaml
|
|
- name: Zipkin Opensearch
|
|
config: test/e2e-v2/cases/zipkin/opensearch/e2e.yaml
|
|
- name: Zipkin H2
|
|
config: test/e2e-v2/cases/zipkin/h2/e2e.yaml
|
|
- name: Zipkin Postgres
|
|
config: test/e2e-v2/cases/zipkin/postgres/e2e.yaml
|
|
- name: Zipkin Kafka
|
|
config: test/e2e-v2/cases/zipkin/kafka/e2e.yaml
|
|
- name: Zipkin BanyanDB
|
|
config: test/e2e-v2/cases/zipkin/banyandb/e2e.yaml
|
|
|
|
- name: APISIX metrics
|
|
config: test/e2e-v2/cases/apisix/otel-collector/e2e.yaml
|
|
- name: Exporter Kafka
|
|
config: test/e2e-v2/cases/exporter/kafka/e2e.yaml
|
|
- name: Virtual MQ
|
|
config: test/e2e-v2/cases/virtual-mq/e2e.yaml
|
|
- name: AWS Cloud EKS
|
|
config: test/e2e-v2/cases/aws/eks/e2e.yaml
|
|
- name: Windows
|
|
config: test/e2e-v2/cases/win/e2e.yaml
|
|
- name: AWS Cloud S3
|
|
config: test/e2e-v2/cases/aws/s3/e2e.yaml
|
|
- name: AWS Cloud DynamoDB
|
|
config: test/e2e-v2/cases/aws/dynamodb/e2e.yaml
|
|
- name: PromQL Service
|
|
config: test/e2e-v2/cases/promql/e2e.yaml
|
|
- name: LogQL Service
|
|
config: test/e2e-v2/cases/logql/e2e.yaml
|
|
- name: AWS API Gateway
|
|
config: test/e2e-v2/cases/aws/api-gateway/e2e.yaml
|
|
- name: Redis Prometheus and Log Collecting
|
|
config: test/e2e-v2/cases/redis/redis-exporter/e2e.yaml
|
|
- name: Elasticsearch
|
|
config: test/e2e-v2/cases/elasticsearch/e2e.yaml
|
|
- name: MongoDB
|
|
config: test/e2e-v2/cases/mongodb/e2e.yaml
|
|
- name: RabbitMQ
|
|
config: test/e2e-v2/cases/rabbitmq/e2e.yaml
|
|
- name: MQE Service
|
|
config: test/e2e-v2/cases/mqe/e2e.yaml
|
|
|
|
- name: UI Menu BanyanDB
|
|
config: test/e2e-v2/cases/menu/banyandb/e2e.yaml
|
|
- name: UI Menu H2
|
|
config: test/e2e-v2/cases/menu/h2/e2e.yaml
|
|
- name: UI Menu ES
|
|
config: test/e2e-v2/cases/menu/es/e2e.yaml
|
|
- name: UI Menu Sharding ES
|
|
config: test/e2e-v2/cases/menu/es/es-sharding/e2e.yaml
|
|
- name: UI Menu MySQL
|
|
config: test/e2e-v2/cases/menu/mysql/e2e.yaml
|
|
- name: UI Menu Postgres
|
|
config: test/e2e-v2/cases/menu/postgres/e2e.yaml
|
|
- name: UI Menu OpenSearch 1.1.0
|
|
config: test/e2e-v2/cases/menu/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.1.0
|
|
- name: UI Menu OpenSearch 1.3.6
|
|
config: test/e2e-v2/cases/menu/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=1.3.6
|
|
- name: UI Menu OpenSearch 2.4.0
|
|
config: test/e2e-v2/cases/menu/opensearch/e2e.yaml
|
|
env: OPENSEARCH_VERSION=2.4.0
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- uses: actions/download-artifact@v3
|
|
name: Download docker images
|
|
with:
|
|
name: docker-images-11
|
|
path: docker-images
|
|
- name: Load docker images
|
|
run: find docker-images -name "*.tar" -exec docker load -i {} \;
|
|
- name: Cache maven repository
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.m2/repository
|
|
key: ${{ runner.os }}-maven-${{ hashFiles('test/e2e-v2/java-test-service/**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-maven-
|
|
- name: Prepare test services
|
|
shell: bash
|
|
run: ./mvnw -B -q -f test/e2e-v2/java-test-service/pom.xml clean package
|
|
- name: Set env var
|
|
run: |
|
|
echo "${{ matrix.test.env }}" >> $GITHUB_ENV
|
|
- name: ${{ matrix.test.name }}
|
|
uses: apache/skywalking-infra-e2e@0a5b398fc9668ccb848b16e6da4f09180955dc3e
|
|
with:
|
|
e2e-file: $GITHUB_WORKSPACE/${{ matrix.test.config }}
|
|
- uses: actions/upload-artifact@v2
|
|
if: ${{ failure() }}
|
|
name: Upload Logs
|
|
with:
|
|
name: logs
|
|
path: "${{ env.SW_INFRA_E2E_LOG_DIR }}"
|
|
|
|
e2e-test-istio:
|
|
if: |
|
|
( always() && ! cancelled() ) &&
|
|
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.oap == 'true')
|
|
name: E2E test
|
|
needs: [docker]
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 60
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
analyzer: [k8s-mesh, mx-mesh]
|
|
versions:
|
|
- istio: 1.15.0
|
|
kubernetes: 25
|
|
- istio: 1.16.0
|
|
kubernetes: 25
|
|
- istio: 1.17.0
|
|
kubernetes: 25
|
|
- istio: 1.18.0
|
|
kubernetes: 25
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- uses: actions/download-artifact@v3
|
|
name: Download docker images
|
|
with:
|
|
name: docker-images-11
|
|
path: docker-images
|
|
- name: Load docker images
|
|
run: find docker-images -name "*.tar" -exec docker load -i {} \;
|
|
- name: ${{ matrix.test.name }}
|
|
uses: apache/skywalking-infra-e2e@0a5b398fc9668ccb848b16e6da4f09180955dc3e
|
|
env:
|
|
ISTIO_VERSION: ${{ matrix.versions.istio }}
|
|
KUBERNETES_VERSION: ${{ matrix.versions.kubernetes }}
|
|
ALS_ANALYZER: ${{ matrix.analyzer }}
|
|
with:
|
|
e2e-file: $GITHUB_WORKSPACE/test/e2e-v2/cases/istio/als/e2e.yaml
|
|
- uses: actions/upload-artifact@v2
|
|
if: ${{ failure() }}
|
|
name: Upload Logs
|
|
with:
|
|
name: logs
|
|
path: "${{ env.SW_INFRA_E2E_LOG_DIR }}"
|
|
|
|
e2e-test-java-versions:
|
|
if: |
|
|
( always() && ! cancelled() ) &&
|
|
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.oap == 'true')
|
|
name: E2E test
|
|
needs: [docker]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
java-version: [11, 17]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- uses: actions/download-artifact@v3
|
|
name: Download docker images
|
|
with:
|
|
name: docker-images-${{ matrix.java-version }}
|
|
path: docker-images
|
|
- name: Load docker images
|
|
run: find docker-images -name "*.tar" -exec docker load -i {} \;
|
|
- uses: actions/setup-java@v3
|
|
with:
|
|
java-version: ${{ matrix.java-version }}
|
|
distribution: temurin
|
|
- name: Cache maven repository
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.m2/repository
|
|
key: ${{ runner.os }}-maven-${{ hashFiles('test/e2e-v2/java-test-service/**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-maven-
|
|
- name: Prepare test services
|
|
shell: bash
|
|
run: ./mvnw -B -q -f test/e2e-v2/java-test-service/pom.xml clean package
|
|
- name: Java version ${{ matrix.java-version }}
|
|
uses: apache/skywalking-infra-e2e@0a5b398fc9668ccb848b16e6da4f09180955dc3e
|
|
env:
|
|
SW_AGENT_JDK_VERSION: ${{ matrix.java-version }}
|
|
with:
|
|
e2e-file: $GITHUB_WORKSPACE/test/e2e-v2/cases/simple/jdk/e2e.yaml
|
|
|
|
required:
|
|
if: always()
|
|
name: Required
|
|
needs:
|
|
- dependency-license
|
|
- unit-test
|
|
- integration-test
|
|
- slow-integration-test
|
|
- e2e-test
|
|
- e2e-test-istio
|
|
- e2e-test-java-versions
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- name: Merge Requirement
|
|
# check changes, sanity, dependency license, unit, integration, e2e, e2e-istio and e2e-java-versions,
|
|
# if all of them are working as expected then naturally exits else return error code
|
|
run: |
|
|
execute=${{ needs.changes.outputs.oap }}
|
|
|
|
sanityResults=${{ needs.dependency-license.result }}
|
|
[[ ${sanityResults} == 'success' ]] || [[ ${execute} != 'true' && ${sanityResults} == 'skipped' ]] || exit -1;
|
|
|
|
depLicenseResults=${{ needs.dependency-license.result }}
|
|
unitResults=${{ needs.unit-test.result }};
|
|
integrationResults=${{ needs.integration-test.result }};
|
|
timeConsumingITResults=${{ needs.slow-integration-test.result }};
|
|
e2eResults=${{ needs.e2e-test.result }};
|
|
e2eIstioResults=${{ needs.e2e-test-istio.result }};
|
|
e2eJavaVersionResults=${{ needs.e2e-test-java-versions.result }};
|
|
|
|
[[ ${depLicenseResults} == 'success' ]] || [[ ${execute} != 'true' && ${depLicenseResults} == 'skipped' ]] || exit -2;
|
|
[[ ${unitResults} == 'success' ]] || [[ ${execute} != 'true' && ${unitResults} == 'skipped' ]] || exit -3;
|
|
[[ ${integrationResults} == 'success' ]] || [[ ${execute} != 'true' && ${integrationResults} == 'skipped' ]] || exit -4;
|
|
[[ ${e2eResults} == 'success' ]] || [[ ${execute} != 'true' && ${e2eResults} == 'skipped' ]] || exit -5;
|
|
[[ ${e2eIstioResults} == 'success' ]] || [[ ${execute} != 'true' && ${e2eIstioResults} == 'skipped' ]] || exit -6;
|
|
[[ ${e2eJavaVersionResults} == 'success' ]] || [[ ${execute} != 'true' && ${e2eJavaVersionResults} == 'skipped' ]] || exit -7;
|
|
[[ ${timeConsumingITResults} == 'success' ]] || [[ ${execute} != 'true' && ${timeConsumingITResults} == 'skipped' ]] || exit -8;
|
|
|
|
exit 0;
|