3030 default : ' 120'
3131 schedule :
3232 - cron : ' 0 22 * * *'
33+
3334permissions :
3435 contents : read
35- env :
36- PCI_DEVICE : ' 8086:12d2,8086:12d2'
37- MARKER : ${{ inputs.marker || 'performance' }}
36+
3837jobs :
3938 run-perf-tests :
4039 runs-on : [self-hosted, perf, sut]
4140 timeout-minutes : 720
4241 steps :
4342 - name : Harden-Runner
44- uses : step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
43+ uses : step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
4544 with :
4645 egress-policy : audit
4746 - name : Set current date
4847 run : echo "CURRENT_DATE=$(date '+%y%m%d-%H%M%S')" >> "$GITHUB_ENV"
49- - name : Fix ownership of root-owned files
50- run : sudo chown -R $(id -u):$(id -g) "$GITHUB_WORKSPACE" || true
5148 - name : Checkout MTL
5249 uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
5350 with :
5451 ref : ' ${{ inputs.branch || github.ref }}'
5552 fetch-depth : 0
5653 - name : Overlay test framework from workflow branch
57- if : ${{ inputs.branch != '' }}
54+ if : inputs.branch != ''
5855 run : |
5956 echo "MTL source: ${{ inputs.branch }}"
6057 echo "Test framework: ${{ github.sha }} (${{ github.ref_name }})"
6158 git checkout ${{ github.sha }} -- tests/validation/ .github/
6259 - uses : ./.github/actions/build
6360 - name : Build MTL on second host via SSH
6461 run : |
65- CLIENT_IP="${{ secrets.PERF_CLIENT_IP }}"
66- CLIENT_USER="${{ secrets.RUNNER_USERNAME }}"
67- CLIENT_MTL="${{ secrets.PERF_CLIENT_MTL_PATH }}"
68- BRANCH="${{ inputs.branch || github.ref }}"
69- ssh -o StrictHostKeyChecking=no "${CLIENT_USER}@${CLIENT_IP}" bash -s -- \
70- "${CLIENT_MTL}" "${BRANCH}" <<'REMOTE_SCRIPT'
62+ ssh -o StrictHostKeyChecking=no \
63+ "${{ secrets.RUNNER_USERNAME }}@${{ secrets.PERF_CLIENT_IP }}" bash -s -- \
64+ "${{ secrets.PERF_CLIENT_MTL_PATH }}" "${{ inputs.branch || github.ref }}" <<'REMOTE_SCRIPT'
7165 set -ex
7266 MTL_DIR="$1"
73- BRANCH="$2 "
67+ BRANCH="${2#refs/heads/} "
7468 if [ ! -d "${MTL_DIR}/.git" ]; then
7569 git clone https://github.com/OpenVisualCloud/Media-Transport-Library.git "${MTL_DIR}"
7670 fi
7973 git fetch --all --prune
8074 git checkout "${BRANCH}" 2>/dev/null || git checkout "origin/${BRANCH}" 2>/dev/null || true
8175 git reset --hard "origin/${BRANCH}" 2>/dev/null || git reset --hard "${BRANCH}"
76+ sudo killall -SIGKILL gtest.sh KahawaiTest KahawaiUfdTest KahawaiUplTest ffmpeg RxTxApp 2>/dev/null || true
77+ sudo killall -SIGINT pytest MtlManager phc2sys ptp4l netsniff-ng 2>/dev/null || true
78+ sleep 2
79+ export CICD_BUILD=1
80+ export SETUP_BUILD_AND_INSTALL_DPDK=0
81+ export SETUP_BUILD_AND_INSTALL_ICE_DRIVER=0
82+ export SETUP_BUILD_AND_INSTALL_EBPF_XDP=0
83+ export SETUP_BUILD_AND_INSTALL_GPU_DIRECT=0
8284 export MTL_BUILD_AND_INSTALL=1
8385 export ECOSYSTEM_BUILD_AND_INSTALL_FFMPEG_PLUGIN=1
8486 export ECOSYSTEM_BUILD_AND_INSTALL_GSTREAMER_PLUGIN=1
9698 run : |
9799 runner_name="${{ runner.name }}"
98100 echo "SESSION_ID=${runner_name##*-}" >> "$GITHUB_ENV"
99- - name : Detect SSH key path
100- run : |
101- # Try common key locations for the configured user and root
102- FOUND=""
103- USER_HOME="/home/${{ secrets.RUNNER_USERNAME }}"
104- for key in \
105- "$USER_HOME/.ssh/id_ed25519" \
106- "$USER_HOME/.ssh/id_rsa" \
107- "$USER_HOME/.ssh/id_ecdsa" \
108- "$HOME/.ssh/id_ed25519" \
109- "$HOME/.ssh/id_rsa" \
110- "$HOME/.ssh/id_ecdsa" \
111- "/root/.ssh/id_ed25519" \
112- "/root/.ssh/id_rsa"; do
113- if [ -f "$key" ]; then
114- echo "SSH_KEY_PATH=$key" >> "$GITHUB_ENV"
115- echo "Found SSH key: $key"
116- FOUND="$key"
117- break
118- fi
119- done
120- if [ -z "$FOUND" ]; then
121- echo "::warning::No SSH key found. Listing available keys:"
122- ls -la "$USER_HOME/.ssh/" 2>/dev/null || echo " $USER_HOME/.ssh/ does not exist"
123- ls -la "$HOME/.ssh/" 2>/dev/null || echo " $HOME/.ssh/ does not exist"
124- ls -la /root/.ssh/ 2>/dev/null || echo " /root/.ssh/ does not exist"
125- fi
101+ - name : Set PCI device
102+ run : echo "PCI_DEVICE=${{ secrets.PERF_PCI_DEVICE || '8086:12d2,8086:12d2' }}" >> "$GITHUB_ENV"
126103 - name : Generate pytest configuration files
127104 working-directory : ./tests/validation/configs
128105 run : |
@@ -134,7 +111,7 @@ jobs:
134111 --pci_device "${{ env.PCI_DEVICE }}" \
135112 --ip_address "${{ secrets.PERF_SUT_IP }}" \
136113 --username "${{ secrets.RUNNER_USERNAME }}" \
137- --key_path "${{ env.SSH_KEY_PATH }} " \
114+ --key_path "/home/$USER/.ssh/id_ed25519 " \
138115 --second_host_ip "${{ secrets.PERF_CLIENT_IP }}" \
139116 --second_host_pci_device "${{ env.PCI_DEVICE }}" \
140117 --second_host_mtl_path "${{ secrets.PERF_CLIENT_MTL_PATH }}" \
@@ -145,19 +122,17 @@ jobs:
145122 ssh-keyscan -H "${{ secrets.PERF_SUT_IP }}" >> ~/.ssh/known_hosts 2>/dev/null
146123 ssh-keyscan -H "${{ secrets.PERF_CLIENT_IP }}" >> ~/.ssh/known_hosts 2>/dev/null
147124 chmod 644 ~/.ssh/known_hosts
125+ - name : Export workflow tag for PCAP naming
126+ run : echo "MTL_GITHUB_WORKFLOW=${{ github.workflow }}" >> "$GITHUB_ENV"
148127 - name : Start MtlManager
149- run : |
150- echo "MTL_GITHUB_WORKFLOW=${{ github.workflow }}" >> "$GITHUB_ENV"
151- - name : Start MtlManager
152- run : |
153- sudo MtlManager &
128+ run : sudo MtlManager &
154129 - name : Run performance tests
155130 working-directory : ./tests/validation
156131 run : |
157132 ./.venv/bin/python3 -m pytest \
158133 --test_config=./configs/test_config.yaml \
159134 --topology_config=./configs/topology_config.yaml \
160- -m "${{ env.MARKER }}" \
135+ -m "${{ inputs.marker || 'performance' }}" \
161136 ${{ inputs.test_filter && format('-k "{0}"', inputs.test_filter) || '' }} \
162137 --template=html/index.html \
163138 --report=./report.html \
@@ -183,7 +158,7 @@ jobs:
183158 path : |
184159 ./tests/validation/report.html
185160 ./tests/validation/performance_report.html
186- - name : Clean up root-owned files
161+ - name : Clean up
187162 if : always()
188163 run : |
189164 sudo pkill -f MtlManager || true
0 commit comments