Skip to content

优化 GitHub Actions 流程:更新 RocketMQ 下载方式,增强启动脚本的健壮性 #155

优化 GitHub Actions 流程:更新 RocketMQ 下载方式,增强启动脚本的健壮性

优化 GitHub Actions 流程:更新 RocketMQ 下载方式,增强启动脚本的健壮性 #155

Workflow file for this run

name: test
on:
push:
branches: [ '*' ]
pull_request:
branches: [ '*' ]
jobs:
build-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Setup dotNET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.x
7.x
8.x
9.x
10.x
- name: Download & Extract RocketMQ
run: |
RMQ_VERSION="5.3.1"
# 主用 Apache Archive,镜像为备用
curl -fsSL "https://archive.apache.org/dist/rocketmq/${RMQ_VERSION}/rocketmq-all-${RMQ_VERSION}-bin-release.zip" \
-o /tmp/rocketmq.zip || \
curl -fsSL "https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/${RMQ_VERSION}/rocketmq-all-${RMQ_VERSION}-bin-release.zip" \
-o /tmp/rocketmq.zip
unzip -q /tmp/rocketmq.zip -d /tmp/
mv /tmp/rocketmq-all-${RMQ_VERSION}-bin-release /tmp/rocketmq
chmod +x /tmp/rocketmq/bin/*.sh
- name: Start RocketMQ
run: |
# 创建 broker.conf
cat > /tmp/rocketmq/conf/broker_test.conf << 'CONF'
brokerClusterName=DefaultCluster

Check failure on line 49 in .github/workflows/test.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/test.yml

Invalid workflow file

You have an error in your yaml syntax on line 49
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
autoCreateTopicEnable=true
listenPort=10911
storePathRootDir=/tmp/rocketmq/store
brokerIP1=127.0.0.1
diskMaxUsedSpaceRatio=100
diskSpaceWarningLevelRatio=100
CONF
# 限制 JVM 内存(GitHub Actions 仅 7GB)
export MAX_HEAP_SIZE="256m"
export HEAP_NEWSIZE="128m"
echo "=== 启动 NameServer ==="
nohup /tmp/rocketmq/bin/mqnamesrv > /tmp/namesrv.log 2>&1 &
for i in $(seq 1 30); do
if grep -q "boot success" /tmp/namesrv.log 2>/dev/null; then
echo "NameServer 已启动 (PID=$(pgrep -f NamesrvStartup))"
break
fi
sleep 1
done
if ! grep -q "boot success" /tmp/namesrv.log 2>/dev/null; then
echo "=== NameServer 启动失败 ==="
cat /tmp/namesrv.log
exit 1
fi
echo "=== 启动 Broker ==="
nohup /tmp/rocketmq/bin/mqbroker -c /tmp/rocketmq/conf/broker_test.conf -n 127.0.0.1:9876 > /tmp/broker.log 2>&1 &
for i in $(seq 1 40); do
if grep -q "boot success" /tmp/broker.log 2>/dev/null; then
echo "Broker 已启动 (PID=$(pgrep -f BrokerStartup))"
break
fi
sleep 1
done
if ! grep -q "boot success" /tmp/broker.log 2>/dev/null; then
echo "=== Broker 启动失败 ==="
cat /tmp/broker.log
exit 1
fi
- name: Build
run: |
dotnet build -c Release
- name: Test
env:
ROCKETMQ_NAMESERVER: "127.0.0.1:9876"
run: |
dotnet test XUnitTestRocketMQ/XUnitTest.csproj -c Release --no-build -v n
- name: Stop RocketMQ
if: always()
run: |
pkill -f BrokerStartup 2>/dev/null || true
pkill -f NamesrvStartup 2>/dev/null || true