diff --git a/.dev_scripts/dockerci.sh b/.dev_scripts/dockerci.sh index 0db69f3e..b4332f39 100644 --- a/.dev_scripts/dockerci.sh +++ b/.dev_scripts/dockerci.sh @@ -9,6 +9,10 @@ cpu_sets_arr=($cpu_sets) is_get_file_lock=false CI_COMMAND=${CI_COMMAND:-bash .dev_scripts/ci_container_test.sh python tests/run.py --parallel 2 --run_config tests/run_config.yaml} echo "ci command: $CI_COMMAND" +PR_CHANGED_FILES="${PR_CHANGED_FILES:-''}" +echo "PR modified files: $PR_CHANGED_FILES" +PR_CHANGED_FILES=${PR_CHANGED_FILES//[ ]/#} +echo "PR_CHANGED_FILES: $PR_CHANGED_FILES" idx=0 for gpu in $gpus do @@ -42,6 +46,7 @@ do -e MODELSCOPE_ENVIRONMENT='ci' \ -e TEST_UPLOAD_MS_TOKEN=$TEST_UPLOAD_MS_TOKEN \ -e MODEL_TAG_URL=$MODEL_TAG_URL \ + -e PR_CHANGED_FILES=$PR_CHANGED_FILES \ --workdir=$CODE_DIR_IN_CONTAINER \ ${IMAGE_NAME}:${IMAGE_VERSION} \ $CI_COMMAND @@ -64,6 +69,7 @@ do -e MODELSCOPE_ENVIRONMENT='ci' \ -e TEST_UPLOAD_MS_TOKEN=$TEST_UPLOAD_MS_TOKEN \ -e MODEL_TAG_URL=$MODEL_TAG_URL \ + -e PR_CHANGED_FILES=$PR_CHANGED_FILES \ --workdir=$CODE_DIR_IN_CONTAINER \ ${IMAGE_NAME}:${IMAGE_VERSION} \ $CI_COMMAND diff --git a/.github/workflows/citest.yaml b/.github/workflows/citest.yaml index 463d391c..8060f0bb 100644 --- a/.github/workflows/citest.yaml +++ b/.github/workflows/citest.yaml @@ -52,10 +52,19 @@ jobs: sudo chown -R $USER:$USER $ACTION_RUNNER_DIR - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: lfs: 'true' submodules: 'true' + fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} + - name: Get changed files + id: changed-files + run: | + if ${{ github.event_name == 'pull_request' }}; then + echo "PR_CHANGED_FILES=$(git diff --name-only -r HEAD^1 HEAD | xargs)" >> $GITHUB_ENV + else + echo "PR_CHANGED_FILES=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | xargs)" >> $GITHUB_ENV + fi - name: Checkout LFS objects run: git lfs checkout - name: Run unittest diff --git a/tests/run_analysis.py b/tests/run_analysis.py index ca0a0018..95c24698 100644 --- a/tests/run_analysis.py +++ b/tests/run_analysis.py @@ -125,16 +125,21 @@ def get_current_branch(): def get_modified_files(): - cmd = ['git', 'diff', '--name-only', 'origin/master...'] - cmd_output = run_command_get_output(cmd) - logger.info('Modified files: ') - logger.info(cmd_output) + if 'PR_CHANGED_FILES' in os.environ and os.environ[ + 'PR_CHANGED_FILES'] != '': + logger.info('Getting PR modified files.') + # get modify file from environment + diff_files = os.environ['PR_CHANGED_FILES'].replace('#', '\n') + else: + cmd = ['git', 'diff', '--name-only', 'origin/master...'] + diff_files = run_command_get_output(cmd) + logger.info('Diff files: ') + logger.info(diff_files) modified_files = [] # remove the deleted file. - for diff_file in cmd_output.splitlines(): - if os.path.exists(diff_file): - modified_files.append(diff_file) - + for diff_file in diff_files.splitlines(): + if os.path.exists(diff_file.strip()): + modified_files.append(diff_file.strip()) return modified_files