only clean/checkout/download artifacts on first attempt
This commit is contained in:
		
							
								
								
									
										24
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -199,26 +199,20 @@ jobs: | ||||
|     runs-on: [self-hosted, X64, hathach, hardware-in-the-loop] | ||||
|     steps: | ||||
|       - name: Clean workspace | ||||
|         if: github.run_attempt == '1' | ||||
|         run: | | ||||
|           # Skip boards that passed with previous run | ||||
|           if [ -f ${{ env.HIL_JSON }}.skip ]; then | ||||
|             SKIP_ARGS=$(cat "${HIL_JSON}.skip") | ||||
|           else | ||||
|             SKIP_ARGS="" | ||||
|           fi | ||||
|           echo "SKIP_ARGS=$SKIP_ARGS" | ||||
|           echo "SKIP_ARGS=$SKIP_ARGS" >> $GITHUB_ENV | ||||
|  | ||||
|           echo "Cleaning up previous run" | ||||
|           echo "Cleaning up for the first run" | ||||
|           rm -rf "${{ github.workspace }}" | ||||
|           mkdir -p "${{ github.workspace }}" | ||||
|  | ||||
|       - name: Checkout TinyUSB | ||||
|         if: github.run_attempt == '1' | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           sparse-checkout: test/hil | ||||
|  | ||||
|       - name: Download Artifacts | ||||
|         if: github.run_attempt == '1' | ||||
|         uses: actions/download-artifact@v4 | ||||
|         with: | ||||
|           path: cmake-build | ||||
| @@ -227,7 +221,15 @@ jobs: | ||||
|       - name: Test on actual hardware | ||||
|         run: | | ||||
|           ls cmake-build/ | ||||
|           python3 test/hil/hil_test.py ${{ env.HIL_JSON }} $SKIP_ARGS | ||||
|  | ||||
|           # Skip boards that passed with previous run, file is generated by hil_test.py | ||||
|           SKIP_BOARDS="" | ||||
|           if [ -f ${{ env.HIL_JSON }}.skip ]; then | ||||
|             SKIP_BOARDS=$(cat "${HIL_JSON}.skip") | ||||
|           fi | ||||
|           echo "SKIP_BOARDS=$SKIP_BOARDS" | ||||
|  | ||||
|           python3 test/hil/hil_test.py ${{ env.HIL_JSON }} $SKIP_BOARDS | ||||
|  | ||||
|   # --------------------------------------- | ||||
|   # Hardware in the loop (HIL) | ||||
|   | ||||
| @@ -533,7 +533,7 @@ def test_example(board, f1, example): | ||||
|     if not os.path.exists(fw_dir): | ||||
|         fw_dir = f'{TINYUSB_ROOT}/examples/cmake-build-{name}{f1_str}/{example}' | ||||
|     fw_name = f'{fw_dir}/{os.path.basename(example)}' | ||||
|     print(f'{name+f1_str:40} {example:30} ... ', end='') | ||||
|     print(f'{name+f1_str:40} {example:30} ...', end='') | ||||
|  | ||||
|     if not os.path.exists(fw_dir) or not (os.path.exists(f'{fw_name}.elf') or os.path.exists(f'{fw_name}.bin')): | ||||
|         print('Skip (no binary)') | ||||
| @@ -544,29 +544,30 @@ def test_example(board, f1, example): | ||||
|  | ||||
|     # flash firmware. It may fail randomly, retry a few times | ||||
|     max_rety = 3 | ||||
|     start_s = time.time() | ||||
|     for i in range(max_rety): | ||||
|         ret = globals()[f'flash_{board["flasher"]["name"].lower()}'](board, fw_name) | ||||
|         if ret.returncode == 0: | ||||
|             try: | ||||
|                 globals()[f'test_{example.replace("/", "_")}'](board) | ||||
|                 print('OK') | ||||
|                 print('  OK', end='') | ||||
|                 break | ||||
|             except Exception as e: | ||||
|                 if i == max_rety - 1: | ||||
|                     err_count += 1 | ||||
|                     print(STATUS_FAILED) | ||||
|                     print(f'  {e}') | ||||
|                     print(f'{STATUS_FAILED}: {e}') | ||||
|                 else: | ||||
|                     print() | ||||
|                     print(f'  Test failed: {e}, retry {i+2}/{max_rety}') | ||||
|                     time.sleep(1) | ||||
|                     print(f'\n  Test failed: {e}, retry {i+2}/{max_rety}', end='') | ||||
|                     time.sleep(0.5) | ||||
|         else: | ||||
|             print(f'Flashing failed, retry {i+2}/{max_rety}') | ||||
|             time.sleep(1) | ||||
|             print(f'\n  Flash failed, retry {i+2}/{max_rety}', end='') | ||||
|             time.sleep(0.5) | ||||
|  | ||||
|     if ret.returncode != 0: | ||||
|         err_count += 1 | ||||
|         print(f'Flash {STATUS_FAILED}') | ||||
|         print(f'  Flash {STATUS_FAILED}', end='') | ||||
|  | ||||
|     print(f'  in {time.time() - start_s:.1f}s') | ||||
|  | ||||
|     return err_count | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 hathach
					hathach