Skip to content

Run server startup on every test #51

Run server startup on every test

Run server startup on every test #51

name: Build and Test
on:
push:
jobs:
build-image:
runs-on:
- in-service
- builder
outputs:
docker-image: ${{ steps.build.outputs.docker-image }}
steps:
- name: Fix permissions
shell: bash
run: sudo chown ubuntu:ubuntu -R $(pwd)
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker images and output the image name
id: build
shell: bash
run: |
# Output the image name
set pipefail
.github/build-docker-images.sh | tee docker.log
DOCKER_CI_IMAGE=$(tail -n 1 docker.log)
echo "DOCKER_CI_IMAGE $DOCKER_CI_IMAGE"
echo "docker-image=$DOCKER_CI_IMAGE" >> "$GITHUB_OUTPUT"
# build-ttmlir:
# needs: build-image
# timeout-minutes: 120
# strategy:
# fail-fast: false
# matrix:
# build: [
# {runs-on: ubuntu-latest, enable_perf: OFF, name: "run", ttrt_flags: ""},
# {runs-on: ubuntu-latest, enable_perf: ON, name: "perf", ttrt_flags: ""},
# ]
# name: Build tt-mlir
# runs-on: ${{ matrix.build.runs-on }}
# container:
# image: ${{ needs.build-image.outputs.docker-image }}
# steps:
# - uses: actions/checkout@v4
# with:
# fetch-depth: 0
# - name: Set reusable strings
# id: strings
# shell: bash
# run: |
# echo "work-dir=$(pwd)" >> "$GITHUB_OUTPUT"
# echo "build-output-dir=$(pwd)/build" >> "$GITHUB_OUTPUT"
# echo "install-output-dir=$(pwd)/install" >> "$GITHUB_OUTPUT"
# - name: Git safe dir
# run: git config --global --add safe.directory ${{ steps.strings.outputs.work-dir }}
# - name: ccache
# uses: hendrikmuhs/ccache-action@v1.2
# with:
# create-symlink: true
# key: ${{ matrix.build.runs-on }}-run-ON-perf-${{ matrix.build.enable_perf }}-${{ env.SDK_VERSION }}
# # Build project
# - name: Configure CMake
# shell: bash
# run: |
# source env/activate
# cmake -G Ninja \
# -B ${{ steps.strings.outputs.build-output-dir }} \
# -DCMAKE_CXX_COMPILER=clang++-17 \
# -DCMAKE_C_COMPILER=clang-17 \
# -DCMAKE_BUILD_TYPE=Release \
# -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.install-output-dir }} \
# -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
# -DTTMLIR_ENABLE_RUNTIME=ON \
# -DTTMLIR_ENABLE_RUNTIME_TESTS=ON \
# -DTT_RUNTIME_ENABLE_PERF_TRACE=${{ matrix.build.enable_perf }} \
# -DTTMLIR_ENABLE_STABLEHLO=ON \
# -S ${{ steps.strings.outputs.work-dir }}
# - name: Build
# shell: bash
# run: |
# source env/activate
# cmake --build ${{ steps.strings.outputs.build-output-dir }}
# cmake --install ${{ steps.strings.outputs.build-output-dir }} --component Test
# # - name: Lint
# # shell: bash
# # if: matrix.build.enable_perf == 'OFF'
# # run: |
# # source env/activate
# # cmake --build ${{ steps.strings.outputs.build-output-dir }} -- clang-tidy
# - name: Run Test
# shell: bash
# run: |
# source env/activate
# cmake --build ${{ steps.strings.outputs.build-output-dir }} -- check-ttmlir
# - name: Upload Test Report
# uses: actions/upload-artifact@v4
# with:
# name: test-reports-${{ matrix.build.runs-on }}-perf-${{ matrix.build.enable_perf }}
# path: build/test/report.xml
# - name: Show Test Report
# uses: mikepenz/action-junit-report@v4
# if: success() || failure()
# with:
# report_paths: build/test/report.xml
# check_name: MLIR Tests
# # Build and upload ttrt
# - name: Build ttrt
# shell: bash
# run: |
# source env/activate
# cmake --build ${{ steps.strings.outputs.build-output-dir }} -- ttrt
# - name: Upload ttrt whl
# uses: actions/upload-artifact@v4
# with:
# name: ttrt-whl-${{ matrix.build.name }}
# path: build/runtime/tools/python/build/ttrt*.whl
# # This is needed to preserve file permissions
# # https://github.com/actions/upload-artifact?tab=readme-ov-file#permission-loss
# - name: 'Tar install directory'
# shell: bash
# working-directory: ${{ steps.strings.outputs.install-output-dir }}
# run: tar cvf artifact.tar .
# - name: Upload install folder to archive
# uses: actions/upload-artifact@v4
# with:
# name: install-artifacts-${{ matrix.build.name }}
# path: ${{ steps.strings.outputs.install-output-dir }}/artifact.tar
# - name: Get the latest tag
# shell: bash
# run: |
# latest_tag=$(git describe --tags --abbrev=0)
# latest_tag=${latest_tag#v}
# echo "latest_tag=$latest_tag" >> $GITHUB_ENV
# commit_count=$(git rev-list ${{ env.latest_tag }}..HEAD --count)
# echo "commit_count=$commit_count" >> $GITHUB_ENV
# version="${{ env.latest_tag }}.${{ env.commit_count }}"
# echo "version=$version" >> $GITHUB_ENV
# echo $version
# # Run tests on TT hardware
# run-tests:
# timeout-minutes: 30
# needs:
# - build-image
# - build-ttmlir
# strategy:
# fail-fast: false
# matrix:
# build: [
# {runs-on: n150, enable_perf: OFF, name: "run", ttrt_flags: "--non-zero"},
# {runs-on: n150, enable_perf: ON, name: "perf"},
# {runs-on: n300, enable_perf: OFF, name: "run", ttrt_flags: "--non-zero"},
# {runs-on: n300, enable_perf: ON, name: "perf"},
# ]
# runs-on:
# - in-service
# - ${{ matrix.build.runs-on }}
# container:
# image: ${{ needs.build-image.outputs.docker-image }}
# options: --device /dev/tenstorrent/0
# volumes:
# - /dev/hugepages:/dev/hugepages
# - /dev/hugepages-1G:/dev/hugepages-1G
# - /etc/udev/rules.d:/etc/udev/rules.d
# - /lib/modules:/lib/modules
# - /opt/tt_metal_infra/provisioning/provisioning_env:/opt/tt_metal_infra/provisioning/provisioning_env
# steps:
# - uses: actions/checkout@v4
# with:
# fetch-depth: 0
# - name: Set reusable strings
# id: strings
# shell: bash
# run: |
# echo "work-dir=$(pwd)" >> "$GITHUB_OUTPUT"
# echo "build-output-dir=$(pwd)/build" >> "$GITHUB_OUTPUT"
# echo "install-output-dir=$(pwd)/install" >> "$GITHUB_OUTPUT"
# - name: Git safe dir
# run: git config --global --add safe.directory ${{ steps.strings.outputs.work-dir }}
# - name: Use build artifacts
# uses: actions/download-artifact@v4
# with:
# name: install-artifacts-${{ matrix.build.name }}
# path: ${{ steps.strings.outputs.install-output-dir }}
# # This is needed to preserve file permissions
# # https://github.com/actions/upload-artifact?tab=readme-ov-file#permission-loss
# - name: 'Untar install directory'
# shell: bash
# working-directory: ${{ steps.strings.outputs.install-output-dir }}
# run: tar xvf artifact.tar
# - name: Remove existing whls files
# shell: bash
# run: |
# rm -f *.whl
# - name: Download ttrt run whls
# uses: actions/download-artifact@v4
# with:
# name: ttrt-whl-${{ matrix.build.name }}
# - name: Install ttrt run whls
# shell: bash
# run: |
# source env/activate
# pip show ttrt && pip uninstall -y ttrt
# pip install ttrt-${{ env.version }}*.whl --force-reinstall
# - name: Generate system descriptor
# shell: bash
# run: |
# source env/activate
# ttrt query --save-artifacts
# - name: Generate tests
# shell: bash
# run: |
# source env/activate
# export LD_LIBRARY_PATH="${TTMLIR_TOOLCHAIN_DIR}/lib:${LD_LIBRARY_PATH}"
# export SYSTEM_DESC_PATH="${GITHUB_WORKSPACE}/ttrt-artifacts/system_desc.ttsys"
# ln -sf ${{ steps.strings.outputs.install-output-dir }} ${{ steps.strings.outputs.build-output-dir }}
# llvm-lit -sv ${{ steps.strings.outputs.build-output-dir }}/test
# - name: Run functional tests
# shell: bash
# if: matrix.build.enable_perf == 'OFF'
# run: |
# source env/activate
# ttrt ${{ matrix.build.name }} ${{ matrix.build.ttrt_flags }} ${{ steps.strings.outputs.build-output-dir }}/test/ttmlir/Silicon
# - name: Run perf tests
# shell: bash
# if: matrix.build.enable_perf == 'ON'
# run: |
# source env/activate
# ttrt ${{ matrix.build.name }} ${{ matrix.build.ttrt_flags }} ${{ steps.strings.outputs.build-output-dir }}/test/ttmlir/Silicon/TTNN/perf_unit
# - name: Upload ttrt test report
# if: always()
# uses: actions/upload-artifact@v4
# with:
# name: ${{ matrix.build.runs-on }}_${{ matrix.build.name }}_results.json
# path: ${{ matrix.build.name }}_results.json
# - name: Show Test Report
# uses: mikepenz/action-junit-report@v4
# if: success() || failure()
# with:
# report_paths: ttrt_report.xml
# check_name: TTRT ${{ matrix.build.runs-on }} ${{ matrix.build.name }} Tests
# run-ttrt-tests:
# timeout-minutes: 30
# needs:
# - build-image
# - build-ttmlir
# strategy:
# fail-fast: false
# matrix:
# build: [
# {runs-on: n150, enable_perf: ON, name: "perf"},
# ]
# runs-on:
# - in-service
# - ${{ matrix.build.runs-on }}
# container:
# image: ${{ needs.build-image.outputs.docker-image }}
# options: --device /dev/tenstorrent/0
# volumes:
# - /dev/hugepages:/dev/hugepages
# - /dev/hugepages-1G:/dev/hugepages-1G
# - /etc/udev/rules.d:/etc/udev/rules.d
# - /lib/modules:/lib/modules
# - /opt/tt_metal_infra/provisioning/provisioning_env:/opt/tt_metal_infra/provisioning/provisioning_env
# steps:
# - uses: actions/checkout@v4
# with:
# fetch-depth: 0
# - name: Set reusable strings
# id: strings
# shell: bash
# run: |
# echo "work-dir=$(pwd)" >> "$GITHUB_OUTPUT"
# echo "build-output-dir=$(pwd)/build" >> "$GITHUB_OUTPUT"
# echo "install-output-dir=$(pwd)/install" >> "$GITHUB_OUTPUT"
# - name: Git safe dir
# run: git config --global --add safe.directory ${{ steps.strings.outputs.work-dir }}
# - name: Use build artifacts
# uses: actions/download-artifact@v4
# with:
# name: install-artifacts-${{ matrix.build.name }}
# path: ${{ steps.strings.outputs.install-output-dir }}
# # This is needed to preserve file permissions
# # https://github.com/actions/upload-artifact?tab=readme-ov-file#permission-loss
# - name: 'Untar install directory'
# shell: bash
# working-directory: ${{ steps.strings.outputs.install-output-dir }}
# run: tar xvf artifact.tar
# - name: Remove existing whls files
# shell: bash
# run: |
# rm -f *.whl
# - name: Download ttrt run whls
# uses: actions/download-artifact@v4
# with:
# name: ttrt-whl-${{ matrix.build.name }}
# - name: Install ttrt run whls
# shell: bash
# run: |
# source env/activate
# pip show ttrt && pip uninstall -y ttrt
# pip install ttrt-${{ env.version }}*.whl --force-reinstall
# pip install pytest
# - name: Generate system descriptor
# shell: bash
# run: |
# source env/activate
# ttrt query --save-artifacts
# - name: Generate tests
# shell: bash
# run: |
# source env/activate
# export LD_LIBRARY_PATH="${TTMLIR_TOOLCHAIN_DIR}/lib:${LD_LIBRARY_PATH}"
# export SYSTEM_DESC_PATH="${GITHUB_WORKSPACE}/ttrt-artifacts/system_desc.ttsys"
# ln -sf ${{ steps.strings.outputs.install-output-dir }} ${{ steps.strings.outputs.build-output-dir }}
# llvm-lit -sv ${{ steps.strings.outputs.build-output-dir }}/test
# - name: ttrt read tests
# shell: bash
# run: |
# source env/activate
# pytest -ssv runtime/tools/python/test/test_read.py
# - name: ttrt query tests
# shell: bash
# run: |
# source env/activate
# pytest -ssv runtime/tools/python/test/test_query.py
# - name: ttrt check tests
# shell: bash
# run: |
# source env/activate
# pytest -ssv runtime/tools/python/test/test_check.py
# - name: ttrt run tests
# shell: bash
# run: |
# source env/activate
# pytest -ssv runtime/tools/python/test/test_run.py
# - name: ttrt perf tests
# shell: bash
# run: |
# source env/activate
# pytest -ssv runtime/tools/python/test/test_perf.py
build-and-test-explorer:
needs: build-image
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
build: [
{runs-on: n150, enable_perf: ON, name: "perf"},
]
name: Build and test tt-explorer
runs-on: ${{ matrix.build.runs-on }}
container:
image: ${{ needs.build-image.outputs.docker-image }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set reusable strings
id: strings
shell: bash
run: |
echo "work-dir=$(pwd)" >> "$GITHUB_OUTPUT"
echo "build-output-dir=$(pwd)/build" >> "$GITHUB_OUTPUT"
- name: Git safe dir
run: git config --global --add safe.directory ${{ steps.strings.outputs.work-dir }}
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
create-symlink: true
key: ${{ matrix.build.runs-on }}-run-ON-perf-${{ matrix.build.enable_perf }}-${{ env.SDK_VERSION }}
- name: Configure CMake
shell: bash
run: |
source env/activate
cmake -G Ninja \
-B ${{ steps.strings.outputs.build-output-dir }} \
-DCMAKE_CXX_COMPILER=clang++-17 \
-DCMAKE_C_COMPILER=clang-17 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DTTMLIR_ENABLE_RUNTIME=ON \
-DTTMLIR_ENABLE_RUNTIME_TESTS=OFF \
-DTT_RUNTIME_ENABLE_PERF_TRACE=${{ matrix.build.enable_perf }} \
-DTTMLIR_ENABLE_STABLEHLO=OFF \
-S ${{ steps.strings.outputs.work-dir }}
- name: Build tt-explorer
shell: bash
run: |
source env/activate
cmake --build ${{ steps.strings.outputs.build-output-dir }} -- explorer
- name: Run tt-explorer tests
shell: bash
run: |
source env/activate
pytest tools/explorer/test/run_tests.py