From ae8ae589f418216faa31b0a409f4e36ef986ac28 Mon Sep 17 00:00:00 2001 From: hkobew Date: Mon, 2 Dec 2024 14:12:53 -0500 Subject: [PATCH] put input in env before passing --- .github/workflows/copyPasteDetection.yml | 150 ++++++++++++----------- 1 file changed, 76 insertions(+), 74 deletions(-) diff --git a/.github/workflows/copyPasteDetection.yml b/.github/workflows/copyPasteDetection.yml index ad78e409fca..c78ccb5d630 100644 --- a/.github/workflows/copyPasteDetection.yml +++ b/.github/workflows/copyPasteDetection.yml @@ -1,86 +1,88 @@ -# # github actions: https://docs.github.com/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-nodejs -# # setup-node: https://github.com/actions/setup-node +# github actions: https://docs.github.com/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-nodejs +# setup-node: https://github.com/actions/setup-node -# name: Copy-Paste Detection +name: Copy-Paste Detection -# on: -# pull_request: -# branches: [master, feature/*, staging] +on: + pull_request: + branches: [master, feature/*, staging] -# jobs: -# jscpd: -# runs-on: ubuntu-latest -# strategy: -# matrix: -# node-version: [18.x] -# env: -# NODE_OPTIONS: '--max-old-space-size=8192' +jobs: + jscpd: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x] + env: + NODE_OPTIONS: '--max-old-space-size=8192' -# steps: -# - uses: actions/checkout@v4 -# with: -# fetch-depth: 0 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 -# - name: Use Node.js ${{ matrix.node-version }} -# uses: actions/setup-node@v4 -# with: -# node-version: ${{ matrix.node-version }} + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} -# - name: Fetch fork upstream -# run: | -# git remote add forkUpstream https://github.com/${{ github.event.pull_request.head.repo.full_name }} # URL of the fork -# git fetch forkUpstream # Fetch fork + - name: Fetch fork upstream + env: + REPO_NAME: ${{ github.event.pull_request.head.repo.full_name }} + run: | + git remote add forkUpstream https://github.com/$REPO_NAME # URL of the fork + git fetch forkUpstream # Fetch fork -# - name: Determine base and target branches for comparison. -# run: | -# echo "CURRENT_BRANCH=${{ github.head_ref }}" >> $GITHUB_ENV -# echo "TARGET_BRANCH=${{ github.event.pull_request.base.ref }}" >> $GITHUB_ENV -# - run: git diff --name-only origin/$TARGET_BRANCH forkUpstream/$CURRENT_BRANCH > diff_output.txt -# - run: | -# npm install -g jscpd + - name: Compute git diff + env: + CURRENT_BRANCH: ${{ github.head_ref }} + TARGET_BRANCH: ${{ github.event.pull_request.base.ref }} + run: git diff --name-only origin/$TARGET_BRANCH forkUpstream/$CURRENT_BRANCH > diff_output.txt -# - run: jscpd --config "$GITHUB_WORKSPACE/.github/workflows/jscpd.json" + - run: npm install -g jscpd -# - if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: unfiltered-jscpd-report -# path: ./jscpd-report.json + - run: jscpd --config "$GITHUB_WORKSPACE/.github/workflows/jscpd.json" -# - name: Filter jscpd report for changed files -# run: | -# if [ ! -f ./jscpd-report.json ]; then -# echo "jscpd-report.json not found" -# exit 1 -# fi -# echo "Filtering jscpd report for changed files..." -# CHANGED_FILES=$(jq -R -s -c 'split("\n")[:-1]' diff_output.txt) -# echo "Changed files: $CHANGED_FILES" -# jq --argjson changed_files "$CHANGED_FILES" ' -# .duplicates | map(select( -# (.firstFile?.name as $fname | $changed_files | any(. == $fname)) or -# (.secondFile?.name as $sname | $changed_files | any(. == $sname)) -# )) -# ' ./jscpd-report.json > filtered-jscpd-report.json -# cat filtered-jscpd-report.json + - if: always() + uses: actions/upload-artifact@v4 + with: + name: unfiltered-jscpd-report + path: ./jscpd-report.json -# - name: Check for duplicates -# run: | -# if [ $(wc -l < ./filtered-jscpd-report.json) -gt 1 ]; then -# echo "filtered_report_exists=true" >> $GITHUB_ENV -# else -# echo "filtered_report_exists=false" >> $GITHUB_ENV -# fi -# - name: upload filtered report (if applicable) -# if: env.filtered_report_exists == 'true' -# uses: actions/upload-artifact@v4 -# with: -# name: filtered-jscpd-report -# path: ./filtered-jscpd-report.json + - name: Filter jscpd report for changed files + run: | + if [ ! -f ./jscpd-report.json ]; then + echo "jscpd-report.json not found" + exit 1 + fi + echo "Filtering jscpd report for changed files..." + CHANGED_FILES=$(jq -R -s -c 'split("\n")[:-1]' diff_output.txt) + echo "Changed files: $CHANGED_FILES" + jq --argjson changed_files "$CHANGED_FILES" ' + .duplicates | map(select( + (.firstFile?.name as $fname | $changed_files | any(. == $fname)) or + (.secondFile?.name as $sname | $changed_files | any(. == $sname)) + )) + ' ./jscpd-report.json > filtered-jscpd-report.json + cat filtered-jscpd-report.json -# - name: Fail and log found duplicates. -# if: env.filtered_report_exists == 'true' -# run: | -# cat ./filtered-jscpd-report.json -# echo "Duplications found, failing the check." -# exit 1 + - name: Check for duplicates + run: | + if [ $(wc -l < ./filtered-jscpd-report.json) -gt 1 ]; then + echo "filtered_report_exists=true" >> $GITHUB_ENV + else + echo "filtered_report_exists=false" >> $GITHUB_ENV + fi + - name: upload filtered report (if applicable) + if: env.filtered_report_exists == 'true' + uses: actions/upload-artifact@v4 + with: + name: filtered-jscpd-report + path: ./filtered-jscpd-report.json + + - name: Fail and log found duplicates. + if: env.filtered_report_exists == 'true' + run: | + cat ./filtered-jscpd-report.json + echo "Duplications found, failing the check." + exit 1