Super-Linter에서 JSCPD ENOTDIR 오류가 발생한 경우 해결
소개
Super-Linter 편리하네요!
과거에는 언어별 lint 설정을 GitHub Actions에 열심히 통합했지만 Super-Linter가 대략적인 것은 마음대로 보았습니다.
하지만 새롭게 대응한 linter 에 갑자기 튕겨지거나 상반되는 룰을 보는 탓에 튕겨지거나 가끔 휘두르는 경우도 있습니다
요 전날 Super-Linter를 의기적으로 움직였을 때 다음과 같은 오류가 발생했습니다.
2021-06-10 06:46:08 [ERROR] Found errors in [jscpd] linter!
2021-06-10 06:46:08 [ERROR] Error code: 1. Command output:
------
Error: ENOTDIR: not a directory, scandir '/github/workspace/.github/linters/.hadolint.yaml'
at Object.readdirSync (node:fs:1048:3)
at readdir (/node_modules/@nodelib/fs.scandir/out/providers/sync.js:39:31)
at Object.read (/node_modules/@nodelib/fs.scandir/out/providers/sync.js:12:12)
at SyncReader.scandirSync [as _scandir] (/node_modules/@nodelib/fs.scandir/out/index.js:17:17)
at SyncReader._handleDirectory (/node_modules/@nodelib/fs.walk/out/readers/sync.js:28:34)
at SyncReader._handleQueue (/node_modules/@nodelib/fs.walk/out/readers/sync.js:23:18)
at SyncReader.read (/node_modules/@nodelib/fs.walk/out/readers/sync.js:15:14)
at SyncProvider.read (/node_modules/@nodelib/fs.walk/out/providers/sync.js:11:29)
at ReaderSync.walkSync [as _walkSync] (/node_modules/@nodelib/fs.walk/out/index.js:19:21)
at ReaderSync.dynamic (/node_modules/fast-glob/out/readers/sync.js:13:21) {
errno: -20,
syscall: 'scandir',
code: 'ENOTDIR',
path: '/github/workspace/.github/linters/.hadolint.yaml'
}
------
jscpd,,,,
그래서 대처한 기록입니다.
오류 원인
.hadolint.yaml
는 Dockerfile의 linter 인 hadolint 구성 파일입니다.hadolint를 로컬로 실행할 때이 구성 파일을 프로젝트의 루트에 배치합니다.
그 위에 Super-Linter
.github/linters/.hadolint.yaml
에서도 참조 할 수 있도록 기호 링크를 붙였습니다.이제 hadolint가 통과 할 것이라고 생각했지만 위의 오류를 겪었습니다.
jscpd 코드의 중복을 찾습니다 (가끔 copipe로 jscpd에 화가납니다)
jscpd가 심볼릭 링크 자체를 구문 분석하려고 할 때 오류가 발생한 것 같습니다.
Super-Linter 공식 Issue에도 있지만, 잡히지 않고 닫고 있습니다
대처
그래서 심볼릭 링크를 두는 대신 Super-Linter의 참조 대상을 변경하기로 결정했습니다.
Super-Linter 런타임 환경 변수
LINTER_RULES_PATH
에 .
을 지정합니다. - name: Super Linter
uses: github/super-linter@v3
env:
LINTER_RULES_PATH: .
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
이제 프로젝트 루트 바로 아래의 구성 파일을 볼 수 있습니다.
공식이 심볼릭 링크에 대응해 줄 때까지는, 이쪽의 대처 밖에 사용할 수 없습니다
아무래도 심볼릭 링크를 사용하고 싶다면, 그 때는 또 생각합시다
관련
설정 파일을 지정하는 방법을 설명하는 기사입니다.
Reference
이 문제에 관하여(Super-Linter에서 JSCPD ENOTDIR 오류가 발생한 경우 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/RyoWakabayashi/items/6fe0e22ce7f692d67d04텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)