라이선스 컴플라이언스
라이선스: Ultimate
GitLab CI/CD를 사용하는 경우, 라이선스 컴플라이언스(License Compliance)를 사용하여 라이선스에 대한 프로젝트의 의존성을 검색할 수 있습니다. 그런 다음 각 라이선스의 사용을 허용할지 거부할지를 결정할 수 있습니다. 예를 들어, 애플리케이션이 라이선스와 호환되지 않는 외부(오픈 소스) 라이브러리를 사용하는 경우, 해당 라이선스의 사용을 거부할 수 있습니다.
다음 중 하나를 통해 라이선스 컴플라이언스를 활용할 수 있습니다.
- 기존
.gitlab-ci.yml
파일에 라이선스를 스캐닝하는 Job을 포함합니다. (include
키워드를 사용하여License-Scanning.gitlab-ci.yml
템플릿을 추가) - Auto DevOps에서 제공하는 Auto License Compliance를 암묵적으로 사용합니다.
사용 중인 라이선스를 감지하기 위해 License Compliance는 CI/CD 파이프라인의 일부로 실행되는 License Finder 스캔 도구를 사용합니다. Job을 활성화하려면 License Finder가 프로젝트 디렉터리에서 호환되는 패키지 정의를 찾아야 합니다. 자세한 내용은 License Finder 문서의 Activation 섹션을 참조하십시오. GitLab은 License Compliance 보고서를 확인하고, 소스 브랜치와 타겟 브랜치 간의 라이선스를 비교하여, Merge Request에 정보를 바로 보여줍니다. 거부된 라이선스는 사용자의 결정이 필요한 새 라이선스와 함께 라이선스 옆에 빨간색 x
아이콘으로 표시됩니다. 또한, 프로젝트의 라이선스 컴플라이언스 섹션에 있는 정책 탭에서 라이선스를 수동으로 허용하거나 거부할 수 있습니다. 거부된 라이선스가 새 커밋에서 감지되면, GitLab은 해당 커밋이 포함된 모든 Merge Request를 차단하고 개발자에게 라이선스를 제거하도록 지시합니다.
라이선스 컴플라이언스 보고서에 비교할 항목이 없으면, Merge Request 영역에 정보가 표시되지 않습니다. 처음으로 .gitlab-ci.yml
에 license_scanning
Job을 추가하는 경우입니다. 연속적인 Merge Request에는 비교할 대상이 있으며 라이선스 컴플라이언스 보고서가 제대로 표시됩니다.
라이선스를 선택하면 더 많은 정보를 볼 수 있습니다.
GitLab이 거부된 라이선스를 감지하면 라이선스 목록에서 확인할 수 있습니다.
Polices 탭에서 기존 정책을 보고 수정할 수 있습니다.
라이선스 표현식
GitLab은 복합 라이선스에 대한 지원이 제한적 입니다. 라이선스 컴플라이언스는 여러 라이선스를 읽을 수 있지만, 항상 AND
연산자를 사용하여 결합된 것으로 간주합니다. 예를 들어, 의존성에 두 개의 라이선스가 있고 그 중 하나는 허용되고 다른 하나는 프로젝트 정책에 의해 거부되는 경우, GitLab은 복합 라이선스를 거부된 것으로 평가합니다. 이것이 더 안전한 옵션이기 때문입니다. 다른 라이선스 표현식 연산자(예: OR
, WITH
)를 지원하는 기능은 이 에픽에서 추적됩니다.
지원되는 언어 및 패키지 매니저
다음 언어 및 패키지 매니저가 지원됩니다.
Gradle 1.x 프로젝트는 지원되 지 않습니다. Maven의 최소 지원 버전은 3.2.5입니다.
언어 | 패키지 매니저 | 비고 |
---|---|---|
JavaScript | Bower, npm(7 이전) | |
Go | Godep (deprecated), go mod | |
Java | Gradle, Maven | |
.NET | NuGet | .NET Framework는 Mono 프로젝트를 통해 지원됩니다. 그러나 몇 가지 제한 사항이 있습니다. 스캐너는 Windows 고유의 의존성을 지원하지 않으며 프로젝트에 나열된 의존성의 의존성을 보고하지 않습니다. 또한 스캐너는 항상 모든 의존성에 대해 감지된 라이선스를 unknown 로 표시합니다. |
Python | pip | Python은 requirements.txt 및 Pipfile.lock을 통해 지원됩니다. |
Ruby | gem |
실험적 지원
다음 언어 및 패키지 관리자가 실험적으로 지원됩니다.
보고된 라이선스가 불완전하거나 정확하지 않을 수 있습니다.
언어 | 패키지 매니저 |
---|---|
JavaScript | Yan |
Go | go get , gvt , glide , dep , trash , govendor |
Erlang | Rebar |
Objective-C, Swift | Carthage, CocoaPods (v0.39 이하) |
Elixir | Mix |
C++/C | Conan |
Rust | Cargo |
PHP | Composer |