name: Benchmarks Test # Currently this workflow is only used for running benchmarks test on schedule on branch 1.0.0-preview on: pull_request_target: types: labeled schedule: # Schedule to run on Wed,Sat at 10PM UTC (6AM CST) - cron: '0 22 * * 3,6' jobs: Sysbench_Test: timeout-minutes: 40 if: github.event_name == 'schedule' || contains(github.event.pull_request.labels.*.name, 'SGX-hardware-test-required') || contains(github.event.pull_request.labels.*.name, 'Pre-release-test') runs-on: ${{ matrix.self_runner }} strategy: matrix: self_runner: [[self-hosted, SGX2-HW, benchmark]] steps: - name: Clean before running run: | sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" - uses: AutoModality/action-clean@v1 - name: Checkout code if: github.event_name == 'schedule' uses: actions/checkout@v2 with: submodules: true - name: Checkout code from fork # This step is only needed when the pull request is labeled. if: contains(github.event.pull_request.labels.*.name, 'SGX-hardware-test-required') || contains(github.event.pull_request.labels.*.name, 'Pre-release-test') uses: actions/checkout@v2 with: # For pull request, we need to merge the commit from fork to the base ref: refs/pull/${{ github.event.pull_request.number }}/merge submodules: true - uses: ./.github/workflows/composite_action/hw with: container-name: ${{ github.job }} build-envs: 'OCCLUM_RELEASE_BUILD=1' - name: Run sysbench download and build run: docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/benchmarks/sysbench && ./sysbench.sh 120" - name: Copy result run: docker cp ${{ env.CONTAINER_NAME }}:/root/occlum/demos/benchmarks/sysbench/result.json . # Run `github-action-benchmark` action - name: Store benchmark result uses: benchmark-action/github-action-benchmark@v1 with: name: Sysbench Benchmark # What benchmark tool the output.txt came from tool: 'customSmallerIsBetter' # Where the output from the benchmark tool is stored output-file-path: result.json # Path to directory which contains benchmark files on GitHub pages branch benchmark-data-dir-path: 'stable/benchmarks' github-token: ${{ secrets.GITHUB_TOKEN }} auto-push: true # Show alert with commit comment on detecting possible performance regression alert-threshold: '200%' comment-on-alert: true # Workflow will fail when an alert happens fail-on-alert: true - name: Clean the environment if: ${{ always() }} run: docker stop ${{ env.CONTAINER_NAME }} Iperf3_Test: timeout-minutes: 40 if: github.event_name == 'schedule' || contains(github.event.pull_request.labels.*.name, 'SGX-hardware-test-required') || contains(github.event.pull_request.labels.*.name, 'Pre-release-test') runs-on: ${{ matrix.self_runner }} strategy: matrix: self_runner: [[self-hosted, SGX2-HW, benchmark]] steps: - name: Clean before running run: | sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" - uses: AutoModality/action-clean@v1 - name: Checkout code if: github.event_name == 'schedule' uses: actions/checkout@v2 with: submodules: true - name: Checkout code from fork # This step is only needed when the pull request is labeled. if: contains(github.event.pull_request.labels.*.name, 'SGX-hardware-test-required') || contains(github.event.pull_request.labels.*.name, 'Pre-release-test') uses: actions/checkout@v2 with: # For pull request, we need to merge the commit from fork to the base ref: refs/pull/${{ github.event.pull_request.number }}/merge submodules: true - uses: ./.github/workflows/composite_action/hw with: container-name: ${{ github.job }} build-envs: 'OCCLUM_RELEASE_BUILD=1' - name: Run iperf3 download and build run: docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/benchmarks/iperf3 && ./iperf3.sh 120" - name: Copy result run: docker cp ${{ env.CONTAINER_NAME }}:/root/occlum/demos/benchmarks/iperf3/result.json . # Run `github-action-benchmark` action - name: Store benchmark result uses: benchmark-action/github-action-benchmark@v1 with: name: Iperf3 Benchmark # What benchmark tool the output.txt came from tool: 'customBiggerIsBetter ' # Where the output from the benchmark tool is stored output-file-path: result.json # Path to directory which contains benchmark files on GitHub pages branch benchmark-data-dir-path: 'stable/benchmarks' github-token: ${{ secrets.GITHUB_TOKEN }} auto-push: true # Show alert with commit comment on detecting possible performance regression alert-threshold: '200%' comment-on-alert: true # Workflow will fail when an alert happens fail-on-alert: true - name: Clean the environment if: ${{ always() }} run: docker stop ${{ env.CONTAINER_NAME }}