@@ -21,17 +21,31 @@ jobs:
2121 id : set-matrix
2222 run : |
2323 if [ "${{ github.event_name }}" == "schedule" ]; then
24- echo "matrix=$(jq -c . < $ {{ github.workspace }}/test/full_versions.json)" >> $GITHUB_OUTPUT
24+ MATRIX_FILE="$ {{ github.workspace }}/test/full_versions.json"
2525 else
26- echo "matrix=$(jq -c . < $ {{ github.workspace }}/test/pr_versions .json)" >> $GITHUB_OUTPUT
26+ MATRIX_FILE="$ {{ github.workspace }}/test/full_versions .json"
2727 fi
28+ JSON=$(jq -c . < "$MATRIX_FILE")
29+ MODIFIED_JSON='{"include":[]}'
30+ PLUGINS=("GLTF" "PLY" "OBJ" "STL" "FBX")
31+
32+ for row in $(echo "${JSON}" | jq -c '.include[]'); do
33+ for plugin in "${PLUGINS[@]}"; do
34+ NEW_ROW=$(echo "$row" | jq '. + {"config":"'$plugin'"}')
35+ MODIFIED_JSON=$(echo "$MODIFIED_JSON" | jq '.include += ['"$NEW_ROW"']')
36+ done
37+ ALL_ON_ROW=$(echo "$row" | jq '. + {"config":"ALL"}')
38+ MODIFIED_JSON=$(echo "$MODIFIED_JSON" | jq '.include += ['"$ALL_ON_ROW"']')
39+ done
40+ echo "matrix=$(echo "$MODIFIED_JSON" | jq -c .)" >> $GITHUB_OUTPUT
2841
2942 build :
3043 needs : prepare-matrix
3144 runs-on : ${{ matrix.os }}
3245 strategy :
3346 fail-fast : false
3447 matrix : ${{fromJson(needs.prepare-matrix.outputs.matrix)}}
48+ name : build (${{ matrix.os }}-${{ matrix.usd_version }}-${{ matrix.config }})
3549 steps :
3650 - uses : actions/checkout@v4
3751 - uses : ilammy/msvc-dev-cmd@v1
@@ -58,23 +72,23 @@ jobs:
5872
5973 - name : Install dependencies on Windows
6074 if : runner.os == 'Windows'
61- run : choco install cmake
75+ run : choco install cmake 7zip
6276
6377 - name : Install dependencies on macOS
6478 if : runner.os == 'macOS'
6579 run : |
66- brew install cmake libheif libraw openjpeg || true
80+ brew install libheif libraw openjpeg || true
6781
6882 - name : Download release asset
6983 run : gh release download USD-${{ matrix.usd_version }}-Artifacts -p "usd-${{ matrix.usd_version }}-${{ matrix.os }}.zip" --repo ${{ github.repository }}
7084 env :
7185 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
7286
73- - name : Unzip artifact
87+ - name : Unzip artifact Windows
7488 if : runner.os == 'Windows'
7589 run : Expand-Archive -Path "usd-${{ matrix.usd_version }}-${{ matrix.os }}.zip" -DestinationPath usd_build -Force
7690
77- - name : Unzip artifact
91+ - name : Unzip artifact Unix
7892 if : runner.os != 'Windows'
7993 run : unzip -q usd-${{ matrix.usd_version }}-${{ matrix.os }}.zip -d usd_build
8094
@@ -107,17 +121,84 @@ jobs:
107121 echo "USD_BUILD_PATH=$USD_BUILD_PATH" >> "$GITHUB_ENV"
108122 echo "PYTHONPATH=${{ github.workspace }}/usd_build/lib/python" >> "$GITHUB_ENV"
109123
124+ - name : Get latest successful run ID of the fbx sdk workflow
125+ shell : bash
126+ if : matrix.config == 'FBX' || matrix.config == 'ALL'
127+ id : get-run-id
128+ env :
129+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
130+ run : |
131+ RUN_ID=$(gh run list --repo ${{ github.repository }} --workflow fbx-sdk.yml --limit 1 --json databaseId,status --jq '.[] | select(.status=="completed") | .databaseId')
132+ echo "RUN_ID=$RUN_ID" >> $GITHUB_ENV
133+ echo "Run ID: $RUN_ID"
134+
135+ - name : Download FBX SDK Artifact
136+ if : matrix.config == 'FBX' || matrix.config == 'ALL'
137+ uses : actions/download-artifact@v4
138+ with :
139+ name : ${{ runner.os }}-FBX-SDK
140+ path : ${{ github.workspace }}/FBXSDK
141+ github-token : ${{ secrets.GITHUB_TOKEN }}
142+ repository : ${{ github.repository }}
143+ run-id : ${{ env.RUN_ID }}
144+
145+ - name : Set up FBX
146+ if : matrix.config == 'FBX' || matrix.config == 'ALL'
147+ shell : bash
148+ run : |
149+ FBX_FOLDER=$(echo "${{ github.workspace }}/FBXSDK" | sed 's|\\|/|g')
150+ echo "FBX_FOLDER=$FBX_FOLDER" >> $GITHUB_ENV
151+ if [ "${{ runner.os }}" == "Windows" ]; then
152+ echo "FBX_OUTFILE=$FBX_FOLDER/fbx202021_fbxsdk_vs2019_win.exe" >> $GITHUB_ENV
153+ elif [ "${{ runner.os }}" == "macOS" ]; then
154+ echo "FBX_OUTFILE=$FBX_FOLDER/fbx202021_fbxsdk_clang_mac.pkg" >> $GITHUB_ENV
155+ else
156+ echo "FBX_OUTFILE=$FBX_FOLDER/fbx202021_fbxsdk_linux" >> $GITHUB_ENV
157+ fi
158+
159+ - name : Install FBX SDK Windows
160+ if : runner.os == 'Windows' && (matrix.config == 'FBX' || matrix.config == 'ALL')
161+ shell : bash
162+ run : |
163+ mkdir -p ${{ env.FBX_FOLDER }}
164+ FBX_INSTALL_DIR=$(echo "${{ github.workspace }}/FBX_SDK_INSTALL" | sed 's|\\|/|g')
165+ mkdir -p $FBX_INSTALL_DIR
166+ 7z x "$FBX_OUTFILE" -o"$FBX_INSTALL_DIR" -y
167+ echo "FBX_INSTALL_DIR=$FBX_INSTALL_DIR" >> $GITHUB_ENV
168+
169+ - name : Install FBX SDK Unix
170+ if : runner.os != 'Windows' && (matrix.config == 'FBX' || matrix.config == 'ALL')
171+ run : |
172+ mkdir -p ${{ env.FBX_FOLDER }}
173+ if [ "${{ runner.os }}" == "macOS" ]; then
174+ FBX_INSTALL_DIR="/Applications/Autodesk/FBXSDK/2020.2.1"
175+ tar -xzf ${{ env.FBX_OUTFILE }}.tgz -C ${{ env.FBX_FOLDER }}
176+ FBX_OUTFILE_CORRECTED=$(echo "${{ env.FBX_OUTFILE }}" | sed 's/_mac.pkg/_macos.pkg/')
177+ sudo installer -pkg $FBX_OUTFILE_CORRECTED -target / -verboseR
178+ sudo mv "/Applications/Autodesk/FBX SDK/" "/Applications/Autodesk/FBXSDK"
179+ else # Linux
180+ FBX_INSTALL_DIR=${{ github.workspace }}/FBX_SDK_INSTALL
181+ chmod +r ${{ env.FBX_OUTFILE }}.tar.gz
182+ tar -xzf ${{ env.FBX_OUTFILE }}.tar.gz -C ${{ env.FBX_FOLDER }}
183+ mkdir -p ${{ github.workspace }}/FBX_SDK_INSTALL
184+ yes yes | ${{ env.FBX_OUTFILE }} ${{ github.workspace }}/FBX_SDK_INSTALL
185+ fi
186+ echo "FBX_INSTALL_DIR=$FBX_INSTALL_DIR" >> $GITHUB_ENV
187+
110188 - name : Configure CMake (Cross-Platform)
111189 shell : bash
112190 run : |
113191 baseArgs="-S . -B build -G Ninja"
114-
115- # Common arguments for all platforms
116192 commonArgs=(
117193 "-DCMAKE_INSTALL_PREFIX=bin"
118194 "-DCMAKE_BUILD_TYPE=Release"
119195 "-Dpxr_ROOT=${{ github.workspace }}/usd_build"
120- "-DUSD_FILEFORMATS_ENABLE_FBX=OFF"
196+ "-DUSD_FILEFORMATS_ENABLE_GLTF=$([[ "${{ matrix.config }}" == "ALL" || "${{ matrix.config }}" == "GLTF" ]] && echo "ON" || echo "OFF")"
197+ "-DUSD_FILEFORMATS_ENABLE_PLY=$([[ "${{ matrix.config }}" == "ALL" || "${{ matrix.config }}" == "PLY" ]] && echo "ON" || echo "OFF")"
198+ "-DUSD_FILEFORMATS_ENABLE_OBJ=$([[ "${{ matrix.config }}" == "ALL" || "${{ matrix.config }}" == "OBJ" ]] && echo "ON" || echo "OFF")"
199+ "-DUSD_FILEFORMATS_ENABLE_STL=$([[ "${{ matrix.config }}" == "ALL" || "${{ matrix.config }}" == "STL" ]] && echo "ON" || echo "OFF")"
200+ "-DUSD_FILEFORMATS_ENABLE_FBX=$([[ "${{ matrix.config }}" == "ALL" || "${{ matrix.config }}" == "FBX" ]] && echo "ON" || echo "OFF")"
201+ "-DFBXSDK_ROOT=${{ env.FBX_INSTALL_DIR }}"
121202 "-DUSD_FILEFORMATS_BUILD_TESTS=ON"
122203 "-DOpenImageIO_INCLUDE_DIR=${{ github.workspace }}/usd_build/include"
123204 "-DOpenImageIO_INCLUDES=${{ github.workspace }}/usd_build/include"
@@ -167,59 +248,28 @@ jobs:
167248 ctest -VV -C Release
168249 result=$?
169250 echo "Test exit status: $result"
170- suffix="${{ matrix.os }}-${{ matrix.usd_version }}"
251+ suffix="${{ matrix.os }}-${{ matrix.usd_version }}-${{ matrix.config }} "
171252 if [[ "$result" -eq 0 ]]; then
172- echo "${suffix},Passed,green" >> ${{ matrix.os }}-${{ matrix.usd_version }}.csv
253+ echo "BUILD_STATUS_STRING=Passed" >> $GITHUB_ENV
254+ echo "BUILD_STATUS_COLOR=#00cc11" >> $GITHUB_ENV
173255 else
174- echo "${suffix},Failed,red" >> ${{ matrix.os }}-${{ matrix.usd_version }}.csv
256+ echo "BUILD_STATUS_STRING=Failed" >> $GITHUB_ENV
257+ echo "BUILD_STATUS_COLOR=red" >> $GITHUB_ENV
175258 fi
176259
177- - uses : actions/upload-artifact@v4
178- with :
179- name : ${{ matrix.os }}-${{ matrix.usd_version }}
180- path : build/${{ matrix.os }}-${{ matrix.usd_version }}.csv
260+ - name : Handle Failure
261+ if : failure()
262+ run : |
263+ echo "BUILD_STATUS_STRING=Failed" >> $GITHUB_ENV
264+ echo "BUILD_STATUS_COLOR=red" >> $GITHUB_ENV
181265
182- update_badge :
183- needs : [build, prepare-matrix]
184- runs-on : ubuntu-latest
185- if : always()
186- steps :
187- - uses : actions/checkout@v4
188- - name : Download All Artifacts
189- uses : actions/download-artifact@v4
266+ - name : Update Badge
267+ if : always()
268+ uses :
schneegans/[email protected] 190269 with :
191- path : artifacts/
192-
193- - name : Process Artifacts
194- run : |
195- find artifacts/ -type f
196- for artifact_dir in artifacts/*; do
197- os_version=$(basename $artifact_dir)
198- echo "Processing directory $artifact_dir for $os_version"
199- results_file="$artifact_dir/${os_version}.csv"
200- if [ ! -f "$results_file" ]; then
201- STATUS="failed"
202- COLOR="red"
203- echo "No results file found for $os_version. Setting status to failed."
204- else
205- echo "Results file found for $os_version. Parsing data."
206- while IFS=',' read -r file_os status color; do
207- echo "file_os: $file_os"
208- echo "os_version: $os_version"
209- if [[ "$file_os" == "$os_version" ]]; then
210- STATUS=$status
211- COLOR=$color
212- echo "STATUS: $STATUS"
213- echo "status: $status"
214- echo "COLOR: $color"
215- echo "color: $color"
216- break
217- fi
218- done < "$results_file"
219- fi
220- echo "Updating badge for $os_version"
221- sleep 3
222- gh workflow run update-badge.yml -f NAME="$os_version" -f LABEL="$os_version" -f STATUS="$STATUS" -f COLOR="$COLOR"
223- done
224- env :
225- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
270+ auth : ${{ secrets.GIST_SECRET }}
271+ gistID : 264643f3d2acacc5369a0ba70854dfb6
272+ filename : ${{ matrix.os }}-${{ matrix.usd_version }}-${{ matrix.config }}.json
273+ label : ${{ matrix.os }}-${{ matrix.usd_version }}-${{ matrix.config }}
274+ message : ${{ env.BUILD_STATUS_STRING }}
275+ color : " ${{ env.BUILD_STATUS_COLOR }}"
0 commit comments