mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-23 08:56:42 +08:00
Document: github release for RAGFlow Go CLI (#16036)
### What problem does this PR solve? As title ### Type of change - [x] New Feature (non-breaking change which adds functionality) - [x] Documentation Update
This commit is contained in:
91
.github/workflows/release.yml
vendored
91
.github/workflows/release.yml
vendored
@@ -25,6 +25,7 @@ concurrency:
|
||||
jobs:
|
||||
release:
|
||||
runs-on: [ "self-hosted", "ragflow-release" ]
|
||||
|
||||
steps:
|
||||
- name: Ensure workspace ownership
|
||||
run: echo "chown -R ${USER} ${GITHUB_WORKSPACE}" && sudo chown -R ${USER} ${GITHUB_WORKSPACE}
|
||||
@@ -37,6 +38,13 @@ jobs:
|
||||
fetch-depth: 0
|
||||
fetch-tags: true
|
||||
|
||||
# https://github.com/actions/setup-go
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version-file: go.mod
|
||||
cache: true
|
||||
|
||||
- name: Prepare release body
|
||||
run: |
|
||||
if [[ ${GITHUB_EVENT_NAME} != "schedule" ]]; then
|
||||
@@ -52,8 +60,10 @@ jobs:
|
||||
PRERELEASE=true
|
||||
echo "Workflow triggered by schedule"
|
||||
fi
|
||||
|
||||
echo "RELEASE_TAG=${RELEASE_TAG}" >> ${GITHUB_ENV}
|
||||
echo "PRERELEASE=${PRERELEASE}" >> ${GITHUB_ENV}
|
||||
|
||||
RELEASE_DATETIME=$(date --rfc-3339=seconds)
|
||||
echo Release ${RELEASE_TAG} created from ${GITHUB_SHA} at ${RELEASE_DATETIME} > release_body.md
|
||||
|
||||
@@ -73,15 +83,88 @@ jobs:
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: Create or overwrite a release
|
||||
# https://github.com/actions/upload-release-asset has been replaced by https://github.com/softprops/action-gh-release
|
||||
- name: Build Go CLI release binaries
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
CLI_NAME="ragflow_cli"
|
||||
|
||||
CLI_MAIN="./cmd/ragflow_cli.go"
|
||||
|
||||
DIST_DIR="dist/cli"
|
||||
|
||||
mkdir -p "${DIST_DIR}"
|
||||
|
||||
if [[ ! -e "${CLI_MAIN}" ]]; then
|
||||
echo "::error::Go CLI entry does not exist: ${CLI_MAIN}"
|
||||
echo "::error::Please update CLI_MAIN in .github/workflows/release.yml"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Building Go CLI release binaries"
|
||||
echo "CLI name: ${CLI_NAME}"
|
||||
echo "CLI main: ${CLI_MAIN}"
|
||||
echo "Release tag: ${RELEASE_TAG}"
|
||||
echo "Commit: ${GITHUB_SHA}"
|
||||
|
||||
build_one() {
|
||||
local goos="$1"
|
||||
local goarch="$2"
|
||||
local ext="$3"
|
||||
|
||||
local output="${DIST_DIR}/${CLI_NAME}-${RELEASE_TAG}-${goos}-${goarch}${ext}"
|
||||
|
||||
echo "Building ${goos}/${goarch} -> ${output}"
|
||||
|
||||
CGO_ENABLED=0 \
|
||||
GOOS="${goos}" \
|
||||
GOARCH="${goarch}" \
|
||||
go build \
|
||||
-trimpath \
|
||||
-ldflags="-s -w -X main.version=${RELEASE_TAG} -X main.commit=${GITHUB_SHA}" \
|
||||
-o "${output}" \
|
||||
"${CLI_MAIN}"
|
||||
|
||||
if [[ "${goos}" != "windows" ]]; then
|
||||
chmod +x "${output}"
|
||||
fi
|
||||
}
|
||||
|
||||
build_one linux amd64 ""
|
||||
build_one linux arm64 ""
|
||||
build_one darwin amd64 ""
|
||||
build_one darwin arm64 ""
|
||||
build_one windows amd64 ".exe"
|
||||
build_one windows arm64 ".exe"
|
||||
|
||||
if command -v ldd >/dev/null 2>&1; then
|
||||
if ldd "${DIST_DIR}/${CLI_NAME}-${RELEASE_TAG}-linux-amd64" 2>&1 | grep -q "not a dynamic executable"; then
|
||||
echo "Verified linux/amd64 CLI is not dynamically linked"
|
||||
else
|
||||
echo "::error::linux/amd64 CLI is dynamically linked"
|
||||
ldd "${DIST_DIR}/${CLI_NAME}-${RELEASE_TAG}-linux-amd64" || true
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
cd "${DIST_DIR}"
|
||||
sha256sum * > SHA256SUMS
|
||||
cd -
|
||||
|
||||
echo "Generated CLI release assets:"
|
||||
ls -lh "${DIST_DIR}"
|
||||
|
||||
- name: Upload Go CLI release assets
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }} # Use the secret as an environment variable
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
prerelease: ${{ env.PRERELEASE }}
|
||||
tag_name: ${{ env.RELEASE_TAG }}
|
||||
# The body field does not support environment variable substitution directly.
|
||||
body_path: release_body.md
|
||||
files: |
|
||||
dist/cli/*
|
||||
install.sh
|
||||
install.ps1
|
||||
|
||||
- name: Build and push image
|
||||
run: |
|
||||
|
||||
Reference in New Issue
Block a user