| # This workflow runs all of the very-long tests within main.py |
| |
| name: Weekly Tests |
| |
| on: |
| # Runs every Sunday from 7AM UTC |
| schedule: |
| - cron: '00 7 * * 6' |
| # Allows us to manually start workflow for testing |
| workflow_dispatch: |
| |
| jobs: |
| build-gem5: |
| runs-on: [self-hosted, linux, x64, build] |
| container: gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest |
| outputs: |
| build-name: ${{ steps.artifact-name.outputs.name }} |
| steps: |
| - uses: actions/checkout@v3 |
| with: |
| # Scheduled workflows run on the default branch by default. We |
| # therefore need to explicitly checkout the develop branch. |
| ref: develop |
| - id: artifact-name |
| run: echo "name=$(date +"%Y-%m-%d_%H.%M.%S")-ALL" >> $GITHUB_OUTPUT |
| - name: Build gem5 |
| run: | |
| scons build/ALL/gem5.opt -j $(nproc) |
| - uses: actions/upload-artifact@v3 |
| with: |
| name: ${{ steps.artifact-name.outputs.name }} |
| path: build/ALL/gem5.opt |
| retention-days: 5 |
| - run: echo "This job's status is ${{ job.status }}." |
| |
| # start running the very-long tests |
| testlib-very-long-gem5_library_example_tests: |
| runs-on: [self-hosted, linux, x64, run] |
| container: gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest |
| needs: [build-gem5] |
| timeout-minutes: 4320 # 3 days |
| steps: |
| - uses: actions/checkout@v3 |
| with: |
| # Scheduled workflows run on the default branch by default. We |
| # therefore need to explicitly checkout the develop branch. |
| ref: develop |
| - uses: actions/download-artifact@v3 |
| with: |
| name: ${{needs.build-gem5.outputs.build-name}} |
| path: build/ALL |
| - run: chmod u+x build/ALL/gem5.opt |
| - name: very-long gem5_library_example_tests |
| working-directory: ${{ github.workspace }}/tests |
| run: ./main.py run gem5/gem5_library_example_tests --length very-long --skip-build -vv -t $(nproc) |
| - name: create zip of results |
| if: success() || failure() |
| run: | |
| apt-get -y install zip |
| zip -r output.zip tests/testing-results |
| - name: upload zip |
| if: success() || failure() |
| uses: actions/upload-artifact@v3 |
| env: |
| MY_STEP_VAR: ${{github.job}}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} |
| with: |
| name: ${{ env.MY_STEP_VAR }} |
| path: output.zip |
| retention-days: 7 |
| - run: echo "This job's status is ${{ job.status }}." |
| |
| |
| testlib-long-gem5-resources: |
| runs-on: [self-hosted, linux, x64, run] |
| container: gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest |
| needs: [build-gem5] |
| timeout-minutes: 4320 # 3 days |
| steps: |
| - uses: actions/checkout@v3 |
| with: |
| # Scheduled workflows run on the default branch by default. We |
| # therefore need to explicitly checkout the develop branch. |
| ref: develop |
| - uses: actions/download-artifact@v3 |
| with: |
| name: ${{needs.build-gem5.outputs.build-name}} |
| path: build/ALL |
| - run: chmod u+x build/ALL/gem5.opt |
| - name: very-long gem5-resources tests |
| working-directory: ${{ github.workspace }}/tests |
| run: ./main.py run gem5/gem5-resources --length very-long --skip-build -vv -t $(nproc) |
| - name: create zip of results |
| if: success() || failure() |
| run: | |
| apt-get -y install zip |
| zip -r output.zip tests/testing-results |
| - name: upload zip |
| if: success() || failure() |
| uses: actions/upload-artifact@v3 |
| env: |
| MY_STEP_VAR: ${{github.job}}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} |
| with: |
| name: ${{ env.MY_STEP_VAR }} |
| path: output.zip |
| retention-days: 7 |
| - run: echo "This job's status is ${{ job.status }}." |
| |
| testlib-very-long-parsec-benchmarks: |
| runs-on: [self-hosted, linux, x64, run] |
| container: gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest |
| needs: build-gem5 |
| timeout-minutes: 4320 # 3 days |
| steps: |
| - uses: actions/checkout@v3 |
| with: |
| # Scheduled workflows run on the default branch by default. We |
| # therefore need to explicitly checkout the develop branch. |
| ref: develop |
| - uses: actions/download-artifact@v3 |
| with: |
| name: ${{needs.build-gem5.outputs.build-name}} |
| path: build/ALL |
| - run: chmod u+x build/ALL/gem5.opt |
| - name: very-long x86-boot-tests |
| working-directory: ${{ github.workspace }}/tests |
| run: ./main.py run gem5/x86-boot-tests --length very-long --skip-build -vv -t $(nproc) |
| - name: create zip of results |
| if: success() || failure() |
| run: | |
| apt-get -y install zip |
| zip -r output.zip tests/testing-results |
| - name: upload zip |
| if: success() || failure() |
| uses: actions/upload-artifact@v3 |
| env: |
| MY_STEP_VAR: ${{github.job}}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} |
| with: |
| name: ${{ env.MY_STEP_VAR }} |
| path: output.zip |
| retention-days: 7 |
| - run: echo "This job's status is ${{ job.status }}." |
| |
| testlib-very-long-x86-boot-tests: |
| runs-on: [self-hosted, linux, x64, run] |
| container: gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest |
| needs: build-gem5 |
| timeout-minutes: 4320 # 3 days |
| steps: |
| - uses: actions/checkout@v3 |
| with: |
| # Scheduled workflows run on the default branch by default. We |
| # therefore need to explicitly checkout the develop branch. |
| ref: develop |
| - uses: actions/download-artifact@v3 |
| with: |
| name: ${{needs.build-gem5.outputs.build-name}} |
| path: build/ALL |
| - run: chmod u+x build/ALL/gem5.opt |
| - name: very-long x86-boot-tests |
| working-directory: ${{ github.workspace }}/tests |
| run: ./main.py run gem5/x86-boot-tests --length very-long --skip-build -vv -t $(nproc) |
| - name: create zip of results |
| if: success() || failure() |
| run: | |
| apt-get -y install zip |
| zip -r output.zip tests/testing-results |
| - name: upload zip |
| if: success() || failure() |
| uses: actions/upload-artifact@v3 |
| env: |
| MY_STEP_VAR: ${{github.job}}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} |
| with: |
| name: ${{ env.MY_STEP_VAR }} |
| path: output.zip |
| retention-days: 7 |
| - run: echo "This job's status is ${{ job.status }}." |