name: benchmark-dev on: push: branches: - master paths-ignore: - "docs/**" - "papers/**" - "rfcs/**" - "*.md" jobs: windows: name: windows-${{matrix.arch}} strategy: fail-fast: false matrix: os: [windows-latest] arch: [Win32, x64] bench: - { script: "run-benchmarks", timeout: 12, title: "Luau Benchmarks", } benchResultsRepo: - { name: "luau-lang/benchmark-data", branch: "main" } runs-on: ${{ matrix.os }} steps: - name: Checkout Luau repository uses: actions/checkout@v3 - name: Build Luau shell: bash # necessary for fail-fast run: | mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release cmake --build . --target Luau.Repl.CLI --config Release cmake --build . --target Luau.Analyze.CLI --config Release - name: Move build files to root run: | move build/Release/* . - uses: actions/setup-python@v3 with: python-version: "3.9" architecture: "x64" - name: Install python dependencies run: | python -m pip install requests python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose - name: Run benchmark run: | python bench/bench.py | tee ${{ matrix.bench.script }}-output.txt - name: Push benchmark results id: pushBenchmarkAttempt1 continue-on-error: true uses: ./.github/workflows/push-results with: repository: ${{ matrix.benchResultsRepo.name }} branch: ${{ matrix.benchResultsRepo.branch }} token: ${{ secrets.BENCH_GITHUB_TOKEN }} path: "./gh-pages" bench_name: "${{ matrix.bench.title }} (Windows ${{matrix.arch}})" bench_tool: "benchmarkluau" bench_output_file_path: "./${{ matrix.bench.script }}-output.txt" bench_external_data_json_path: "./gh-pages/dev/bench/data-${{ matrix.os }}.json" - name: Push benchmark results (Attempt 2) id: pushBenchmarkAttempt2 continue-on-error: true if: steps.pushBenchmarkAttempt1.outcome == 'failure' uses: ./.github/workflows/push-results with: repository: ${{ matrix.benchResultsRepo.name }} branch: ${{ matrix.benchResultsRepo.branch }} token: ${{ secrets.BENCH_GITHUB_TOKEN }} path: "./gh-pages" bench_name: "${{ matrix.bench.title }} (Windows ${{matrix.arch}})" bench_tool: "benchmarkluau" bench_output_file_path: "./${{ matrix.bench.script }}-output.txt" bench_external_data_json_path: "./gh-pages/dev/bench/data-${{ matrix.os }}.json" - name: Push benchmark results (Attempt 3) id: pushBenchmarkAttempt3 continue-on-error: true if: steps.pushBenchmarkAttempt2.outcome == 'failure' uses: ./.github/workflows/push-results with: repository: ${{ matrix.benchResultsRepo.name }} branch: ${{ matrix.benchResultsRepo.branch }} token: ${{ secrets.BENCH_GITHUB_TOKEN }} path: "./gh-pages" bench_name: "${{ matrix.bench.title }} (Windows ${{matrix.arch}})" bench_tool: "benchmarkluau" bench_output_file_path: "./${{ matrix.bench.script }}-output.txt" bench_external_data_json_path: "./gh-pages/dev/bench/data-${{ matrix.os }}.json" unix: name: ${{matrix.os}} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest] bench: - { script: "run-benchmarks", timeout: 12, title: "Luau Benchmarks", } benchResultsRepo: - { name: "luau-lang/benchmark-data", branch: "main" } runs-on: ${{ matrix.os }} steps: - name: Checkout Luau repository uses: actions/checkout@v3 - name: Build Luau run: make config=release luau luau-analyze - uses: actions/setup-python@v3 with: python-version: "3.9" architecture: "x64" - name: Install python dependencies run: | python -m pip install requests python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose - name: Run benchmark run: | python bench/bench.py | tee ${{ matrix.bench.script }}-output.txt - name: Push benchmark results id: pushBenchmarkAttempt1 continue-on-error: true uses: ./.github/workflows/push-results with: repository: ${{ matrix.benchResultsRepo.name }} branch: ${{ matrix.benchResultsRepo.branch }} token: ${{ secrets.BENCH_GITHUB_TOKEN }} path: "./gh-pages" bench_name: ${{ matrix.bench.title }} bench_tool: "benchmarkluau" bench_output_file_path: "./${{ matrix.bench.script }}-output.txt" bench_external_data_json_path: "./gh-pages/dev/bench/data-${{ matrix.os }}.json" - name: Push benchmark results (Attempt 2) id: pushBenchmarkAttempt2 continue-on-error: true if: steps.pushBenchmarkAttempt1.outcome == 'failure' uses: ./.github/workflows/push-results with: repository: ${{ matrix.benchResultsRepo.name }} branch: ${{ matrix.benchResultsRepo.branch }} token: ${{ secrets.BENCH_GITHUB_TOKEN }} path: "./gh-pages" bench_name: ${{ matrix.bench.title }} bench_tool: "benchmarkluau" bench_output_file_path: "./${{ matrix.bench.script }}-output.txt" bench_external_data_json_path: "./gh-pages/dev/bench/data-${{ matrix.os }}.json" - name: Push benchmark results (Attempt 3) id: pushBenchmarkAttempt3 continue-on-error: true if: steps.pushBenchmarkAttempt2.outcome == 'failure' uses: ./.github/workflows/push-results with: repository: ${{ matrix.benchResultsRepo.name }} branch: ${{ matrix.benchResultsRepo.branch }} token: ${{ secrets.BENCH_GITHUB_TOKEN }} path: "./gh-pages" bench_name: ${{ matrix.bench.title }} bench_tool: "benchmarkluau" bench_output_file_path: "./${{ matrix.bench.script }}-output.txt" bench_external_data_json_path: "./gh-pages/dev/bench/data-${{ matrix.os }}.json"