[SWDEV-500518] Updated Workflow (#111)
Signed-off-by: Justin Williams <Justin.Williams@amd.com>
[ROCm/amdsmi commit: 99e57f6269]
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
2e9c065bbc
Коммит
77f316ee7d
поставляемый
+126
-48
@@ -2,11 +2,10 @@ name: Build and Install AMDSMI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- amd-staging
|
||||
branches: [amd-staging, amd-mainline]
|
||||
push:
|
||||
branches:
|
||||
- amd-staging
|
||||
branches: [amd-staging, amd-mainline]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build-and-install-deb:
|
||||
@@ -19,6 +18,7 @@ jobs:
|
||||
os:
|
||||
- Ubuntu20
|
||||
- Ubuntu22
|
||||
- Debian10
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
@@ -34,10 +34,19 @@ jobs:
|
||||
if: matrix.os == 'Ubuntu22'
|
||||
run: echo "DOCKER_IMAGE=${{ secrets.UBUNTU22_DOCKER_IMAGE }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Build and Install on ${{ matrix.os }}
|
||||
- name: Set Docker Image for Debian10
|
||||
if: matrix.os == 'Debian10'
|
||||
run: echo "DOCKER_IMAGE=${{ secrets.DEBIAN10_DOCKER_IMAGE }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Generate Timestamp
|
||||
id: timestamp
|
||||
run: echo "TIMESTAMP=$(date +'%b %d %Y %-I:%M %p')" >> $GITHUB_ENV
|
||||
|
||||
- name: Build, Install & Uninstall on ${{ matrix.os }} at ${{ env.TIMESTAMP }}
|
||||
run: |
|
||||
# Define a host directory for test results
|
||||
HOST_TEST_RESULTS_DIR=/tmp/test-results
|
||||
|
||||
# Ensure the host directory exists
|
||||
mkdir -p $HOST_TEST_RESULTS_DIR
|
||||
docker run --privileged -v ${{ github.workspace }}:/src:rw -v $HOST_TEST_RESULTS_DIR:/shared:rw $DOCKER_IMAGE /bin/bash -c "
|
||||
@@ -57,77 +66,104 @@ jobs:
|
||||
make package
|
||||
|
||||
# Install AMD-SMI
|
||||
apt update
|
||||
apt install -y \$BUILD_FOLDER/\$DEB_BUILD
|
||||
ln -s /opt/rocm/bin/amd-smi /usr/local/bin
|
||||
|
||||
# Check If Installed
|
||||
echo 'Listing installed packages:'
|
||||
amd-smi version
|
||||
python3 -m pip list | grep amd
|
||||
python3 -m pip list | grep pip
|
||||
python3 -m pip list | grep setuptools
|
||||
echo 'Completed build and installation on ${{ matrix.os }}'
|
||||
|
||||
# Create the directory for test results
|
||||
mkdir -p /shared/test-results/test-results-${{ matrix.os }}
|
||||
mkdir -p /shared/test-results-${{ matrix.os }}
|
||||
|
||||
# Parse and explain test results
|
||||
parse_and_explain() {
|
||||
local log_file=\$1
|
||||
local test_name=\$2
|
||||
|
||||
if grep -q 'FAILED' \"\$log_file\"; then
|
||||
echo \"\$test_name failed. Check the log file for details: \$log_file\"
|
||||
# Add more specific parsing and explanations here
|
||||
if grep -q 'specific error message' \"\$log_file\"; then
|
||||
echo 'Explanation: Specific error message encountered.'
|
||||
fi
|
||||
else
|
||||
echo \"\$test_name passed.\"
|
||||
fi
|
||||
}
|
||||
|
||||
# Run AMDSMI Tests
|
||||
echo 'Running AMDSMI Tests'
|
||||
/opt/rocm/share/amd_smi/tests/amdsmitst > /shared/test-results/test-results-${{ matrix.os }}/amdsmi_tests.log
|
||||
/opt/rocm/share/amd_smi/tests/amdsmitst > /shared/test-results-${{ matrix.os }}/amdsmi_tests.log 2>&1
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/amdsmi_tests.log 'AMDSMI Tests'
|
||||
echo 'Completed AMDSMI Testing'
|
||||
|
||||
# Run Python Unit Tests
|
||||
echo 'Running Python Unit Testing'
|
||||
cd /opt/rocm/share/amd_smi/tests/python_unittest
|
||||
./integration_test.py -v > /shared/test-results/test-results-${{ matrix.os }}/integration_test_output.txt 2>&1
|
||||
./unit_tests.py -v > /shared/test-results/test-results-${{ matrix.os }}/unit_test_output.txt 2>&1
|
||||
./integration_test.py -v > /shared/test-results-${{ matrix.os }}/integration_test_output.txt 2>&1
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/integration_test_output.txt 'Python Integration Tests'
|
||||
./unit_tests.py -v > /shared/test-results-${{ matrix.os }}/unit_test_output.txt 2>&1
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/unit_test_output.txt 'Python Unit Tests'
|
||||
echo 'Completed Python Unit Testing'
|
||||
|
||||
# Run Build Testing
|
||||
# Run Build Testing
|
||||
echo 'Running Build Tests'
|
||||
cd /src/build/example
|
||||
./amd_smi_drm_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_drm_ex.log || echo 'amd_smi_drm_ex failed'
|
||||
./amd_smi_esmi_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log || echo 'amd_smi_esmi_ex failed'
|
||||
./amd_smi_nodrm_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo 'amd_smi_nodrm_ex failed'
|
||||
./amd_smi_drm_ex > /shared/test-results-${{ matrix.os }}/amd_smi_drm_ex.log 2>&1 || echo 'amd_smi_drm_ex failed'
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/amd_smi_drm_ex.log 'DRM Example Test'
|
||||
./amd_smi_esmi_ex > /shared/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log 2>&1 || echo 'amd_smi_esmi_ex failed'
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log 'ESMI Example Test'
|
||||
./amd_smi_nodrm_ex > /shared/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log 2>&1 || echo 'amd_smi_nodrm_ex failed'
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log 'No DRM Example Test'
|
||||
echo 'Completed Build Testing'
|
||||
|
||||
# Uninstall AMD-SMI
|
||||
echo 'Uninstalling AMD-SMI'
|
||||
sudo apt remove -y amd-smi-lib
|
||||
sudo rm -f /usr/local/bin/amd-smi
|
||||
echo 'Successfully Completed uninstallation on ${{ matrix.os }}'
|
||||
"
|
||||
|
||||
# Artifacts disabled for now
|
||||
# - name: Upload Test Results
|
||||
# uses: actions/upload-artifact@v4
|
||||
# with:
|
||||
# name: test-results-${{ matrix.os }}
|
||||
# path: /tmp/test-results/test-results/test-results-${{ matrix.os }}
|
||||
# if-no-files-found: warn
|
||||
- name: Debug Test Results Directory
|
||||
run: |
|
||||
echo "Checking test results directory for ${{ matrix.os }}"
|
||||
ls -R /tmp/test-results || echo "Test results directory not found"
|
||||
|
||||
- name: AMDSMI Test Results
|
||||
run: |
|
||||
echo "Displaying AMDSMI test results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amdsmi_tests.log || echo "No amdsmi test results found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/amdsmi_tests.log || echo "No amdsmi test results found for ${{ matrix.os }}"
|
||||
|
||||
- name: Integration Test Results
|
||||
run: |
|
||||
echo "Displaying Integration test results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/integration_test_output.txt || echo "No integration test results found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/integration_test_output.txt || echo "No integration test results found for ${{ matrix.os }}"
|
||||
|
||||
- name: Unit Test Results
|
||||
run: |
|
||||
echo "Displaying Unit Test Results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/unit_test_output.txt || echo "No unit test results found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/unit_test_output.txt || echo "No unit test results found for ${{ matrix.os }}"
|
||||
|
||||
- name: DRM EX Test Results
|
||||
run: |
|
||||
echo "Displaying DRM EX Test Results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_drm_ex.log || echo "No amd_smi_drm_ex.log found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/amd_smi_drm_ex.log || echo "No amd_smi_drm_ex.log found for ${{ matrix.os }}"
|
||||
|
||||
- name: NO-DRM EX Test Results
|
||||
run: |
|
||||
echo "Displaying NO-DRM EX Test Results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo "No amd_smi_nodrm_ex.log found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo "No amd_smi_nodrm_ex.log found for ${{ matrix.os }}"
|
||||
|
||||
- name: ESMI EX Test Results
|
||||
run: |
|
||||
echo "Displaying ESMI EX Test Results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log || echo "No amd_smi_esmi_ex.log found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log || echo "No amd_smi_esmi_ex.log found for ${{ matrix.os }}"
|
||||
|
||||
|
||||
build-and-install-rpm:
|
||||
@@ -181,7 +217,12 @@ jobs:
|
||||
run: |
|
||||
echo "DOCKER_IMAGE=${{ secrets.ALMALINUX8_DOCKER_IMAGE }}" >> $GITHUB_ENV
|
||||
echo "PACKAGE_MANAGER=dnf" >> $GITHUB_ENV
|
||||
- name: Build and Install on ${{ matrix.os }}
|
||||
|
||||
- name: Generate Timestamp
|
||||
id: timestamp
|
||||
run: echo "TIMESTAMP=$(date +'%b %d %Y %-I:%M %p')" >> $GITHUB_ENV
|
||||
|
||||
- name: Build and Install on ${{ matrix.os }} at ${{ env.TIMESTAMP }}
|
||||
run: |
|
||||
# Define a host directory for test results
|
||||
HOST_TEST_RESULTS_DIR=/tmp/test-results
|
||||
@@ -223,69 +264,106 @@ jobs:
|
||||
|
||||
# Check If Installed
|
||||
echo 'Listing installed packages:'
|
||||
amd-smi version
|
||||
python3 -m pip list | grep amd
|
||||
python3 -m pip list | grep pip
|
||||
python3 -m pip list | grep setuptools
|
||||
echo 'Completed build and installation on ${{ matrix.os }}'
|
||||
|
||||
# Create the directory for test results
|
||||
mkdir -p /shared/test-results/test-results-${{ matrix.os }}
|
||||
mkdir -p /shared/test-results-${{ matrix.os }}
|
||||
|
||||
# Parse and explain test results
|
||||
parse_and_explain() {
|
||||
local log_file=\$1
|
||||
local test_name=\$2
|
||||
|
||||
if grep -q 'FAILED' \"\$log_file\"; then
|
||||
echo \"\$test_name failed. Check the log file for details: \$log_file\"
|
||||
# Add more specific parsing and explanations here
|
||||
if grep -q 'specific error message' \"\$log_file\"; then
|
||||
echo 'Explanation: Specific error message encountered.'
|
||||
fi
|
||||
else
|
||||
echo \"\$test_name passed.\"
|
||||
fi
|
||||
}
|
||||
|
||||
# Run AMDSMI Tests
|
||||
echo 'Running AMDSMI Tests'
|
||||
/opt/rocm/share/amd_smi/tests/amdsmitst > /shared/test-results/test-results-${{ matrix.os }}/amdsmi_tests.log
|
||||
/opt/rocm/share/amd_smi/tests/amdsmitst > /shared/test-results-${{ matrix.os }}/amdsmi_tests.log 2>&1
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/amdsmi_tests.log 'AMDSMI Tests'
|
||||
echo 'Completed AMDSMI Testing'
|
||||
|
||||
# Run Python Unit Tests
|
||||
echo 'Running Python Unit Testing'
|
||||
cd /opt/rocm/share/amd_smi/tests/python_unittest
|
||||
./integration_test.py -v > /shared/test-results/test-results-${{ matrix.os }}/integration_test_output.txt 2>&1
|
||||
./unit_tests.py -v > /shared/test-results/test-results-${{ matrix.os }}/unit_test_output.txt 2>&1
|
||||
./integration_test.py -v > /shared/test-results-${{ matrix.os }}/integration_test_output.txt 2>&1
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/integration_test_output.txt 'Python Integration Tests'
|
||||
./unit_tests.py -v > /shared/test-results-${{ matrix.os }}/unit_test_output.txt 2>&1
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/unit_test_output.txt 'Python Unit Tests'
|
||||
echo 'Completed Python Unit Testing'
|
||||
|
||||
# Run Build Testing
|
||||
# Run Build Testing
|
||||
echo 'Running Build Tests'
|
||||
cd /src/build/example
|
||||
./amd_smi_drm_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_drm_ex.log || echo 'amd_smi_drm_ex failed'
|
||||
./amd_smi_esmi_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log || echo 'amd_smi_esmi_ex failed'
|
||||
./amd_smi_nodrm_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo 'amd_smi_nodrm_ex failed'
|
||||
./amd_smi_drm_ex > /shared/test-results-${{ matrix.os }}/amd_smi_drm_ex.log 2>&1 || echo 'amd_smi_drm_ex failed'
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/amd_smi_drm_ex.log 'DRM Example Test'
|
||||
./amd_smi_esmi_ex > /shared/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log 2>&1 || echo 'amd_smi_esmi_ex failed'
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log 'ESMI Example Test'
|
||||
./amd_smi_nodrm_ex > /shared/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log 2>&1 || echo 'amd_smi_nodrm_ex failed'
|
||||
parse_and_explain /shared/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log 'No DRM Example Test'
|
||||
echo 'Completed Build Testing'
|
||||
|
||||
# Uninstall AMD-SMI
|
||||
echo 'Uninstalling AMD-SMI'
|
||||
case '$PACKAGE_MANAGER' in
|
||||
zypper)
|
||||
zypper remove -y amd-smi-lib
|
||||
;;
|
||||
dnf)
|
||||
dnf remove -y amd-smi-lib
|
||||
;;
|
||||
*)
|
||||
echo 'Unsupported package manager: $PACKAGE_MANAGER'
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
rm -f /usr/local/bin/amd-smi
|
||||
echo 'Successfully Completed uninstallation on ${{ matrix.os }}'
|
||||
"
|
||||
|
||||
# Artifacts disabled for now
|
||||
# - name: Upload Test Results
|
||||
# uses: actions/upload-artifact@v4
|
||||
# with:
|
||||
# name: test-results-${{ matrix.os }}
|
||||
# path: /tmp/test-results/test-results/test-results-${{ matrix.os }}
|
||||
# if-no-files-found: warn
|
||||
- name: Debug Test Results Directory
|
||||
run: |
|
||||
echo "Checking test results directory for ${{ matrix.os }}"
|
||||
ls -R /tmp/test-results || echo "Test results directory not found"
|
||||
|
||||
- name: AMDSMI Test Results
|
||||
run: |
|
||||
echo "Displaying AMDSMI test results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amdsmi_tests.log || echo "No amdsmi test results found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/amdsmi_tests.log || echo "No amdsmi test results found for ${{ matrix.os }}"
|
||||
|
||||
- name: Python Integration Test Results
|
||||
run: |
|
||||
echo "Displaying Integration test results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/integration_test_output.txt || echo "No integration test results found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/integration_test_output.txt || echo "No integration test results found for ${{ matrix.os }}"
|
||||
|
||||
- name: Python Unit Test Results
|
||||
run: |
|
||||
echo "Displaying Unit Test Results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/unit_test_output.txt || echo "No unit test results found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/unit_test_output.txt || echo "No unit test results found for ${{ matrix.os }}"
|
||||
|
||||
- name: DRM EX Test Results
|
||||
run: |
|
||||
echo "Displaying DRM EX Test Results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_drm_ex.log || echo "No amd_smi_drm_ex.log found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/amd_smi_drm_ex.log || echo "No amd_smi_drm_ex.log found for ${{ matrix.os }}"
|
||||
|
||||
- name: NO-DRM EX Test Results
|
||||
run: |
|
||||
echo "Displaying NO-DRM EX Test Results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo "No amd_smi_nodrm_ex.log found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo "No amd_smi_nodrm_ex.log found for ${{ matrix.os }}"
|
||||
|
||||
- name: ESMI EX Test Results
|
||||
run: |
|
||||
echo "Displaying ESMI EX Test Results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log || echo "No amd_smi_esmi_ex.log found for ${{ matrix.os }}"
|
||||
cat /tmp/test-results/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log || echo "No amd_smi_esmi_ex.log found for ${{ matrix.os }}"
|
||||
|
||||
Ссылка в новой задаче
Block a user