| 
98 | 98 | 
  | 
99 | 99 |           echo "benchmark_configs is: ${{ steps.set-parameters.outputs.benchmark_configs }}"  | 
100 | 100 | 
  | 
101 |  | -  prepare-test-specs:  | 
102 |  | -    runs-on: linux.2xlarge  | 
103 |  | -    needs: set-parameters  | 
104 |  | -    strategy:  | 
105 |  | -      matrix: ${{ fromJson(needs.set-parameters.outputs.benchmark_configs) }}  | 
106 |  | -      fail-fast: false  | 
107 |  | -    steps:  | 
108 |  | -      - uses: actions/checkout@v3  | 
109 |  | - | 
110 |  | -      - name: Prepare the spec  | 
111 |  | -        id: prepare  | 
112 |  | -        shell: bash  | 
113 |  | -        env:  | 
114 |  | -          BENCHMARK_CONFIG: ${{ toJSON(matrix) }}  | 
115 |  | -        working-directory: extension/benchmark/apple/Benchmark  | 
116 |  | -        run: |  | 
117 |  | -          set -eux  | 
118 |  | -
  | 
119 |  | -          # The model will be exported in the next step to this S3 path  | 
120 |  | -          MODEL_PATH="https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/${{ matrix.model }}_${{ matrix.config }}/model.zip"  | 
121 |  | -          # We could write a script to properly use jinja here, but there is only one variable,  | 
122 |  | -          # so let's just sed it  | 
123 |  | -          sed -i -e 's,{{ model_path }},'"${MODEL_PATH}"',g' default-ios-device-farm-appium-test-spec.yml.j2  | 
124 |  | -
  | 
125 |  | -          BENCHMARK_CONFIG_ID=$(echo "${{ matrix.model }}_${{ matrix.config }}" | sed -e 's/[^A-Za-z0-9._-]/_/g')  | 
126 |  | -          # The config for this benchmark runs, we save it in the test spec so that it can be fetched  | 
127 |  | -          # later by the upload script  | 
128 |  | -          sed -i -e 's,{{ benchmark_config_id }},'"${BENCHMARK_CONFIG_ID}"',g' default-ios-device-farm-appium-test-spec.yml.j2  | 
129 |  | -
  | 
130 |  | -          cp default-ios-device-farm-appium-test-spec.yml.j2 default-ios-device-farm-appium-test-spec.yml  | 
131 |  | -          # Just print the test spec for debugging  | 
132 |  | -          cat default-ios-device-farm-appium-test-spec.yml  | 
133 |  | -
  | 
134 |  | -          # Save the benchmark configs so that we can use it later in the dashboard  | 
135 |  | -          echo "${BENCHMARK_CONFIG}" > "${BENCHMARK_CONFIG_ID}.json"  | 
136 |  | -          echo "benchmark-config-id=${BENCHMARK_CONFIG_ID}" >> $GITHUB_OUTPUT  | 
137 |  | -
  | 
138 |  | -      - name: Upload the spec  | 
139 |  | -        uses: seemethere/upload-artifact-s3@v5  | 
140 |  | -        with:  | 
141 |  | -          s3-bucket: gha-artifacts  | 
142 |  | -          s3-prefix: |  | 
143 |  | -            ${{ github.repository }}/${{ github.run_id }}/artifacts/${{ matrix.model }}_${{ matrix.config }}  | 
144 |  | -          retention-days: 1  | 
145 |  | -          if-no-files-found: error  | 
146 |  | -          path: extension/benchmark/apple/Benchmark/default-ios-device-farm-appium-test-spec.yml  | 
147 |  | - | 
148 |  | -      - name: Update the benchmark configs  | 
149 |  | -        uses: seemethere/upload-artifact-s3@v5  | 
150 |  | -        with:  | 
151 |  | -          s3-bucket: gha-artifacts  | 
152 |  | -          s3-prefix: |  | 
153 |  | -            ${{ github.repository }}/${{ github.run_id }}/artifacts/benchmark-configs/  | 
154 |  | -          retention-days: 1  | 
155 |  | -          if-no-files-found: error  | 
156 |  | -          path: extension/benchmark/apple/Benchmark/${{ steps.prepare.outputs.benchmark-config-id }}.json  | 
157 |  | - | 
158 | 101 |   export-models:  | 
159 | 102 |     name: export-models  | 
160 | 103 |     uses: pytorch/test-infra/.github/workflows/macos_job.yml@main  | 
@@ -344,6 +287,68 @@ jobs:  | 
344 | 287 |         fi  | 
345 | 288 |         echo "::endgroup::"  | 
346 | 289 | 
  | 
 | 290 | +  prepare-test-specs:  | 
 | 291 | +    runs-on: linux.2xlarge  | 
 | 292 | +    needs:  | 
 | 293 | +      - set-parameters  | 
 | 294 | +      - export-models  | 
 | 295 | +    strategy:  | 
 | 296 | +      matrix: ${{ fromJson(needs.set-parameters.outputs.benchmark_configs) }}  | 
 | 297 | +      fail-fast: false  | 
 | 298 | +    steps:  | 
 | 299 | +      - uses: actions/checkout@v3  | 
 | 300 | + | 
 | 301 | +      - name: Prepare the spec  | 
 | 302 | +        id: prepare  | 
 | 303 | +        shell: bash  | 
 | 304 | +        env:  | 
 | 305 | +          BENCHMARK_CONFIG: ${{ toJSON(matrix) }}  | 
 | 306 | +        working-directory: extension/benchmark/apple/Benchmark  | 
 | 307 | +        run: |  | 
 | 308 | +          set -eux  | 
 | 309 | +
  | 
 | 310 | +          # The model will be exported in the next step to this S3 path  | 
 | 311 | +          MODEL_PATH="https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/${{ matrix.model }}_${{ matrix.config }}/model.zip"  | 
 | 312 | +          # Check if the model artifact exists, fail this step skip generating test-spec.  | 
 | 313 | +          curl -s --head -f ${MODEL_PATH}  | 
 | 314 | +          # We could write a script to properly use jinja here, but there is only one variable,  | 
 | 315 | +          # so let's just sed it  | 
 | 316 | +          sed -i -e 's,{{ model_path }},'"${MODEL_PATH}"',g' default-ios-device-farm-appium-test-spec.yml.j2  | 
 | 317 | +
  | 
 | 318 | +          BENCHMARK_CONFIG_ID=$(echo "${{ matrix.model }}_${{ matrix.config }}" | sed -e 's/[^A-Za-z0-9._-]/_/g')  | 
 | 319 | +          # The config for this benchmark runs, we save it in the test spec so that it can be fetched  | 
 | 320 | +          # later by the upload script  | 
 | 321 | +          sed -i -e 's,{{ benchmark_config_id }},'"${BENCHMARK_CONFIG_ID}"',g' default-ios-device-farm-appium-test-spec.yml.j2  | 
 | 322 | +
  | 
 | 323 | +          cp default-ios-device-farm-appium-test-spec.yml.j2 default-ios-device-farm-appium-test-spec.yml  | 
 | 324 | +          # Just print the test spec for debugging  | 
 | 325 | +          cat default-ios-device-farm-appium-test-spec.yml  | 
 | 326 | +
  | 
 | 327 | +          # Save the benchmark configs so that we can use it later in the dashboard  | 
 | 328 | +          echo "${BENCHMARK_CONFIG}" > "${BENCHMARK_CONFIG_ID}.json"  | 
 | 329 | +          echo "benchmark-config-id=${BENCHMARK_CONFIG_ID}" >> $GITHUB_OUTPUT  | 
 | 330 | +
  | 
 | 331 | +      - name: Upload the spec  | 
 | 332 | +        uses: seemethere/upload-artifact-s3@v5  | 
 | 333 | +        with:  | 
 | 334 | +          s3-bucket: gha-artifacts  | 
 | 335 | +          s3-prefix: |  | 
 | 336 | +            ${{ github.repository }}/${{ github.run_id }}/artifacts/${{ matrix.model }}_${{ matrix.config }}  | 
 | 337 | +          retention-days: 1  | 
 | 338 | +          if-no-files-found: error  | 
 | 339 | +          path: extension/benchmark/apple/Benchmark/default-ios-device-farm-appium-test-spec.yml  | 
 | 340 | + | 
 | 341 | +      - name: Update the benchmark configs  | 
 | 342 | +        uses: seemethere/upload-artifact-s3@v5  | 
 | 343 | +        with:  | 
 | 344 | +          s3-bucket: gha-artifacts  | 
 | 345 | +          s3-prefix: |  | 
 | 346 | +            ${{ github.repository }}/${{ github.run_id }}/artifacts/benchmark-configs/  | 
 | 347 | +          retention-days: 1  | 
 | 348 | +          if-no-files-found: error  | 
 | 349 | +          path: extension/benchmark/apple/Benchmark/${{ steps.prepare.outputs.benchmark-config-id }}.json  | 
 | 350 | + | 
 | 351 | + | 
347 | 352 |   build-benchmark-app:  | 
348 | 353 |     name: build-benchmark-app  | 
349 | 354 |     uses: pytorch/test-infra/.github/workflows/macos_job.yml@main  | 
 | 
0 commit comments