Skip to content

Memory leak caused by excessive simultaneous playback of sound effects on the mini game platform #15678

Memory leak caused by excessive simultaneous playback of sound effects on the mini game platform

Memory leak caused by excessive simultaneous playback of sound effects on the mini game platform #15678

name: run test cases
on:
pull_request:
issue_comment:
types: [created, edited]
permissions: read-all
# 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
jobs:
Win-RunTestCases:
if: |
contains(github.event.pull_request.body, '[X] needs automatic test cases check') ||
contains(github.event.comment.body, '@cocos-robot run test cases')
runs-on: self-hosted-win
steps:
- name: Get PR Number
id: get_pr
shell: pwsh
run: |
if ("${{ github.event_name }}" -eq "issue_comment") {
Write-Host "::set-output name=pr_number::${{ github.event.issue.number }}"
}
else {
Write-Host "::set-output name=pr_number::${{ github.event.pull_request.number }}"
}
- name: Get PR Details
id: pr_details
uses: octokit/[email protected]
with:
route: GET /repos/cocos/cocos-engine/pulls/${{ steps.get_pr.outputs.pr_number }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Parse Pull Request
id: parse_pr
shell: pwsh
run: |
$pull_request = @"
${{ steps.pr_details.outputs.data }}
"@ | ConvertFrom-Json
Write-Host $pull_request
Write-Host "::set-output name=pr_html_url::$($pull_request.html_url)"
Write-Host "::set-output name=pr_author::$($pull_request.user.login)"
Write-Host "::set-output name=pr_head_ref::$($pull_request.head.ref)"
Write-Host "::set-output name=pr_head_sha::$($pull_request.head.sha)"
Write-Host "::set-output name=pr_base_ref::$($pull_request.base.ref)"
Write-Host "::set-output name=pr_base_sha::$($pull_request.base.sha)"
- name: Check Job Parameter
run: |
echo "${{ steps.parse_pr.outputs.pr_head_ref }}"
echo "${{ steps.parse_pr.outputs.pr_head_sha }}"
echo "${{ steps.parse_pr.outputs.pr_base_ref }}"
echo "${{ steps.parse_pr.outputs.pr_base_sha }}"
- name: Checkout engine
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ steps.parse_pr.outputs.pr_base_ref }}
- name: Checkout rebase
run: |
git fetch origin
git reset --hard
git checkout origin/${{ steps.parse_pr.outputs.pr_base_ref }}
git pull origin ${{ steps.parse_pr.outputs.pr_base_ref }} --allow-unrelated-histories
git branch -D ${{ steps.parse_pr.outputs.pr_base_ref }}
git branch ${{ steps.parse_pr.outputs.pr_base_ref }}
git fetch origin pull/${{ steps.get_pr.outputs.pr_number }}/head:pull-${{ steps.get_pr.outputs.pr_number }}
git merge --ff -s recursive --no-verify -m "PR Test" origin/${{ steps.parse_pr.outputs.pr_base_ref }} pull-${{ steps.get_pr.outputs.pr_number }}
- name: Download external libraries
shell: bash
run: |
set -x
EXT_VERSION=`node ./.github/workflows/get-native-external-version.js`
PRECLONE_EXTERNAL="E:/preclone/cocos-engine-external"
if [ ! -d $PRECLONE_EXTERNAL ]; then
mkdir -p $PRECLONE_EXTERNAL
git clone https://github.com/cocos/cocos-engine-external $PRECLONE_EXTERNAL
else
echo "directory $PRECLONE_EXTERNAL is ready"
fi
if [ ! -d native/external ]; then
mkdir native/external
fi
git -C $PRECLONE_EXTERNAL reset --hard
git -C $PRECLONE_EXTERNAL fetch --all --prune
git -C $PRECLONE_EXTERNAL archive --format=tar $EXT_VERSION | tar -C native/external -xf -
- name: Generate bindings
run: |
cd ./native/tools/swig-config
echo "Create auto-generated jsbinding glue codes."
node genbindings.js &&
git status
- name: npm install
run: |
npm -v
npm install --registry https://registry.npm.taobao.org
- name: Checkout test-projects
shell: bash
run: |
set -x
Engine_VERSION=`sed -n "3p" package.json |cut -b 15-17`
AUTOTEST_VERSION="v$Engine_VERSION"
TEST_PROJECTS_EXTERNAL="E:/pr-test/cocos-test-projects"
CCTEST_PLUGINS="E:/pr-test/TestPlugin"
if [ ! -d $TEST_PROJECTS_EXTERNAL ]; then
mkdir -p $TEST_PROJECTS_EXTERNAL
git clone https://github.com/cocos/cocos-test-projects.git $TEST_PROJECTS_EXTERNAL
else
echo "directory $TEST_PROJECTS_EXTERNAL is ready"
fi
git -C $TEST_PROJECTS_EXTERNAL reset --hard
git -C $TEST_PROJECTS_EXTERNAL fetch --all --prune
git -C $TEST_PROJECTS_EXTERNAL checkout origin/$AUTOTEST_VERSION
git -C $TEST_PROJECTS_EXTERNAL pull origin $AUTOTEST_VERSION --allow-unrelated-histories
rm -rf $TEST_PROJECTS_EXTERNAL/extensions/automation-framework
7z x -y $CCTEST_PLUGINS/*.zip -o$TEST_PROJECTS_EXTERNAL/extensions/automation-framework
macOS-RunTestCases:
if: |
contains(github.event.pull_request.body, '[X] needs automatic test cases check') ||
contains(github.event.comment.body, '@cocos-robot run test cases')
runs-on: self-hosted-mac
steps:
- name: Get PR Number
id: get_pr
shell: pwsh
run: |
if ("${{ github.event_name }}" -eq "issue_comment") {
Write-Host "::set-output name=pr_number::${{ github.event.issue.number }}"
}
else {
Write-Host "::set-output name=pr_number::${{ github.event.pull_request.number }}"
}
- name: Get PR Details
id: pr_deatils
uses: octokit/[email protected]
with:
route: GET /repos/cocos/cocos-engine/pulls/${{ steps.get_pr.outputs.pr_number }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Parse Pull Request
id: parse_pr
shell: pwsh
run: |
$pull_request = @"
${{ steps.pr_deatils.outputs.data }}
"@ | ConvertFrom-Json
Write-Host $pull_request
Write-Host "::set-output name=pr_html_url::$($pull_request.html_url)"
Write-Host "::set-output name=pr_author::$($pull_request.user.login)"
Write-Host "::set-output name=pr_head_ref::$($pull_request.head.ref)"
Write-Host "::set-output name=pr_head_sha::$($pull_request.head.sha)"
Write-Host "::set-output name=pr_base_ref::$($pull_request.base.ref)"
Write-Host "::set-output name=pr_base_sha::$($pull_request.base.sha)"
- name: Check Job Parameter
run: |
echo "${{ steps.parse_pr.outputs.pr_head_ref }}"
echo "${{ steps.parse_pr.outputs.pr_head_sha }}"
echo "${{ steps.parse_pr.outputs.pr_base_ref }}"
echo "${{ steps.parse_pr.outputs.pr_base_sha }}"
- name: Checkout engine
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ steps.parse_pr.outputs.pr_base_ref }}
- name: Checkout rebase
run: |
git fetch origin
git reset --hard
git checkout origin/${{ steps.parse_pr.outputs.pr_base_ref }}
git pull origin ${{ steps.parse_pr.outputs.pr_base_ref }} --allow-unrelated-histories
git branch -D ${{ steps.parse_pr.outputs.pr_base_ref }}
git branch ${{ steps.parse_pr.outputs.pr_base_ref }}
git fetch origin pull/${{ steps.get_pr.outputs.pr_number }}/head:pull-${{ steps.get_pr.outputs.pr_number }}
git merge --ff -s recursive --no-verify -m "PR Test" origin/${{ steps.parse_pr.outputs.pr_base_ref }} pull-${{ steps.get_pr.outputs.pr_number }}
- name: Download external libraries
shell: bash
run: |
set -x
EXT_VERSION=`node ./.github/workflows/get-native-external-version.js`
PRECLONE_EXTERNAL="/Users/admin/Documents/actions-runner/preclone/cocos-engine-external"
if [ ! -d $PRECLONE_EXTERNAL ]; then
echo "create directory $PRECLONE_EXTERNAL"
# remove all sub-folders
rm -rf /Users/admin/Documents/actions-runner/preclone
mkdir -p $PRECLONE_EXTERNAL
git clone https://github.com/cocos/cocos-engine-external $PRECLONE_EXTERNAL
else
echo "directory $PRECLONE_EXTERNAL is ready"
fi
if [ ! -d native/external ]; then
mkdir native/external
fi
git -C $PRECLONE_EXTERNAL reset --hard
git -C $PRECLONE_EXTERNAL fetch --all --prune
git -C $PRECLONE_EXTERNAL archive --format=tar $EXT_VERSION | tar -C native/external -xf -
- name: Generate bindings
run: |
cd ./native/tools/swig-config
echo "Create auto-generated jsbinding glue codes."
node genbindings.js &&
git status
- name: npm install
run: |
npm -v
npm install --registry https://registry.npm.taobao.org
- name: Checkout test-projects
shell: bash
run: |
set -x
Engine_VERSION=`sed -n "3p" package.json |cut -b 15-17`
AUTOTEST_VERSION="v$Engine_VERSION"
TEST_PROJECTS_EXTERNAL="../../cocos-test-projects"
CCTEST_PLUGINS="../../TestPlugin"
if [ ! -d $TEST_PROJECTS_EXTERNAL ]; then
mkdir -p $TEST_PROJECTS_EXTERNAL
git clone https://github.com/cocos/cocos-test-projects.git $TEST_PROJECTS_EXTERNAL
else
echo "directory $TEST_PROJECTS_EXTERNAL is ready"
fi
git -C $TEST_PROJECTS_EXTERNAL reset --hard
git -C $TEST_PROJECTS_EXTERNAL fetch --all --prune
git -C $TEST_PROJECTS_EXTERNAL checkout origin/$AUTOTEST_VERSION
git -C $TEST_PROJECTS_EXTERNAL pull origin $AUTOTEST_VERSION --allow-unrelated-histories
rm -rf $TEST_PROJECTS_EXTERNAL/extensions/automation-framework
unzip -oq $CCTEST_PLUGINS/*.zip -d $TEST_PROJECTS_EXTERNAL/extensions/automation-framework
Creator-PR-RunTestCases:
runs-on: self-hosted-mac
needs: [macOS-RunTestCases, Win-RunTestCases]
steps:
- name: Get PR Number
id: get_pr
shell: pwsh
run: |
if ("${{ github.event_name }}" -eq "issue_comment") {
Write-Host "::set-output name=pr_number::${{ github.event.issue.number }}"
}
else {
Write-Host "::set-output name=pr_number::${{ github.event.pull_request.number }}"
}
- name: Get PR Details
id: pr_deatils
uses: octokit/[email protected]
with:
route: GET /repos/cocos/cocos-engine/pulls/${{ steps.get_pr.outputs.pr_number }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Parse Pull Request
id: parse_pr
shell: pwsh
run: |
$pull_request = @"
${{ steps.pr_deatils.outputs.data }}
"@ | ConvertFrom-Json
Write-Host $pull_request
Write-Host "::set-output name=pr_html_url::$($pull_request.html_url)"
Write-Host "::set-output name=pr_author::$($pull_request.user.login)"
Write-Host "::set-output name=pr_head_ref::$($pull_request.head.ref)"
Write-Host "::set-output name=pr_head_sha::$($pull_request.head.sha)"
Write-Host "::set-output name=pr_base_ref::$($pull_request.base.ref)"
Write-Host "::set-output name=pr_base_sha::$($pull_request.base.sha)"
- name: Check Job Parameter
run: |
echo "${{ steps.parse_pr.outputs.pr_head_ref }}"
echo "${{ steps.parse_pr.outputs.pr_head_sha }}"
echo "${{ steps.parse_pr.outputs.pr_base_ref }}"
echo "${{ steps.parse_pr.outputs.pr_base_sha }}"
- name: Run test cases
timeout-minutes: 90
id: run_test_cases
run: |
scheduler cicd -p PR-TEST -v ${{ steps.parse_pr.outputs.pr_base_ref }} -g PR-TEST -r cctest.cocos.org
JOBID=`cat /usr/local/lib/node_modules/@cctest/scheduler/logs/PR-TEST/nowJobId.log`
cd ..
python3 -u ./python/main.py --target=job_editor --jobid=$JOBID
- name: Write comment body and issue number to file
uses: actions/github-script@v5
env:
PR_AUTHOR: ${{ steps.parse_pr.outputs.pr_author }}
EDITOR_VERSION: ${{ steps.run_test_cases.outputs.editor }}
TASK_STATUS: ${{ steps.run_test_cases.outputs.status }}
TASK_REPORT: ${{ steps.run_test_cases.outputs.report }}
JOB_ID: ${{ steps.run_test_cases.outputs.jobid }}
GITHUB_RUN_ID: ${{ github.run_id }}
PR_NUMBER: ${{ steps.get_pr.outputs.pr_number }}
with:
script: |
const fs = require('fs');
fs.writeFileSync('pr.txt', process.env.PR_NUMBER);
fs.writeFileSync('comment.txt', `@${process.env.PR_AUTHOR}, Please check the result of \`run test cases\`:
- Test Platform: PR-Test
- Editor Version: ${process.env.EDITOR_VERSION}
- Task Result: ${process.env.TASK_STATUS}
- Task URL: http://cctest.cocos.org/#/reportview/PR-TEST/${process.env.JOB_ID}/-1
- GitHub Action: https://github.com/cocos/cocos-engine/actions/runs/${process.env.GITHUB_RUN_ID}
## Task Details
${process.env.TASK_REPORT}`);
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: pr.txt
path: |
pr.txt
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: comment.txt
path: |
comment.txt