扣子智能体
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

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