refactor: 使用versions库替换自定义版本比较功能 #9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Go Tests and Examples | |
on: | |
push: | |
pull_request: | |
branches: [ main, master ] | |
jobs: | |
setup: | |
name: 依赖检查和环境准备 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.20' | |
cache: true | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Get dependencies | |
run: go mod download | |
unit-tests: | |
name: 单元测试 | |
needs: setup | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.20' | |
cache: true | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Get dependencies | |
run: go mod download | |
- name: Run unit tests | |
run: go test -v ./... | |
build-examples: | |
name: 示例构建 | |
needs: setup | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.20' | |
cache: true | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Get dependencies | |
run: go mod download | |
- name: Build examples | |
run: | | |
for dir in examples/*; do | |
if [ -d "$dir" ]; then | |
echo "Building example: $dir" | |
cd "$dir" | |
go build -v | |
cd - | |
fi | |
done | |
run-examples: | |
name: 示例运行 | |
needs: build-examples | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.20' | |
cache: true | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Get dependencies | |
run: go mod download | |
- name: Build examples | |
run: | | |
for dir in examples/*; do | |
if [ -d "$dir" ]; then | |
echo "Building example: $dir" | |
cd "$dir" | |
go build -v | |
cd - | |
fi | |
done | |
- name: Run examples | |
run: | | |
for dir in examples/*; do | |
if [ -d "$dir" ]; then | |
echo "Running example: $dir" | |
cd "$dir" | |
if [ -f "$(basename $dir)" ]; then | |
timeout 30s ./$(basename $dir) || echo "Example $dir timed out after 30 seconds" | |
fi | |
cd - | |
fi | |
done |