blob: 54515330f1b1d141c2eba8f006df1944a4bb7e04 [file] [log] [blame]
# 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:
jobs:
build:
name: Build and Test
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Set up Go 1.18
uses: actions/setup-go@v2
with:
go-version: 1.18
- name: Check out code into the Go module directory
uses: actions/checkout@v2
with:
submodules: true
- name: Check License
uses: apache/skywalking-eyes@9bd5feb86b5817aa6072b008f9866a2c3bbc8587
- name: Get dependencies
run: make deps
- name: Test
run: make container-test
- name: BTF Generate
run: make container-btfgen
- name: Lint
run: make container-lint
- name: Make binary
run: make linux
- name: Check CI Consistency
run: make check
docker:
name: Docker images
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Build and save docker images
run: |
make docker
docker save -o docker-images-skywalking-rover.tar apache/skywalking-rover:latest
- name: Upload docker images
uses: actions/upload-artifact@v2
with:
name: docker-images-skywalking-rover
path: docker-images-skywalking-rover.tar
e2e-test:
name: E2E test
needs: [ docker ]
runs-on: ubuntu-22.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
test:
- name: Golang On CPU Profiling
config: test/e2e/cases/profiling/task/oncpu/golang/e2e.yaml
- name: C++ On CPU Profiling
config: test/e2e/cases/profiling/task/oncpu/c++/e2e.yaml
- name: C On CPU Profiling
config: test/e2e/cases/profiling/task/oncpu/c/e2e.yaml
- name: Rust On CPU Profiling
config: test/e2e/cases/profiling/task/oncpu/rust/e2e.yaml
- name: Golang Off CPU Profiling
config: test/e2e/cases/profiling/task/offcpu/golang/e2e.yaml
- name: C++ Off CPU Profiling
config: test/e2e/cases/profiling/task/offcpu/c++/e2e.yaml
- name: C Off CPU Profiling
config: test/e2e/cases/profiling/task/offcpu/c/e2e.yaml
- name: Rust Off CPU Profiling
config: test/e2e/cases/profiling/task/offcpu/rust/e2e.yaml
- name: go2sky Agent Sensor
config: test/e2e/cases/process/agent_sensor/golang/e2e.yaml
- name: Istio Process Finder 1.8.2
config: test/e2e/cases/process/istio/e2e.yaml
env: ISTIO_VERSION=1.8.2
- name: Istio Process Finder 1.9.1
config: test/e2e/cases/process/istio/e2e.yaml
env: ISTIO_VERSION=1.9.1
- name: Istio Process Finder 1.10.3
config: test/e2e/cases/process/istio/e2e.yaml
env: ISTIO_VERSION=1.10.3
- name: Istio Process Finder 1.11.4
config: test/e2e/cases/process/istio/e2e.yaml
env: ISTIO_VERSION=1.11.4
- name: Istio Process Finder 1.12.0
config: test/e2e/cases/process/istio/e2e.yaml
env: ISTIO_VERSION=1.12.0
- name: Istio Process Finder 1.13.1
config: test/e2e/cases/process/istio/e2e.yaml
env: ISTIO_VERSION=1.13.1
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: actions/download-artifact@v2
name: Download docker images
with:
name: docker-images-skywalking-rover
path: docker-images
- name: Load docker images
run: find docker-images -name "*.tar" -exec docker load -i {} \;
- name: Set env var
run: echo "${{ matrix.test.env }}" >> $GITHUB_ENV
- name: ${{ matrix.test.name }}
uses: apache/skywalking-infra-e2e@c3eb3241f649289465eda12af8214ca60aaaaa5f
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 }}"
network-profiling-https-e2e-test:
name: Network Profiling HTTPS E2E test
needs: [ docker ]
runs-on: ubuntu-22.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
test:
- name: Golang Profiling
config: test/e2e/cases/profiling/task/network/golang/e2e.yaml
- name: Python Profiling
config: test/e2e/cases/profiling/task/network/golang/e2e.yaml
- name: Envoy Profiling
config: test/e2e/cases/profiling/task/network/envoy/e2e.yaml
env: ISTIO_VERSION=1.13.1
- name: C++ Profiling
config: test/e2e/cases/profiling/task/network/c_plus_plus/e2e.yaml
- name: Nodejs Profiling
config: test/e2e/cases/profiling/task/network/nodejs/e2e.yaml
- name: HTTP2 Profiling
config: test/e2e/cases/profiling/task/network/http2/e2e.yaml
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: actions/download-artifact@v2
name: Download docker images
with:
name: docker-images-skywalking-rover
path: docker-images
- name: Load docker images
run: find docker-images -name "*.tar" -exec docker load -i {} \;
- name: Set env var
run: echo "${{ matrix.test.env }}" >> $GITHUB_ENV
- name: Setup SSL Certs
run: |
bash test/e2e/base/scripts/gen-selfsigned-ssl.sh service $(pwd)/test/e2e/cases/profiling/task/network/base/ssl/
bash test/e2e/base/scripts/gen-selfsigned-ssl.sh proxy $(pwd)/test/e2e/cases/profiling/task/network/base/ssl/
- name: ${{ matrix.test.name }}
uses: apache/skywalking-infra-e2e@c3eb3241f649289465eda12af8214ca60aaaaa5f
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 }}"
continuous-profiling-e2e-tests:
name: Continuous Profiling E2E tests
needs: [ docker ]
runs-on: ubuntu-22.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
test:
- name: HTTP Avg Response Time
config: test/e2e/cases/profiling/continuous/http_avg_response_time/e2e.yaml
- name: HTTP Error Rate
config: test/e2e/cases/profiling/continuous/http_error_rate/e2e.yaml
- name: Process CPU
config: test/e2e/cases/profiling/continuous/process_cpu/e2e.yaml
- name: Process Thread Count
config: test/e2e/cases/profiling/continuous/process_thread_count/e2e.yaml
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: actions/download-artifact@v2
name: Download docker images
with:
name: docker-images-skywalking-rover
path: docker-images
- name: Load docker images
run: find docker-images -name "*.tar" -exec docker load -i {} \;
- name: Set env var
run: echo "${{ matrix.test.env }}" >> $GITHUB_ENV
- name: Setup SSL Certs
run: |
mkdir -p $(pwd)/test/e2e/cases/profiling/continuous/ssl/
bash test/e2e/base/scripts/gen-selfsigned-ssl.sh service $(pwd)/test/e2e/cases/profiling/continuous/ssl/
- name: ${{ matrix.test.name }}
uses: apache/skywalking-infra-e2e@c3eb3241f649289465eda12af8214ca60aaaaa5f
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 }}"
required:
if: always()
name: Required
needs:
- build
- e2e-test
- network-profiling-https-e2e-test
- continuous-profiling-e2e-tests
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Merge Requirement
run: |
if [[ ${{ needs.build.result }} != 'success' ]]; then
exit -1
fi
if [[ ${{ needs.e2e-test.result }} != 'success' ]]; then
exit -1
fi
if [[ ${{ needs.network-profiling-https-e2e-test.result }} != 'success' ]]; then
exit -1
fi
if [[ ${{ needs.continuous-profiling-e2e-tests.result }} != 'success' ]]; then
exit -1
fi