You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.9 KiB
70 lines
1.9 KiB
name: Thrift Syntax Validation
|
|
|
|
on:
|
|
push:
|
|
branches: ['main']
|
|
paths:
|
|
- 'idl/**'
|
|
- '.github/workflows/idl.yaml'
|
|
pull_request:
|
|
branches: ['main']
|
|
paths:
|
|
- 'idl/**'
|
|
- '.github/workflows/idl.yaml'
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
validate-thrift:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v4
|
|
with:
|
|
go-version: '1.21'
|
|
|
|
- name: Install kitex tools
|
|
run: |
|
|
go install github.com/cloudwego/thriftgo@v0.4.1
|
|
go install github.com/cloudwego/kitex/tool/cmd/kitex@v0.13.1
|
|
go install github.com/cloudwego/thrift-gen-validator@v0.2.6
|
|
|
|
- name: Validate Thrift Files via kitex
|
|
run: |
|
|
# Initialize error flag
|
|
ERROR_FOUND=0
|
|
|
|
# Create temporary working directory
|
|
TEMP_DIR=$(mktemp -d)
|
|
echo "Created temporary working directory: $TEMP_DIR"
|
|
|
|
# Initialize go mod in temp directory
|
|
cd "$TEMP_DIR"
|
|
go mod init dummy
|
|
|
|
# Find all thrift files and validate them
|
|
while IFS= read -r -d '' thrift_file; do
|
|
echo "Validating $thrift_file..."
|
|
if ! kitex -streamx -thrift ignore_initialisms=false -module=dummy "$thrift_file" 2>&1; then
|
|
echo "IDL gen code error in file: $thrift_file"
|
|
ERROR_FOUND=1
|
|
fi
|
|
done < <(find "$GITHUB_WORKSPACE/idl" -name '*.thrift' -print0)
|
|
|
|
# Clean up temporary directory
|
|
cd "$GITHUB_WORKSPACE"
|
|
rm -rf "$TEMP_DIR"
|
|
echo "Cleaned up temporary working directory"
|
|
|
|
# Exit with appropriate status
|
|
if [ $ERROR_FOUND -eq 1 ]; then
|
|
echo "Thrift validation failed. Please check the errors above."
|
|
exit 1
|
|
else
|
|
echo "All Thrift files validated successfully!"
|
|
exit 0
|
|
fi
|
|
|