|
32 | 32 | - uses: actions/setup-node@v4 |
33 | 33 | with: |
34 | 34 | node-version: '20' |
35 | | - - name: Check Branch title |
36 | | - env: |
37 | | - BRANCH_NAME: ${{ github.head_ref }} |
38 | | - run: | |
39 | | - node "$GITHUB_WORKSPACE/.github/workflows/lintbranch.js" run "$BRANCH_NAME" |
40 | 35 | - name: Check PR title |
41 | 36 | run: | |
42 | 37 | node "$GITHUB_WORKSPACE/.github/workflows/lintcommit.js" |
|
60 | 55 | - run: npm run testCompile |
61 | 56 | - run: npm run lint |
62 | 57 |
|
63 | | - jscpd: |
64 | | - needs: lint-commits |
65 | | - if: ${{ github.event_name == 'pull_request'}} |
66 | | - runs-on: ubuntu-latest |
67 | | - strategy: |
68 | | - matrix: |
69 | | - node-version: [18.x] |
70 | | - env: |
71 | | - NODE_OPTIONS: '--max-old-space-size=8192' |
72 | | - |
73 | | - steps: |
74 | | - - uses: actions/checkout@v4 |
75 | | - with: |
76 | | - fetch-depth: 0 |
77 | | - |
78 | | - - name: Use Node.js ${{ matrix.node-version }} |
79 | | - uses: actions/setup-node@v4 |
80 | | - with: |
81 | | - node-version: ${{ matrix.node-version }} |
82 | | - |
83 | | - - name: Fetch fork upstream |
84 | | - env: |
85 | | - REPO_NAME: ${{ github.event.pull_request.head.repo.full_name }} |
86 | | - run: | |
87 | | - git remote add forkUpstream https://github.com/$REPO_NAME # URL of the fork |
88 | | - git fetch forkUpstream # Fetch fork |
89 | | -
|
90 | | - - name: Compute git diff |
91 | | - env: |
92 | | - CURRENT_BRANCH: ${{ github.head_ref }} |
93 | | - TARGET_BRANCH: ${{ github.event.pull_request.base.ref }} |
94 | | - run: git diff --name-only origin/$TARGET_BRANCH forkUpstream/$CURRENT_BRANCH > diff_output.txt |
95 | | - |
96 | | - - run: npm install -g jscpd |
97 | | - |
98 | | - - run: jscpd --config "$GITHUB_WORKSPACE/.github/workflows/jscpd.json" |
99 | | - |
100 | | - - if: always() |
101 | | - uses: actions/upload-artifact@v4 |
102 | | - with: |
103 | | - name: unfiltered-jscpd-report |
104 | | - path: ./jscpd-report.json |
105 | | - |
106 | | - - name: Filter jscpd report for changed files |
107 | | - run: | |
108 | | - if [ ! -f ./jscpd-report.json ]; then |
109 | | - echo "jscpd-report.json not found" |
110 | | - exit 1 |
111 | | - fi |
112 | | - echo "Filtering jscpd report for changed files..." |
113 | | - CHANGED_FILES=$(jq -R -s -c 'split("\n")[:-1]' diff_output.txt) |
114 | | - echo "Changed files: $CHANGED_FILES" |
115 | | - jq --argjson changed_files "$CHANGED_FILES" ' |
116 | | - .duplicates | map(select( |
117 | | - (.firstFile?.name as $fname | $changed_files | any(. == $fname)) or |
118 | | - (.secondFile?.name as $sname | $changed_files | any(. == $sname)) |
119 | | - )) |
120 | | - ' ./jscpd-report.json > filtered-jscpd-report.json |
121 | | - cat filtered-jscpd-report.json |
122 | | -
|
123 | | - - name: Check for duplicates |
124 | | - run: | |
125 | | - if [ $(wc -l < ./filtered-jscpd-report.json) -gt 1 ]; then |
126 | | - echo "filtered_report_exists=true" >> $GITHUB_ENV |
127 | | - else |
128 | | - echo "filtered_report_exists=false" >> $GITHUB_ENV |
129 | | - fi |
130 | | - - name: upload filtered report (if applicable) |
131 | | - if: env.filtered_report_exists == 'true' |
132 | | - uses: actions/upload-artifact@v4 |
133 | | - with: |
134 | | - name: filtered-jscpd-report |
135 | | - path: ./filtered-jscpd-report.json |
136 | | - |
137 | | - - name: Fail and log found duplicates. |
138 | | - if: env.filtered_report_exists == 'true' |
139 | | - run: | |
140 | | - cat ./filtered-jscpd-report.json |
141 | | - echo "Duplications found, failing the check." |
142 | | - exit 1 |
143 | | -
|
144 | 58 | macos: |
145 | 59 | needs: lint-commits |
146 | 60 | name: test macOS |
|
0 commit comments