V3.8.5 pipeline, add PipelinePassBuilder #13317
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: <Web> Interface check | |
on: [pull_request] | |
# github.head_ref is only defined on pull_request events | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.actor }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
PR_NUMBER: ${{ github.event.pull_request.number }} | |
jobs: | |
interface_check: | |
if: | |
(! contains(github.event.pull_request.body, '[X] does not change any runtime related code or build configuration')) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '18.x' | |
- uses: actions/checkout@v4 | |
name: Checkout Base Ref | |
with: | |
repository: ${{ github.event.pull_request.base.repo.full_name }} | |
ref: ${{ github.base_ref }} | |
path: './engine' | |
- run: | | |
"EXT_VERSION=$(node ./engine/.github/workflows/get-native-external-version.js)" >> $env:GITHUB_ENV | |
shell: pwsh | |
- uses: actions/checkout@v4 | |
name: Download external | |
with: | |
repository: cocos/cocos-engine-external | |
path: './engine/native/external' | |
ref: "${{ env.EXT_VERSION }}" | |
fetch-depth: 1 | |
- name: Build Base Declarations | |
working-directory: ./engine | |
run: | | |
npm install | |
if [ -e ./.github/workflows/package-size-check.js ]; then | |
node ./.github/workflows/package-size-check.js | |
fi | |
- name: Clear npm Cache | |
run: | | |
npm cache clean --force | |
- uses: actions/checkout@v4 | |
name: Checkout Head Ref | |
with: | |
ref: 'refs/pull/${{ github.event.pull_request.number }}/merge' # Don't check out the head commit, checkout the "merge commit" instead | |
path: './engine-HEAD' | |
- run: | | |
"EXT_VERSION_HEAD=$(node ./engine-HEAD/.github/workflows/get-native-external-version.js)" >> $env:GITHUB_ENV | |
shell: pwsh | |
- uses: actions/checkout@v4 | |
name: Download external | |
with: | |
repository: cocos/cocos-engine-external | |
path: './engine-HEAD/native/external' | |
ref: "${{ env.EXT_VERSION_HEAD }}" | |
fetch-depth: 1 | |
- name: Setup emsdk | |
uses: dumganhar/setup-emsdk@997d2cde2deabda085a11f98e86e842915b0e846 | |
with: | |
version: 3.1.41 | |
actions-cache-folder: 'emsdk-cache-3.1.41' | |
- name: Verify | |
run: | | |
which emcc | |
emcc -v | |
- name: Apply emscripten patches | |
run: | | |
echo "--------------------------------- Save bind.cpp ---------------------------------" | |
cp $EMSDK/upstream/emscripten/system/lib/embind/bind.cpp $EMSDK/upstream/emscripten/system/lib/embind/bind.cpp.bak | |
echo "--------------------------------- Apply embind bind.cpp patches ---------------------------------" | |
cp -f ./engine-HEAD/.github/workflows/emscripten-patches/embind/bind.cpp $EMSDK/upstream/emscripten/system/lib/embind/ | |
echo "--------------------------------- Apply patches DONE! ---------------------------------" | |
cat $EMSDK/upstream/emscripten/system/lib/embind/bind.cpp | |
- name: Install ninja | |
run: | | |
if ! command -v ninja &> /dev/null; then | |
echo "Ninja not found, installing..." | |
# sudo apt update | |
sudo apt install ninja-build | |
else | |
echo "Ninja is already installed." | |
fi | |
which ninja | |
- name: Build Spine WASM | |
run: | | |
cd ./engine-HEAD/native/cocos/editor-support/spine-wasm | |
mkdir build-wasm | |
cd build-wasm | |
emcmake cmake .. -GNinja | |
ninja | |
ls -l | |
- name: Build Spine ASMJS | |
run: | | |
cd ./engine-HEAD/native/cocos/editor-support/spine-wasm | |
sed -i 's/set(BUILD_WASM 1)/set(BUILD_WASM 0)/g' CMakeLists.txt | |
mkdir build-asmjs | |
cd build-asmjs | |
emcmake cmake .. -GNinja | |
ninja | |
ls -l | |
- name: Copy files to external directory | |
run: | | |
mkdir dist | |
cp ./engine-HEAD/native/cocos/editor-support/spine-wasm/build-wasm/spine.wasm ./dist/ | |
cp ./engine-HEAD/native/cocos/editor-support/spine-wasm/build-wasm/spine.js ./dist/spine.wasm.js | |
cp ./engine-HEAD/native/cocos/editor-support/spine-wasm/build-asmjs/spine.js.mem ./dist/ | |
cp ./engine-HEAD/native/cocos/editor-support/spine-wasm/build-asmjs/spine.js ./dist/spine.asm.js | |
echo "-------- Before replace spine wasm -----------" | |
ls -l ./engine-HEAD/native/external/emscripten/spine/ | |
cp -f ./dist/* ./engine-HEAD/native/external/emscripten/spine/ | |
echo "-------- After replace spine wasm ------------" | |
ls -l ./engine-HEAD/native/external/emscripten/spine/ | |
echo "-----------------------------------------------" | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: spine-emscripten | |
path: dist | |
- name: Build Head Declarations | |
working-directory: ./engine-HEAD | |
run: | | |
npm install | |
node ./.github/workflows/package-size-check.js | |
- name: Restore patches | |
run: | | |
echo "-------------------------- Restore patches ---------------------------------" | |
rm $EMSDK/upstream/emscripten/system/lib/embind/bind.cpp | |
mv $EMSDK/upstream/emscripten/system/lib/embind/bind.cpp.bak $EMSDK/upstream/emscripten/system/lib/embind/bind.cpp | |
echo "-------------------------- Restore patches DONE! ---------------------------------" | |
cat $EMSDK/upstream/emscripten/system/lib/embind/bind.cpp | |
- uses: LouisBrunner/[email protected] | |
with: | |
old: ./engine/bin/.declarations/cc.d.ts | |
new: ./engine-HEAD/bin/.declarations/cc.d.ts | |
mode: addition | |
tolerance: worse | |
output: ./engine/interface-diff.txt | |
- name: Check package size | |
run: | | |
BASE_SIZE=0 | |
if [ -d ./engine/build-cc-out ]; then | |
BASE_SIZE=$(du -sb ./engine/build-cc-out | awk '{print $1}') | |
fi | |
HEAD_SIZE=$(du -sb ./engine-HEAD/build-cc-out | awk '{print $1}') | |
DIFF_SIZE=$((HEAD_SIZE - BASE_SIZE)) | |
if [ "$DIFF_SIZE" -gt 0 ]; then | |
PACKAGE_SIZE_INFO="⚠️ Package size ⤴ $DIFF_SIZE bytes, old: $BASE_SIZE, new: $HEAD_SIZE" | |
elif [ "$DIFF_SIZE" -lt 0 ]; then | |
PACKAGE_SIZE_INFO="👍 Package size ⤵ $DIFF_SIZE bytes, old: $BASE_SIZE, new: $HEAD_SIZE" | |
else | |
PACKAGE_SIZE_INFO="✅ Package size is not changed" | |
fi | |
echo "PACKAGE_SIZE_INFO: ${PACKAGE_SIZE_INFO}" | |
sed -i "1s/^/$PACKAGE_SIZE_INFO\n/" ./engine/interface-diff.txt | |
- name: optimize interface check report | |
working-directory: ./engine | |
run: | | |
cat ./interface-diff.txt | |
node ./.github/workflows/interface-check-report.js | |
- name: Write PR number to file | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
const fs = require('fs'); | |
fs.writeFileSync('interface-check-pr.txt', process.env.PR_NUMBER); | |
- name: Upload PR number artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: interface-check-pr.txt | |
path: | | |
interface-check-pr.txt | |
- name: Upload interface diff artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: interface-diff.txt | |
path: | | |
./engine/interface-diff.txt |