github.com/yandex/pandora@v0.5.32/.github/workflows/perftest.yml (about)

     1  name: Performance tests
     2  
     3  on:
     4    release:
     5      types: [ created ]
     6  
     7  env:
     8    AWS_ENDPOINT_URL: https://storage.yandexcloud.net
     9    AWS_REGION: ru-central1
    10  
    11  jobs:
    12    build-and-upload:
    13      runs-on: ubuntu-latest
    14      steps:
    15        - uses: actions/checkout@v4
    16        - uses: actions/setup-go@v5
    17          with:
    18            go-version: 1.21.x
    19            cache: true
    20        - id: test-go-setup
    21          run: go test -race -covermode atomic ./...
    22        - id: build
    23          run: |
    24            export GOOS=linux
    25            export CGO_ENABLED=0
    26            go build -o pandora-perf
    27        - id: upload-binary
    28          uses: osiegmar/s3-publisher-action@v1
    29          env:
    30            AWS_ACCESS_KEY_ID: ${{ secrets.YC_S3_KEY_ID }}
    31            AWS_SECRET_ACCESS_KEY: ${{ secrets.YC_S3_KEY_SECRET }}
    32          with:
    33            dir: .
    34            includes: pandora-perf
    35            bucket: ${{ vars.YC_LOADTESTING_DATA_BUCKET }}
    36  
    37    test-pandora-perf:
    38      needs: [ build-and-upload ]
    39      runs-on: ubuntu-latest
    40      concurrency: { group: loadtesting }
    41      env:
    42        PERFTESTS_ROOT: "./performance-test/test-config"
    43        PERFTESTS_AGENT_NAME: "agent-pandora-perf-medium"
    44        TEST_LABELS: "version=${{ github.ref_name }}"
    45        AGENT_FILTER: "name = 'agent-pandora-perf-medium'"
    46      steps:
    47        - uses: actions/checkout@v4
    48        - id: run-perftests
    49          name: Run Pandora Performance Tests
    50          uses: yandex-cloud/yc-github-loadtesting-ci/test-suite@v1-beta
    51          with:
    52            action-log-level: INFO
    53            auth-key-json-base64: ${{ secrets.YC_LOADTESTING_KEY_JSON_BASE64 }}
    54            folder-id: ${{ vars.YC_LOADTESTING_FOLDER_ID }}
    55            data-bucket: ${{ vars.YC_LOADTESTING_DATA_BUCKET }}
    56            add-labels: "version=${{ github.ref_name }}"
    57            agent-filter: "name='${{ env.PERFTESTS_AGENT_NAME }}'"
    58            test-directories: |
    59              "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-2000inst-sleep0ms-overflow-false"
    60              "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-2000inst-sleep50ms-overflow-false"
    61              "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-300inst-sleep0ms-overflow-false"
    62              "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-2000inst-sleep0ms-overflow-true"
    63              "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-2000inst-sleep50ms-overflow-true"
    64              "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-300inst-sleep0ms-overflow-true"
    65              "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-300inst-sleep0ms-overflow-false"
    66              "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-2000inst-sleep0ms-overflow-false"
    67              "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-2000inst-sleep50ms-overflow-false"
    68              "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-300inst-sleep0ms-overflow-true"
    69              "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-2000inst-sleep0ms-overflow-true"
    70              "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-2000inst-sleep50ms-overflow-true"
    71  
    72        - uses: actions/upload-artifact@v4
    73          if: always()
    74          with:
    75            name: perftest-artifacts
    76            path: ${{ steps.run-perftests.outputs.artifacts-dir }}
    77  
    78        - id: make-test-infos-json
    79          if: always()
    80          run: cp "${{ steps.run-perftests.outputs.test-infos-file }}" test-infos.json
    81  
    82        - id: make-imbalance-md-str
    83          name: Generate report
    84          uses: sergeysova/jq-action@v2
    85          with:
    86            multiline: true
    87            cmd: |
    88              jq -r '.[] | "- \(.details.name): **\(.summary.imbalance_point.rps // 0 | tonumber)**"' test-infos.json > imbalance.md
    89  
    90        - uses: actions/upload-artifact@v4
    91          with:
    92            name: imbalance.md
    93            path: imbalance.md
    94  
    95        - name: Update release
    96          uses: tubone24/update_release@v1.3.1
    97          env:
    98            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    99          with:
   100            body_path: imbalance.md
   101            is_append_body: true
   102