| # 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 |