Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
ddaf1b0
fix: correct LICENSE to match official Apache License 2.0 text
xuxiaowei-com-cn Aug 1, 2026
8a18941
feat: auto-generate LICENSE files for distribution modules
xuxiaowei-com-cn Aug 1, 2026
be99f3f
feat: update LICENSE files for new dependencies and add license overr…
xuxiaowei-com-cn Aug 1, 2026
e63864d
fix: normalize license names to SPDX identifiers in generate-license.…
xuxiaowei-com-cn Aug 1, 2026
30eb811
feat: auto-generate distribution LICENSE and normalize license names …
xuxiaowei-com-cn Aug 1, 2026
54b74da
chore: remove __pycache__ from version control and add to .gitignore
xuxiaowei-com-cn Aug 1, 2026
21eb5bb
fix: add missing Apache-2.0 license header to generate-license.py
xuxiaowei-com-cn Aug 1, 2026
1a3c4d8
doc: add auto-generate distribution LICENSE to 2.x changes
xuxiaowei-com-cn Aug 1, 2026
14e98c0
feat: enhance license checker CI workflow
xuxiaowei-com-cn Aug 1, 2026
b564fde
ci: split license checker into two jobs and improve license file veri…
xuxiaowei-com-cn Aug 1, 2026
109fff1
ci: update license Maven cache key prefix and remove date suffix
xuxiaowei-com-cn Aug 1, 2026
06aa176
feat: add install targets and fix LICENSE generation dependencies
xuxiaowei-com-cn Aug 1, 2026
9ce1b8b
feat: add --strict flag to fail on unknown license warnings
xuxiaowei-com-cn Aug 1, 2026
c232c6f
Merge branch '2.x' into xuxiaowei/LICENSE
funky-eyes Aug 5, 2026
679686b
Merge branch '2.x' into xuxiaowei/LICENSE
xuxiaowei-com-cn Aug 7, 2026
10a237f
Merge branch '2.x' into xuxiaowei/LICENSE
xuxiaowei-com-cn Aug 8, 2026
17e81a6
chore: add jackson-dataformat-csv dependency to namingserver
xuxiaowei-com-cn Aug 11, 2026
61345ef
Revert "chore: add jackson-dataformat-csv dependency to namingserver"
xuxiaowei-com-cn Aug 11, 2026
2551272
Merge branch '2.x' into xuxiaowei/LICENSE
xuxiaowei-com-cn Aug 11, 2026
7d02a1a
fix: add missing install-only and install to .PHONY targets
xuxiaowei-com-cn Aug 11, 2026
da95a79
Merge branch '2.x' into xuxiaowei/LICENSE
xuxiaowei-com-cn Aug 12, 2026
b2980ce
Merge branch '2.x' into xuxiaowei/LICENSE
xuxiaowei-com-cn Aug 14, 2026
e868302
Merge branch '2.x' into xuxiaowei/LICENSE
xuxiaowei-com-cn Aug 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 86 additions & 5 deletions .github/workflows/license-checker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: License checker

on:
Expand All @@ -25,7 +26,8 @@ concurrency:
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
check-license:
# Job 1: check license header and dependencies' license
check-license-header:
runs-on: ubuntu-latest
steps:
# step 1 clear cache
Expand All @@ -35,21 +37,100 @@ jobs:
# step 2 checkout
- name: Checkout
uses: actions/checkout@v3
# step 3 https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/
# step 3 setup node https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/
- uses: actions/setup-node@v3
with:
node-version: '14.x'
# step 4 check license
# step 4 check license header
- name: Check License Header
uses: apache/skywalking-eyes/header@8fc52baabc14c86294d96034bcc194cfa7f76b05
with:
log: info
config: .licenserc.yaml
mode: check
# step 5 check dependencies
# step 5 check dependencies' license
- name: Check Dependencies' License
uses: apache/skywalking-eyes/dependency@8fc52baabc14c86294d96034bcc194cfa7f76b05
with:
log: info
config: .licenserc.yaml
mode: check
mode: check

# Job 2: build and verify generated license files
check-license-files:
runs-on: ubuntu-latest
steps:
# step 1 checkout
- name: Checkout
uses: actions/checkout@v3
# step 2 set up Go
- name: "Set up Go"
uses: actions/setup-go@v5
with:
go-version: '1.26'
# step 3 install license-eye CLI
- name: "Install license-eye"
run: go install github.com/apache/skywalking-eyes/cmd/license-eye@latest
# step 4 set up Java JDK
- name: "Set up Java JDK 25"
uses: actions/setup-java@v3.12.0
with:
distribution: 'zulu'
java-version: 25
# step 4 print maven version
- name: "Print maven version"
run: ./mvnw -version
# step 5 restore local maven repository cache
- name: "Restore local maven repository cache"
uses: actions/cache/restore@v4
id: cache-maven-repository
with:
path: ~/.m2/repository
key: ${{ runner.os }}-license-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-license-maven-
# step 6 build (generates license-related files via maven plugin)
- name: Build with Maven
run: ./mvnw -B clean install -DskipTests
# step 7 save local maven repository cache
- name: "Save local maven repository cache"
uses: actions/cache/save@v4
if: steps.cache-maven-repository.outputs.cache-hit != 'true'
with:
path: ~/.m2/repository
key: ${{ runner.os }}-license-maven-${{ hashFiles('**/pom.xml') }}
# step 8 check for uncommitted changes after maven build
- name: Check for changes after Maven build
run: |
if ! git diff --exit-code; then
echo "::error::Uncommitted changes detected after Maven build."
echo "Please run './mvnw -B clean install -DskipTests' locally and commit the generated files."
exit 1
fi
# step 9 generate LICENSE files for distribution
- name: Generate LICENSE files
run: ./script/license/generate-license.sh all
# step 10 save diff to file
- name: Save license diff to file
run: git diff > license-diff.diff
# step 11 upload diff as artifact
- name: Upload license diff
if: always()
uses: actions/upload-artifact@v4
with:
name: license-diff
path: license-diff.diff
# step 12 check for license file changes and fail if present
- name: Check for license file changes
run: |
if [ -s license-diff.diff ]; then
echo "License file changes detected:"
cat license-diff.diff
echo ""
echo "::error::License files are out of date."
echo "Please run './script/license/generate-license.sh all' locally and commit the changes."
echo "You can also download the license-diff artifact from this CI run's artifacts, then apply it with: git apply license-diff.diff"
exit 1
else
echo "No license file changes detected. All good!"
fi
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ dependency-reduced-pom.xml
/distribution/*/sessionStore/
/file_store/

# python ignore
__pycache__/

# system ignore
.DS_Store
Thumbs.db
Expand Down
85 changes: 85 additions & 0 deletions .licenserc-distribution.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#
# 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.
#

# License header check configuration (same as main .licenserc.yaml)
header:
license:
spdx-id: Apache-2.0
copyright-owner: Apache Software Foundation
content: |
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.

paths-ignore:
- 'LICENSE'
- 'NOTICE'
- 'DISCLAIMER'
- '**/org/apache/seata/sqlparser/antlr/**/*.g4'
- 'distribution/licenses/**'
- 'distribution/LICENSE'
- 'distribution/LICENSE-*'
- 'distribution/NOTICE'
- 'distribution/NOTICE-*'
- '**/*.txt' #txt files not support comments
- '**/*.json' #json files not support comments
- '**/*.png'
- '**/*.jpg'
- '**/*.jpeg'
- '**/*.ico'
- '**/*.tokens'
- '**/*.interp'
- '**/.babelrc' #json format
- '**/.eslintrc' #json format
- '**/.prettierrc' #json format
- '**/.mvn/jvm.config'
comment: on-failure

# Dependency license resolution for distribution module (combined)
dependency:
files:
- server/pom.xml
- namingserver/pom.xml
- saga/seata-saga-statemachine-designer/package.json
- console/src/main/resources/static/console-fe/package.json
excludes:
- name: org.apache.seata:*
recursive: false
# exclude manually confirmed license
# BSD-3-Clause https://www.npmjs.com/package/universal-canvas-context
- name: universal-canvas-context
recursive: false
# BSD-3-Clause https://www.npmjs.com/package/universal-element
- name: universal-element
recursive: false
# remove later https://www.npmjs.com/package/@gcanvas/core
- name: "@gcanvas/core"
recursive: true
# remove later https://www.npmjs.com/package/universal-env
- name: universal-env
recursive: true
84 changes: 84 additions & 0 deletions .licenserc-namingserver.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#
# 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.
#

# License header check configuration (same as main .licenserc.yaml)
header:
license:
spdx-id: Apache-2.0
copyright-owner: Apache Software Foundation
content: |
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.

paths-ignore:
- 'LICENSE'
- 'NOTICE'
- 'DISCLAIMER'
- '**/org/apache/seata/sqlparser/antlr/**/*.g4'
- 'distribution/licenses/**'
- 'distribution/LICENSE'
- 'distribution/LICENSE-*'
- 'distribution/NOTICE'
- 'distribution/NOTICE-*'
- '**/*.txt' #txt files not support comments
- '**/*.json' #json files not support comments
- '**/*.png'
- '**/*.jpg'
- '**/*.jpeg'
- '**/*.ico'
- '**/*.tokens'
- '**/*.interp'
- '**/.babelrc' #json format
- '**/.eslintrc' #json format
- '**/.prettierrc' #json format
- '**/.mvn/jvm.config'
comment: on-failure

# Dependency license resolution for namingserver module
dependency:
files:
- namingserver/pom.xml
- saga/seata-saga-statemachine-designer/package.json
- console/src/main/resources/static/console-fe/package.json
excludes:
- name: org.apache.seata:*
recursive: false
# exclude manually confirmed license
# BSD-3-Clause https://www.npmjs.com/package/universal-canvas-context
- name: universal-canvas-context
recursive: false
# BSD-3-Clause https://www.npmjs.com/package/universal-element
- name: universal-element
recursive: false
# remove later https://www.npmjs.com/package/@gcanvas/core
- name: "@gcanvas/core"
recursive: true
# remove later https://www.npmjs.com/package/universal-env
- name: universal-env
recursive: true
84 changes: 84 additions & 0 deletions .licenserc-server.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#
# 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.
#

# License header check configuration (same as main .licenserc.yaml)
header:
license:
spdx-id: Apache-2.0
copyright-owner: Apache Software Foundation
content: |
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.

paths-ignore:
- 'LICENSE'
- 'NOTICE'
- 'DISCLAIMER'
- '**/org/apache/seata/sqlparser/antlr/**/*.g4'
- 'distribution/licenses/**'
- 'distribution/LICENSE'
- 'distribution/LICENSE-*'
- 'distribution/NOTICE'
- 'distribution/NOTICE-*'
- '**/*.txt' #txt files not support comments
- '**/*.json' #json files not support comments
- '**/*.png'
- '**/*.jpg'
- '**/*.jpeg'
- '**/*.ico'
- '**/*.tokens'
- '**/*.interp'
- '**/.babelrc' #json format
- '**/.eslintrc' #json format
- '**/.prettierrc' #json format
- '**/.mvn/jvm.config'
comment: on-failure

# Dependency license resolution for server module
dependency:
files:
- server/pom.xml
- saga/seata-saga-statemachine-designer/package.json
- console/src/main/resources/static/console-fe/package.json
excludes:
- name: org.apache.seata:*
recursive: false
# exclude manually confirmed license
# BSD-3-Clause https://www.npmjs.com/package/universal-canvas-context
- name: universal-canvas-context
recursive: false
# BSD-3-Clause https://www.npmjs.com/package/universal-element
- name: universal-element
recursive: false
# remove later https://www.npmjs.com/package/@gcanvas/core
- name: "@gcanvas/core"
recursive: true
# remove later https://www.npmjs.com/package/universal-env
- name: universal-env
recursive: true
Loading
Loading