Bump actions/download-artifact from 4 to 7 #20131
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This file was automatically generated by sbt-github-actions using the | |
| # githubWorkflowGenerate task. You should add and commit this file to | |
| # your git repository. It goes without saying that you shouldn't edit | |
| # this file by hand! Instead, if you wish to make changes, you should | |
| # change your sbt build configuration to revise the workflow description | |
| # to meet your needs, then regenerate this file. | |
| name: Continuous Integration | |
| on: | |
| pull_request: | |
| branches: ['**'] | |
| types: [opened, synchronize, reopened, edited, labeled] | |
| push: | |
| branches: ['**'] | |
| tags: [v*] | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| JDK_JAVA_OPTIONS: '-Xms4G -Xmx8G -XX:+UseG1GC -Xss10M -XX:ReservedCodeCacheSize=1G -XX:NonProfiledCodeHeapSize=512m -Dfile.encoding=UTF-8' | |
| SBT_OPTS: '-Xms4G -Xmx8G -XX:+UseG1GC -Xss10M -XX:ReservedCodeCacheSize=1G -XX:NonProfiledCodeHeapSize=512m -Dfile.encoding=UTF-8' | |
| jobs: | |
| build: | |
| name: Build and Test | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.12.20, 2.13.16, 3.3.7] | |
| java: | |
| - graal_graalvm@17 | |
| - graal_graalvm@21 | |
| - temurin@17 | |
| - temurin@21 | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 60 | |
| steps: | |
| - name: Checkout current branch (full) | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup GraalVM (graal_graalvm@17) | |
| if: matrix.java == 'graal_graalvm@17' | |
| uses: graalvm/setup-graalvm@v1 | |
| with: | |
| java-version: 17 | |
| distribution: graalvm | |
| components: native-image | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| cache: sbt | |
| - name: Setup GraalVM (graal_graalvm@21) | |
| if: matrix.java == 'graal_graalvm@21' | |
| uses: graalvm/setup-graalvm@v1 | |
| with: | |
| java-version: 21 | |
| distribution: graalvm | |
| components: native-image | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| cache: sbt | |
| - name: Setup Java (temurin@17) | |
| if: matrix.java == 'temurin@17' | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| cache: sbt | |
| - name: Setup Java (temurin@21) | |
| if: matrix.java == 'temurin@21' | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: 21 | |
| cache: sbt | |
| - name: Setup sbt | |
| uses: sbt/setup-sbt@v1 | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - name: Check formatting | |
| if: matrix.scala == '2.13.16' | |
| run: sbt ++2.13.16 fmtCheck | |
| - name: Check that workflows are up to date | |
| run: sbt '++ ${{ matrix.scala }}' githubWorkflowCheck | |
| - name: Build project | |
| run: sbt '++ ${{ matrix.scala }}' test | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - name: Check doc generation | |
| if: ${{ github.event_name == 'pull_request' }} | |
| run: sbt ++2.13.16 doc | |
| - name: zio-http-shaded Tests | |
| if: matrix.scala == '2.13.16' | |
| env: | |
| PUBLISH_SHADED: true | |
| run: sbt '++ ${{ matrix.scala }}' zioHttpShadedTests/test | |
| - name: Compress target directories | |
| run: tar cf targets.tar zio-http-datastar-sdk/target sbt-zio-http-grpc/target zio-http-cli/target target zio-http/jvm/target zio-http-docs/target sbt-zio-http-grpc-tests/target zio-http-stomp/target zio-http-gen/target zio-http-benchmarks/target zio-http-tools/target zio-http-example/target zio-http-testkit/target zio-http/js/target zio-http-htmx/target project/target | |
| - name: Upload target directories | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: target-${{ matrix.os }}-${{ matrix.scala }}-${{ matrix.java }} | |
| path: targets.tar | |
| publish: | |
| name: Publish Artifacts | |
| needs: [build] | |
| if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [graal_graalvm@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout current branch (full) | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup GraalVM (graal_graalvm@17) | |
| if: matrix.java == 'graal_graalvm@17' | |
| uses: graalvm/setup-graalvm@v1 | |
| with: | |
| java-version: 17 | |
| distribution: graalvm | |
| components: native-image | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| cache: sbt | |
| - name: Setup GraalVM (graal_graalvm@21) | |
| if: matrix.java == 'graal_graalvm@21' | |
| uses: graalvm/setup-graalvm@v1 | |
| with: | |
| java-version: 21 | |
| distribution: graalvm | |
| components: native-image | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| cache: sbt | |
| - name: Setup Java (temurin@17) | |
| if: matrix.java == 'temurin@17' | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| cache: sbt | |
| - name: Setup Java (temurin@21) | |
| if: matrix.java == 'temurin@21' | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: 21 | |
| cache: sbt | |
| - name: Setup sbt | |
| uses: sbt/setup-sbt@v1 | |
| - name: Download target directories (2.12.20) | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: target-${{ matrix.os }}-2.12.20-${{ matrix.java }} | |
| - name: Inflate target directories (2.12.20) | |
| run: | | |
| tar xf targets.tar | |
| rm targets.tar | |
| - name: Download target directories (2.13.16) | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: target-${{ matrix.os }}-2.13.16-${{ matrix.java }} | |
| - name: Inflate target directories (2.13.16) | |
| run: | | |
| tar xf targets.tar | |
| rm targets.tar | |
| - name: Download target directories (3.3.7) | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: target-${{ matrix.os }}-3.3.7-${{ matrix.java }} | |
| - name: Inflate target directories (3.3.7) | |
| run: | | |
| tar xf targets.tar | |
| rm targets.tar | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - name: Release | |
| env: | |
| PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} | |
| SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} | |
| CI_RELEASE_MODE: 1 | |
| SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} | |
| PGP_SECRET: ${{ secrets.PGP_SECRET }} | |
| run: sbt ci-release | |
| - name: Release Shaded | |
| env: | |
| PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} | |
| SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} | |
| PUBLISH_SHADED: true | |
| CI_RELEASE_MODE: 1 | |
| SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} | |
| PGP_SECRET: ${{ secrets.PGP_SECRET }} | |
| run: sbt ci-release | |
| mima_check: | |
| name: Mima Check | |
| if: ${{ github.event_name == 'pull_request' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.10] | |
| java: [temurin@21] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - name: Setup Java (temurin@21) | |
| if: matrix.java == 'temurin@21' | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: 21 | |
| cache: sbt | |
| - run: sbt mimaChecks | |
| unsafeRunScoverage: | |
| name: Unsafe Scoverage | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - name: Add Scoverage | |
| id: add_plugin | |
| run: sed -i -e '$aaddSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.3.0")' project/plugins.sbt | |
| - name: Update Build Definition | |
| id: update_build_definition | |
| run: | | |
| sed -i -e 's+(project in file("./zio-http"))+(project in file("./zio-http")).settings(coverageEnabled:=true,coverageMinimumStmtTotal:=50.0,coverageMinimumBranchTotal:=60.0)+g' build.sbt | |
| - name: Run Coverage | |
| id: run_coverage | |
| run: sbt 'coverage; project zioHttpJVM; test; coverageReport' | |
| - name: Push Codecov | |
| id: push_codecov | |
| run: 'bash <(curl -s https://codecov.io/bash)' | |
| Jmh_CachedDateHeaderBenchmark: | |
| name: Jmh CachedDateHeaderBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_CachedDateHeaderBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 CachedDateHeaderBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_CachedDateHeaderBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_CachedDateHeaderBenchmark | |
| path: Main_CachedDateHeaderBenchmark.txt | |
| Jmh_ClientBenchmark: | |
| name: Jmh ClientBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_ClientBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 ClientBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_ClientBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_ClientBenchmark | |
| path: Main_ClientBenchmark.txt | |
| Jmh_CookieDecodeBenchmark: | |
| name: Jmh CookieDecodeBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_CookieDecodeBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 CookieDecodeBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_CookieDecodeBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_CookieDecodeBenchmark | |
| path: Main_CookieDecodeBenchmark.txt | |
| Jmh_DateEncodingBenchmark: | |
| name: Jmh DateEncodingBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_DateEncodingBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 DateEncodingBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_DateEncodingBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_DateEncodingBenchmark | |
| path: Main_DateEncodingBenchmark.txt | |
| Jmh_EndpointBenchmark: | |
| name: Jmh EndpointBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_EndpointBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 EndpointBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_EndpointBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_EndpointBenchmark | |
| path: Main_EndpointBenchmark.txt | |
| Jmh_FormToQueryBenchmark: | |
| name: Jmh FormToQueryBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_FormToQueryBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 FormToQueryBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_FormToQueryBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_FormToQueryBenchmark | |
| path: Main_FormToQueryBenchmark.txt | |
| Jmh_HttpCollectEval: | |
| name: Jmh HttpCollectEval | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_HttpCollectEval.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 HttpCollectEval" | grep -e "thrpt" -e "avgt" >> ../Main_HttpCollectEval.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_HttpCollectEval | |
| path: Main_HttpCollectEval.txt | |
| Jmh_HttpCombineEval: | |
| name: Jmh HttpCombineEval | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_HttpCombineEval.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 HttpCombineEval" | grep -e "thrpt" -e "avgt" >> ../Main_HttpCombineEval.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_HttpCombineEval | |
| path: Main_HttpCombineEval.txt | |
| Jmh_HttpNestedFlatMapEval: | |
| name: Jmh HttpNestedFlatMapEval | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_HttpNestedFlatMapEval.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 HttpNestedFlatMapEval" | grep -e "thrpt" -e "avgt" >> ../Main_HttpNestedFlatMapEval.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_HttpNestedFlatMapEval | |
| path: Main_HttpNestedFlatMapEval.txt | |
| Jmh_HttpRouteTextPerf: | |
| name: Jmh HttpRouteTextPerf | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_HttpRouteTextPerf.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 HttpRouteTextPerf" | grep -e "thrpt" -e "avgt" >> ../Main_HttpRouteTextPerf.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_HttpRouteTextPerf | |
| path: Main_HttpRouteTextPerf.txt | |
| Jmh_MethodLookupBenchmark: | |
| name: Jmh MethodLookupBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_MethodLookupBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 MethodLookupBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_MethodLookupBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_MethodLookupBenchmark | |
| path: Main_MethodLookupBenchmark.txt | |
| Jmh_ProbeContentTypeBenchmark: | |
| name: Jmh ProbeContentTypeBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_ProbeContentTypeBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 ProbeContentTypeBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_ProbeContentTypeBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_ProbeContentTypeBenchmark | |
| path: Main_ProbeContentTypeBenchmark.txt | |
| Jmh_QueryEncodingBenchmark: | |
| name: Jmh QueryEncodingBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_QueryEncodingBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 QueryEncodingBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_QueryEncodingBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_QueryEncodingBenchmark | |
| path: Main_QueryEncodingBenchmark.txt | |
| Jmh_RoundtripBenchmark: | |
| name: Jmh RoundtripBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_RoundtripBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 RoundtripBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_RoundtripBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_RoundtripBenchmark | |
| path: Main_RoundtripBenchmark.txt | |
| Jmh_RoutesBenchmark: | |
| name: Jmh RoutesBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_RoutesBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 RoutesBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_RoutesBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_RoutesBenchmark | |
| path: Main_RoutesBenchmark.txt | |
| Jmh_SchemeDecodeBenchmark: | |
| name: Jmh SchemeDecodeBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_SchemeDecodeBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 SchemeDecodeBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_SchemeDecodeBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_SchemeDecodeBenchmark | |
| path: Main_SchemeDecodeBenchmark.txt | |
| Jmh_ServerInboundHandlerBenchmark: | |
| name: Jmh ServerInboundHandlerBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_ServerInboundHandlerBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 ServerInboundHandlerBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_ServerInboundHandlerBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_ServerInboundHandlerBenchmark | |
| path: Main_ServerInboundHandlerBenchmark.txt | |
| Jmh_UtilBenchmark: | |
| name: Jmh UtilBenchmark | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: coursier/setup-action@v1 | |
| with: | |
| apps: sbt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Benchmark_Main | |
| id: Benchmark_Main | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| cd zio-http | |
| sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt | |
| cat > Main_UtilBenchmark.txt | |
| sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 UtilBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_UtilBenchmark.txt | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Jmh_Main_UtilBenchmark | |
| path: Main_UtilBenchmark.txt | |
| Jmh_cache: | |
| name: Cache Jmh benchmarks | |
| needs: [Jmh_CachedDateHeaderBenchmark, Jmh_ClientBenchmark, Jmh_CookieDecodeBenchmark, Jmh_DateEncodingBenchmark, Jmh_EndpointBenchmark, Jmh_FormToQueryBenchmark, Jmh_HttpCollectEval, Jmh_HttpCombineEval, Jmh_HttpNestedFlatMapEval, Jmh_HttpRouteTextPerf, Jmh_MethodLookupBenchmark, Jmh_ProbeContentTypeBenchmark, Jmh_QueryEncodingBenchmark, Jmh_RoundtripBenchmark, Jmh_RoutesBenchmark, Jmh_SchemeDecodeBenchmark, Jmh_ServerInboundHandlerBenchmark, Jmh_UtilBenchmark] | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.10] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_CachedDateHeaderBenchmark | |
| - name: Format_Main_CachedDateHeaderBenchmark | |
| run: cat Main_CachedDateHeaderBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_ClientBenchmark | |
| - name: Format_Main_ClientBenchmark | |
| run: cat Main_ClientBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_CookieDecodeBenchmark | |
| - name: Format_Main_CookieDecodeBenchmark | |
| run: cat Main_CookieDecodeBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_DateEncodingBenchmark | |
| - name: Format_Main_DateEncodingBenchmark | |
| run: cat Main_DateEncodingBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_EndpointBenchmark | |
| - name: Format_Main_EndpointBenchmark | |
| run: cat Main_EndpointBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_FormToQueryBenchmark | |
| - name: Format_Main_FormToQueryBenchmark | |
| run: cat Main_FormToQueryBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_HttpCollectEval | |
| - name: Format_Main_HttpCollectEval | |
| run: cat Main_HttpCollectEval.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_HttpCombineEval | |
| - name: Format_Main_HttpCombineEval | |
| run: cat Main_HttpCombineEval.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_HttpNestedFlatMapEval | |
| - name: Format_Main_HttpNestedFlatMapEval | |
| run: cat Main_HttpNestedFlatMapEval.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_HttpRouteTextPerf | |
| - name: Format_Main_HttpRouteTextPerf | |
| run: cat Main_HttpRouteTextPerf.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_MethodLookupBenchmark | |
| - name: Format_Main_MethodLookupBenchmark | |
| run: cat Main_MethodLookupBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_ProbeContentTypeBenchmark | |
| - name: Format_Main_ProbeContentTypeBenchmark | |
| run: cat Main_ProbeContentTypeBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_QueryEncodingBenchmark | |
| - name: Format_Main_QueryEncodingBenchmark | |
| run: cat Main_QueryEncodingBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_RoundtripBenchmark | |
| - name: Format_Main_RoundtripBenchmark | |
| run: cat Main_RoundtripBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_RoutesBenchmark | |
| - name: Format_Main_RoutesBenchmark | |
| run: cat Main_RoutesBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_SchemeDecodeBenchmark | |
| - name: Format_Main_SchemeDecodeBenchmark | |
| run: cat Main_SchemeDecodeBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_ServerInboundHandlerBenchmark | |
| - name: Format_Main_ServerInboundHandlerBenchmark | |
| run: cat Main_ServerInboundHandlerBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: Jmh_Main_UtilBenchmark | |
| - name: Format_Main_UtilBenchmark | |
| run: cat Main_UtilBenchmark.txt >> Main_benchmarks.txt | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - name: Main Result | |
| id: Main_Result | |
| run: | | |
| while IFS= read -r line; do | |
| IFS=' ' read -ra PARSED_RESULT <<< "$line" | |
| echo ${PARSED_RESULT[1]} >> parsed_Main.txt | |
| B_VALUE=$(echo ${PARSED_RESULT[1]}": "${PARSED_RESULT[4]}" ops/sec") | |
| echo $B_VALUE >> Main.txt | |
| done < Main_benchmarks.txt | |
| - uses: actions/cache@v4 | |
| with: | |
| path: Main.txt | |
| key: jmh_benchmarks_${{ github.sha }} | |
| runBenchmarks-simple: | |
| name: Performance Benchmarks (PlainTextBenchmarkServer) | |
| if: ${{ github.event_name == 'pull_request'}} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Clean up | |
| id: clean_up | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: sudo rm -rf * | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/checkout@v4 | |
| with: | |
| repository: zio/FrameworkBenchmarks | |
| path: FrameworkBenchMarks | |
| - id: result | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| mkdir -p ./FrameworkBenchMarks/frameworks/Scala/zio-http/src/main/scala | |
| cp ./zio-http/zio-http-example/src/main/scala/example/PlainTextBenchmarkServer.scala ./FrameworkBenchMarks/frameworks/Scala/zio-http/src/main/scala/Main.scala | |
| cd ./FrameworkBenchMarks | |
| cd ./frameworks/Scala/zio-http | |
| git init . | |
| git config user.email 'benchamrk@example.com' | |
| git config user.name 'ZIO Benchmark' | |
| git add build.sbt | |
| git commit -m 'initial commit' | |
| git tag v1.0.0 | |
| git clone https://github.com/${{github.event.pull_request.head.repo.owner.login}}/zio-http.git | |
| cd zio-http | |
| git checkout ${{github.event.pull_request.head.sha}} | |
| cd ../../../.. | |
| ./tfb --test zio-http | tee result | |
| RESULT_REQUEST=$(echo $(grep -B 1 -A 17 "Concurrency: 256 for plaintext" result) | grep -oiE "requests/sec: [0-9]+.[0-9]+" | grep -oiE "[0-9]+" | head -1) | |
| RESULT_CONCURRENCY=$(echo $(grep -B 1 -A 17 "Concurrency: 256 for plaintext" result) | grep -oiE "concurrency: [0-9]+" | grep -oiE "[0-9]+") | |
| echo "request_per_second=$RESULT_REQUEST" >> $GITHUB_OUTPUT | |
| echo "concurrency=$RESULT_CONCURRENCY" >> $GITHUB_OUTPUT | |
| - if: ${{github.event.pull_request.head.repo.full_name == 'zio/zio-http'}} | |
| uses: peter-evans/commit-comment@v4 | |
| with: | |
| sha: ${{github.event.pull_request.head.sha}} | |
| body: | | |
| **🚀 :** Performance Benchmarks (PlainTextBenchmarkServer) | |
| concurrency: ${{steps.result.outputs.concurrency}} | |
| requests/sec: ${{steps.result.outputs.request_per_second}} | |
| - name: Performance Report | |
| id: perf-report | |
| env: | |
| REQUESTS_PER_SECOND: ${{steps.result.outputs.request_per_second}} | |
| CONCURRENCY: ${{steps.result.outputs.concurrency}} | |
| PERFORMANCE_FLOOR: 300000 | |
| run: | | |
| echo "** 🚀 Performance Benchmarks (PlainTextBenchmarkServer) Report 🚀 **" | |
| echo "$REQUESTS_PER_SECOND requests/sec for $CONCURRENCY concurrent requests" | |
| if (( REQUESTS_PER_SECOND > PERFORMANCE_FLOOR )); then | |
| echo "Woohoo! Performance is good! $REQUESTS_PER_SECOND requests/sec exceeds the performance floor of $PERFORMANCE_FLOOR requests/sec." | |
| else | |
| echo "Performance benchmark failed with $REQUESTS_PER_SECOND req/sec! Performance must exceed $PERFORMANCE_FLOOR req/sec." | |
| exit 1 | |
| fi | |
| runBenchmarks-effectful: | |
| name: Performance Benchmarks (SimpleEffectBenchmarkServer) | |
| if: ${{ github.event_name == 'pull_request'}} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| scala: [2.13.16] | |
| java: [temurin@17] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Clean up | |
| id: clean_up | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: sudo rm -rf * | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: zio-http | |
| - uses: actions/checkout@v4 | |
| with: | |
| repository: zio/FrameworkBenchmarks | |
| path: FrameworkBenchMarks | |
| - id: result | |
| env: | |
| GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}} | |
| run: | | |
| mkdir -p ./FrameworkBenchMarks/frameworks/Scala/zio-http/src/main/scala | |
| cp ./zio-http/zio-http-example/src/main/scala/example/SimpleEffectBenchmarkServer.scala ./FrameworkBenchMarks/frameworks/Scala/zio-http/src/main/scala/Main.scala | |
| cd ./FrameworkBenchMarks | |
| cd ./frameworks/Scala/zio-http | |
| git init . | |
| git config user.email 'benchamrk@example.com' | |
| git config user.name 'ZIO Benchmark' | |
| git add build.sbt | |
| git commit -m 'initial commit' | |
| git tag v1.0.0 | |
| git clone https://github.com/${{github.event.pull_request.head.repo.owner.login}}/zio-http.git | |
| cd zio-http | |
| git checkout ${{github.event.pull_request.head.sha}} | |
| cd ../../../.. | |
| ./tfb --test zio-http | tee result | |
| RESULT_REQUEST=$(echo $(grep -B 1 -A 17 "Concurrency: 256 for plaintext" result) | grep -oiE "requests/sec: [0-9]+.[0-9]+" | grep -oiE "[0-9]+" | head -1) | |
| RESULT_CONCURRENCY=$(echo $(grep -B 1 -A 17 "Concurrency: 256 for plaintext" result) | grep -oiE "concurrency: [0-9]+" | grep -oiE "[0-9]+") | |
| echo "request_per_second=$RESULT_REQUEST" >> $GITHUB_OUTPUT | |
| echo "concurrency=$RESULT_CONCURRENCY" >> $GITHUB_OUTPUT | |
| - if: ${{github.event.pull_request.head.repo.full_name == 'zio/zio-http'}} | |
| uses: peter-evans/commit-comment@v4 | |
| with: | |
| sha: ${{github.event.pull_request.head.sha}} | |
| body: | | |
| **🚀 :** Performance Benchmarks (SimpleEffectBenchmarkServer) | |
| concurrency: ${{steps.result.outputs.concurrency}} | |
| requests/sec: ${{steps.result.outputs.request_per_second}} | |
| - name: Performance Report | |
| id: perf-report | |
| env: | |
| REQUESTS_PER_SECOND: ${{steps.result.outputs.request_per_second}} | |
| CONCURRENCY: ${{steps.result.outputs.concurrency}} | |
| PERFORMANCE_FLOOR: 300000 | |
| run: | | |
| echo "** 🚀 Performance Benchmarks (SimpleEffectBenchmarkServer) Report 🚀 **" | |
| echo "$REQUESTS_PER_SECOND requests/sec for $CONCURRENCY concurrent requests" | |
| if (( REQUESTS_PER_SECOND > PERFORMANCE_FLOOR )); then | |
| echo "Woohoo! Performance is good! $REQUESTS_PER_SECOND requests/sec exceeds the performance floor of $PERFORMANCE_FLOOR requests/sec." | |
| else | |
| echo "Performance benchmark failed with $REQUESTS_PER_SECOND req/sec! Performance must exceed $PERFORMANCE_FLOOR req/sec." | |
| exit 1 | |
| fi |