From 40330b116e60465ed901c894f16612b57e741a02 Mon Sep 17 00:00:00 2001 From: Shaowei Song <1498430017@qq.com> Date: Thu, 12 Jan 2023 10:28:13 +0800 Subject: [PATCH] [ci] Enable benchmark ci on schedule on branch 1.0.0-preview --- .github/workflows/benchmarks.yml | 167 +++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 .github/workflows/benchmarks.yml diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml new file mode 100644 index 00000000..7054c194 --- /dev/null +++ b/.github/workflows/benchmarks.yml @@ -0,0 +1,167 @@ +name: Benchmarks Test +# Currently this workflow is only used for running benchmarks test on schedule on branch 1.0.0-preview + +on: + schedule: + # Schedule to run on Wed,Sat at 10PM UTC (6AM CST) + - cron: '0 22 * * 3,6' + +jobs: + Sysbench_Test: + timeout-minutes: 40 + 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 + uses: actions/checkout@v2 + with: + submodules: true + ref: 1.0.0-preview + + - 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: 'dev/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 + 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 + uses: actions/checkout@v2 + with: + submodules: true + ref: 1.0.0-preview + + - 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: 'dev/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 }} + + FIO_Test: + timeout-minutes: 60 + 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 + uses: actions/checkout@v2 + with: + submodules: true + ref: 1.0.0-preview + + - uses: ./.github/workflows/composite_action/hw + with: + container-name: ${{ github.job }} + build-envs: 'OCCLUM_RELEASE_BUILD=1' + + - name: Run fio download and build + run: docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/benchmarks/fio && ./fio_microbench.sh" + + - name: Copy result + run: docker cp ${{ env.CONTAINER_NAME }}:/root/occlum/demos/benchmarks/fio/result.json . + + # Run `github-action-benchmark` action + - name: Store benchmark result + uses: benchmark-action/github-action-benchmark@v1 + with: + name: FIO 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: 'dev/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 }}