CI #218
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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.outputs.oap }} | |
pom: ${{ steps.filter.outputs.pom }} | |
ui: ${{ steps.filter.outputs.ui }} | |
steps: | |
- uses: actions/checkout@v3 # required for push event | |
- name: Check for file changes | |
uses: getsentry/paths-filter@v2 | |
id: filter | |
with: | |
token: ${{ github.token }} | |
# The following is a single composite pattern that allows next CI steps, | |
# the pattern is in form of [not (foo or bar)] to be safe. | |
# When new files come in, the CI will NOT ignore them unless listed, | |
# so remember to extend here if they do not serve functional purposes. | |
# NOTE: careful with using ** in expression, keep !**/{old, new things}. | |
filters: | | |
oap: | |
- "!**/{\ | |
*.md,*.txt,\ | |
skywalking-ui,\ | |
.asf.yaml,.dlc.json,.gitignore,.licenserc.yaml,\ | |
codeStyle.xml,\ | |
HEADER,LICENSE,NOTICE,\ | |
docs/**,\ | |
.github/workflows/codeql.yaml,\ | |
.github/(ISSUE_TEMPLATE/**|PULL_REQUEST_TEMPLATE),\ | |
dist-material/release-docs/**,\ | |
component-libraries.yml\ | |
}" | |
pom: | |
- "**/pom.xml" | |
ui: | |
- "skywalking-ui" | |
list-files: json # logs matched 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 6.3.2 | |
config: test/e2e-v2/cases/storage/es/e2e.yaml | |
env: ES_VERSION=6.3.2 | |
- name: Storage ES 7.0.0 | |
config: test/e2e-v2/cases/storage/es/e2e.yaml | |
env: ES_VERSION=7.0.0 | |
- name: Storage ES 7.8.0 | |
config: test/e2e-v2/cases/storage/es/e2e.yaml | |
env: ES_VERSION=7.8.0 | |
- name: Storage ES 7.10.1 | |
config: test/e2e-v2/cases/storage/es/e2e.yaml | |
env: ES_VERSION=7.10.1 | |
- name: Storage ES 7.14.0 | |
config: test/e2e-v2/cases/storage/es/e2e.yaml | |
env: ES_VERSION=7.14.0 | |
- name: Storage ES 7.15.0 | |
config: test/e2e-v2/cases/storage/es/e2e.yaml | |
env: ES_VERSION=7.15.0 | |
- name: Storage ES 8.0.0 | |
config: test/e2e-v2/cases/storage/es/e2e.yaml | |
env: ES_VERSION=8.0.0 | |
- name: Storage ES 8.1.0 | |
config: test/e2e-v2/cases/storage/es/e2e.yaml | |
env: ES_VERSION=8.1.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.6 | |
config: test/e2e-v2/cases/storage/opensearch/e2e.yaml | |
env: OPENSEARCH_VERSION=1.3.6 | |
- name: Storage OpenSearch 2.4.0 | |
config: test/e2e-v2/cases/storage/opensearch/e2e.yaml | |
env: OPENSEARCH_VERSION=2.4.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 6.3.2 | |
config: test/e2e-v2/cases/ttl/es/e2e.yaml | |
env: ES_VERSION=6.3.2 | |
- name: TTL ES 7.15.0 | |
config: test/e2e-v2/cases/ttl/es/e2e.yaml | |
env: ES_VERSION=7.15.0 | |
- name: TTL ES 8.0.0 | |
config: test/e2e-v2/cases/ttl/es/e2e.yaml | |
env: ES_VERSION=8.0.0 | |
- 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 6.3.2 | |
config: test/e2e-v2/cases/log/es/e2e.yaml | |
env: ES_VERSION=6.3.2 | |
- name: Log ES 7.0.0 | |
config: test/e2e-v2/cases/log/es/e2e.yaml | |
env: ES_VERSION=7.0.0 | |
- name: Log ES 7.8.0 | |
config: test/e2e-v2/cases/log/es/e2e.yaml | |
env: ES_VERSION=7.8.0 | |
- name: Log ES 7.10.1 | |
config: test/e2e-v2/cases/log/es/e2e.yaml | |
env: ES_VERSION=7.10.1 | |
- name: Log ES 7.14.0 | |
config: test/e2e-v2/cases/log/es/e2e.yaml | |
env: ES_VERSION=7.14.0 | |
- name: Log ES 7.15.0 | |
config: test/e2e-v2/cases/log/es/e2e.yaml | |
env: ES_VERSION=7.15.0 | |
- name: Log ES 8.0.0 | |
config: test/e2e-v2/cases/log/es/e2e.yaml | |
env: ES_VERSION=8.0.0 | |
- name: Log ES 8.0.0 Shardng | |
config: test/e2e-v2/cases/log/es/es-sharding/e2e.yaml | |
env: ES_VERSION=8.0.0 | |
- name: Log FluentBit ES 6.3.2 | |
config: test/e2e-v2/cases/log/fluent-bit/e2e.yaml | |
env: ES_VERSION=6.3.2 | |
- name: Log FluentBit ES 7.0.0 | |
config: test/e2e-v2/cases/log/fluent-bit/e2e.yaml | |
env: ES_VERSION=7.0.0 | |
- name: Log FluentBit ES 7.8.0 | |
config: test/e2e-v2/cases/log/fluent-bit/e2e.yaml | |
env: ES_VERSION=7.8.0 | |
- name: Log FluentBit ES 7.10.1 | |
config: test/e2e-v2/cases/log/fluent-bit/e2e.yaml | |
env: ES_VERSION=7.10.1 | |
- name: Log FluentBit ES 7.14.0 | |
config: test/e2e-v2/cases/log/fluent-bit/e2e.yaml | |
env: ES_VERSION=7.14.0 | |
- name: Log FluentBit ES 7.15.0 | |
config: test/e2e-v2/cases/log/fluent-bit/e2e.yaml | |
env: ES_VERSION=7.15.0 | |
- 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.8.2 | |
config: test/e2e-v2/cases/istio/metrics/e2e.yaml | |
env: | | |
ISTIO_VERSION=1.8.2 | |
KUBERNETES_VERSION=19 | |
- name: Istio Metrics Service 1.9.1 | |
config: test/e2e-v2/cases/istio/metrics/e2e.yaml | |
env: | | |
ISTIO_VERSION=1.9.1 | |
KUBERNETES_VERSION=20 | |
- name: Istio Metrics Service 1.10.3 | |
config: test/e2e-v2/cases/istio/metrics/e2e.yaml | |
env: | | |
ISTIO_VERSION=1.10.3 | |
KUBERNETES_VERSION=20 | |
- name: Istio Metrics Service 1.11.4 | |
config: test/e2e-v2/cases/istio/metrics/e2e.yaml | |
env: | | |
ISTIO_VERSION=1.11.4 | |
KUBERNETES_VERSION=20 | |
- name: Istio Metrics Service 1.12.0 | |
config: test/e2e-v2/cases/istio/metrics/e2e.yaml | |
env: | | |
ISTIO_VERSION=1.12.0 | |
KUBERNETES_VERSION=20 | |
- name: Istio Metrics Service 1.13.1 | |
config: test/e2e-v2/cases/istio/metrics/e2e.yaml | |
env: | | |
ISTIO_VERSION=1.13.1 | |
KUBERNETES_VERSION=20 | |
- name: Istio Metrics Service 1.14.4 | |
config: test/e2e-v2/cases/istio/metrics/e2e.yaml | |
env: | | |
ISTIO_VERSION=1.14.4 | |
KUBERNETES_VERSION=20 | |
- name: Istio Metrics Service 1.15.0 | |
config: test/e2e-v2/cases/istio/metrics/e2e.yaml | |
env: | | |
ISTIO_VERSION=1.15.0 | |
KUBERNETES_VERSION=20 | |
- name: Istio Metrics Service 1.16.0 | |
config: test/e2e-v2/cases/istio/metrics/e2e.yaml | |
env: | | |
ISTIO_VERSION=1.16.0 | |
KUBERNETES_VERSION=20 | |
- name: Istio Metrics Service 1.17.0 | |
config: test/e2e-v2/cases/istio/metrics/e2e.yaml | |
env: | | |
ISTIO_VERSION=1.17.0 | |
KUBERNETES_VERSION=20 | |
- 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.13.1 | |
config: test/e2e-v2/cases/rover/process/istio/e2e.yaml | |
env: ISTIO_VERSION=1.13.1 | |
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 | |
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@2b3aa53dbba73909730b211d5b8065abc74b56ad | |
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.7.1 | |
kubernetes: 18 | |
- istio: 1.8.2 | |
kubernetes: 19 | |
- istio: 1.9.1 | |
kubernetes: 19 | |
- istio: 1.10.3 | |
kubernetes: 19 | |
- istio: 1.11.4 | |
kubernetes: 19 | |
- istio: 1.12.0 | |
kubernetes: 19 | |
- istio: 1.13.1 | |
kubernetes: 20 | |
- istio: 1.14.4 | |
kubernetes: 20 | |
- istio: 1.15.0 | |
kubernetes: 20 | |
- istio: 1.16.0 | |
kubernetes: 20 | |
- istio: 1.17.0 | |
kubernetes: 20 | |
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@2b3aa53dbba73909730b211d5b8065abc74b56ad | |
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 | |
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@2b3aa53dbba73909730b211d5b8065abc74b56ad | |
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; |