name: Go Build & Release on: push: branches: - main workflow_dispatch: inputs: servicePort: description: '服务启动端口' required: true default: 8080 type: number jobs: prepare-version: runs-on: ubuntu-latest outputs: build_version: ${{ steps.set-hash-version.outputs.version }} steps: - uses: actions/checkout@v4 - name: Set commit hash as version id: set-hash-version run: | COMMIT_HASH=$(git rev-parse --short=8 HEAD) echo "version=v$COMMIT_HASH" >> $GITHUB_OUTPUT build: needs: prepare-version runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: 缓存Go依赖 uses: actions/cache@v3 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.mod') }} restore-keys: | ${{ runner.os }}-go- - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.25' - name: 编译logic服务 run: | mkdir -p build go build -o ./build/logic_${{ needs.prepare-version.outputs.build_version }} -v ./logic - name: 上传到七牛云 uses: cumt-robin/upload-to-qiniu-action@v1 with: access_key: ${{ secrets.QINIU_AK }} secret_key: ${{ secrets.QINIU_SK }} bucket: ${{ secrets.QINIU_BUCKET_NAME }} region: z2 local_dir: build - name: Upload Build Artifact uses: actions/upload-artifact@v4 with: name: logic_${{ needs.prepare-version.outputs.build_version }} path: ./build/logic_${{ needs.prepare-version.outputs.build_version }} # - name: 推送到服务器并通过screen启动服务 # uses: easingthemes/ssh-deploy@main # env: # SSH_PRIVATE_KEY: ${{ secrets.BLAZING }} # REMOTE_HOST: "125.208.20.223" # REMOTE_PORT: 22916 # REMOTE_USER: "root" # SOURCE: "logic_${{ needs.prepare-version.outputs.build_version }}" # 只指定可执行文件作为源 # TARGET: "/home/" # ARGS: "-avz --chown=git:git" # 保持权限参数 # SCRIPT_AFTER: | # SCREEN_NAME="logic-${{ needs.prepare-version.outputs.build_version }}" # screen -S $SCREEN_NAME -X quit 2>/dev/null || true # screen -dmS $SCREEN_NAME /home/logic_${{ needs.prepare-version.outputs.build_version }} -port=${{ github.event.inputs.servicePort }} # echo "======================================" # echo "服务启动成功!" # echo "Screen会话名:$SCREEN_NAME" # echo "服务端口:${{ github.event.inputs.servicePort }}" # echo "对应Commit:${{ github.sha }}" # echo "七牛云下载地址: https://${{ secrets.QINIU_CDN_DOMAIN }}/releases/logic_${{ needs.prepare-version.outputs.build_version }}" # echo "管理命令:" # echo " - 进入会话:screen -r $SCREEN_NAME" # echo " - 查看所有会话:screen -ls" # echo " - 停止服务:screen -S $SCREEN_NAME -X quit" # echo "======================================" create-release: needs: [prepare-version, build] permissions: contents: write runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # 需要重新拉取代码以获取编译产物 - name: 下载构建产物 uses: actions/download-artifact@v4 with: name: logic_${{ needs.prepare-version.outputs.build_version }} path: . # 下载到当前目录 - name: Create GitHub Release uses: softprops/action-gh-release@v1 with: tag_name: ${{ needs.prepare-version.outputs.build_version }} name: Release ${{ needs.prepare-version.outputs.build_version }} body: | ## 自动构建发布 - 版本号: ${{ needs.prepare-version.outputs.build_version }} - 触发方式: 手动触发 - 服务端口: ${{ github.event.inputs.servicePort }} - Screen会话名: logic-${{ needs.prepare-version.outputs.build_version }} - 对应Commit: ${{ github.sha }} - 可执行文件: logic_${{ needs.prepare-version.outputs.build_version }} - 启动命令: ./logic_${{ needs.prepare-version.outputs.build_version }} -port=${{ github.event.inputs.servicePort }} - 七牛云下载地址: https://${{ secrets.QINIU_CDN_DOMAIN }}/releases/logic_${{ needs.prepare-version.outputs.build_version }} files: logic_${{ needs.prepare-version.outputs.build_version }} # 只上传可执行文件 draft: false prerelease: false