diff --git a/.github/workflows/pr-rat-check.yml b/.github/workflows/pr-rat-check.yml new file mode 100644 index 00000000000..44703af893d --- /dev/null +++ b/.github/workflows/pr-rat-check.yml @@ -0,0 +1,42 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Run Apache RAT check + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + +jobs: + apache-rat-check: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Download Apache RAT + run: | + curl -LO https://repository.apache.org/content/repositories/snapshots/org/apache/rat/apache-rat/0.17-SNAPSHOT/apache-rat-0.17-20241115.065104-374.jar + + - name: Run Apache RAT + run: | + java -jar apache-rat-0.17-20241115.065104-374.jar --input-exclude-file .rat-excludes -- . > .tmp-rat-check-output + cat .tmp-rat-check-output + grep "Files with unapproved licenses:" .tmp-rat-check-output && rm .tmp-rat-check-output && echo "There are files with missing or unapproved license headers." && exit 1 || rm .tmp-rat-check-output && echo "All files have correct license headers." diff --git a/.gitignore b/.gitignore index 0fa740642fb..9b7817e7c6f 100644 --- a/.gitignore +++ b/.gitignore @@ -346,3 +346,7 @@ turbo.json # IntelliJ projects should be on _intellij-projects folder, never on specific packages. packages/*/.idea examples/*/.idea + + +# Apache RAT check excludes file +!.rat-excludes \ No newline at end of file diff --git a/.rat-excludes b/.rat-excludes new file mode 100644 index 00000000000..319e0847d88 --- /dev/null +++ b/.rat-excludes @@ -0,0 +1,79 @@ +### general excludes +**/*.iml +**/target/** +**/.* +*README* +*readme* +DISCLAIMER-WIP +**/src/test/resources/** +**/src/test/filtered-resources/** +**/*integration-test*/src/main/resources/** +**/**example**/**/resources/** +**/META-INF/services/** +**/META-INF/beans.xml +**/licenses/** + +### kie-tools specific excludes +**/patches/** +**/node_modules/** +**/dist/** +**/dist-dev/** +**/dist-tests/** +**/dist-tests-e2e/** +**/tests-data/** +**/ts-gen/** +**/python-venv/** +*devbox.lock +*pnpm-lock.yaml +*pnpm-workspace.yaml +**/*.d.ts +**/examples/** +**/tests/__fixtures__/** +**/tests/**/__fixtures__/** +**/tests/__snapshots__/** +**/tests/**/__snapshots__/** +**/e2e-tests/fixtures/** +**/e2e-tests/**/fixtures/** +**/e2e-tests/resources/** +**/e2e-tests/**/resources/** +**/tests-e2e/__fixtures__/** +**/tests/inputFiles/** +**/tests/expectedResults/** +**/tests/test-workspace/** +**/tests/**/resources/** +**/test-resources/tests/** +**/testdata/** +**/__screenshots__/** +*.iml +*.patch +**/graph.dot +*.wid +**/Chart.lock +*.base64png +**/check-junit-report-results/tests/reports/empty.xml +**/dev-deployment-upload-service/tests/test.zip +**/dmn-editor/src/spec.txt +**/drools-wb-scenario-simulation-editor-kogito-marshaller/src/main/java/** +**/errai-ui/src/test/**/*.less +**/errai-ui/src/test/**/*.html +**/form-code-generator-bootstrap4-theme/src/resources/staticCode/** +**/form-code-generator-bootstrap4-theme/src/resources/templates/** +**/form-code-generator-patternfly-theme/src/resources/** +**/fonts/OpenSans* +**/fonts/fontawesome* +**/generated-parser/* +**/kie-editors-standalone/resources/**/*.template +**/kie-wb-common-dmn/kie-wb-common-dmn-webapp-kogito-marshaller/src/main/java** +**/kie-wb-common-stunner-bpmn-emf/** +**/kie-sandbox-helm-chart/**/templates/** +**/runtime-tools-consoles-helm-chart/**/templates/** +**/serverless-workflow-standalone-editor/resources/**/*.template +**/schemas/dmn*/*.xsd +**/schemas/bpmn*/*.xsd +**/templates/*.ftl +**/third_party/gwtbootstrap3/** +**/uniforms-bootstrap4-codegen/src/resources/staticCode/** +**/uniforms-bootstrap4-codegen/src/resources/templates/** +**/uniforms-patternfly-codegen/src/resources/** +**/vscode-java-code-completion-extension-plugin-core/src/main/resources/templates/** +**/xml-parser-ts-codegen/**/*.xsd