aa9f892a32
- 新增数据库配置项(DB_TYPE, DB_HOST, DB_PORT等),支持MySQL和PostgreSQL - 集成GORM实现数据库连接和自动迁移功能 - 添加定时任务调度器(cmd/scheduler),基于robfig/cron实现秒级调度 - 实现事件Hook体系,支持同步/异步处理和优先级排序 - 更新构建脚本,编译server、cli、scheduler三个二进制文件 - 配置systemd服务管理定时任务调度器 - 重构项目结构,新增crontab和hooks目录模块 - 更新README文档,完善各组件使用说明和部署配置
64 lines
1.8 KiB
YAML
64 lines
1.8 KiB
YAML
name: 'Build & Deploy'
|
|
on:
|
|
push:
|
|
tags:
|
|
- v*
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: shiran2488/golang-with-node:1.23
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Build Action
|
|
run: |
|
|
go build -ldflags="-s -w" -o server ./cmd/main_program
|
|
go build -ldflags="-s -w" -o cli ./cmd/cli_control
|
|
go build -ldflags="-s -w" -o scheduler ./cmd/scheduler
|
|
|
|
- name: Save artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: build-artifacts
|
|
path: |
|
|
./server
|
|
./cli
|
|
./scheduler
|
|
|
|
deploy:
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Download Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: build-artifacts
|
|
|
|
- name: Set up SSH
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "${{ secrets.PUBLICT_PRIVATE_KEY }}" > ~/.ssh/id_rsa
|
|
chmod 600 ~/.ssh/id_rsa
|
|
echo "${{ vars.DEPLOY_SERVER_LIST }}" > server_list.txt
|
|
while read -r ip; do
|
|
if [ -n "$ip" ]; then
|
|
ssh-keyscan -H "$ip" >> ~/.ssh/known_hosts
|
|
fi
|
|
done < server_list.txt
|
|
|
|
- name: Deploy to servers
|
|
run: |
|
|
while read -r ip; do
|
|
if [ -n "$ip" ]; then
|
|
echo "Deploying to $ip..."
|
|
scp -o StrictHostKeyChecking=no server cli scheduler ${{ vars.ROOT_USER_NAME }}@"$ip":/root/
|
|
ssh -n ${{ vars.ROOT_USER_NAME }}@"$ip" << 'ENDSSH'
|
|
chmod +x /root/server /root/cli /root/scheduler
|
|
systemctl restart server cli scheduler
|
|
ENDSSH
|
|
echo "Deployment to $ip completed"
|
|
fi
|
|
done < server_list.txt
|