mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-11-10 21:32:43 +08:00
129 lines
4.2 KiB
YAML
129 lines
4.2 KiB
YAML
name: release-python
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*.*.*" # normal release
|
|
|
|
permissions:
|
|
contents: write
|
|
actions: read
|
|
checks: read
|
|
statuses: read
|
|
|
|
# https://docs.github.com/en/actions/using-jobs/using-concurrency
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
prepare:
|
|
if: github.event.base_ref == 'refs/heads/0.27.x'
|
|
runs-on: ubuntu-24.04
|
|
outputs:
|
|
release_tag: ${{ steps.release.outputs.release_tag }}
|
|
prerelease: ${{ steps.release.outputs.prerelease }}
|
|
|
|
steps:
|
|
- name: Ensure workspace ownership
|
|
run: echo "chown -R ${USER} ${GITHUB_WORKSPACE}" && sudo chown -R ${USER} ${GITHUB_WORKSPACE}
|
|
|
|
# https://github.com/actions/checkout/blob/v6/README.md
|
|
- name: Check out code
|
|
uses: actions/checkout@v6
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }} # Use the secret as an environment variable
|
|
fetch-depth: 0
|
|
fetch-tags: true
|
|
|
|
- name: Prepare release metadata
|
|
id: release
|
|
run: |
|
|
RELEASE_TAG=${GITHUB_REF#refs/tags/}
|
|
if [[ ${RELEASE_TAG} == v* ]]; then
|
|
PRERELEASE=false
|
|
else
|
|
PRERELEASE=true
|
|
fi
|
|
echo "Workflow triggered by tag: ${RELEASE_TAG}"
|
|
echo "RELEASE_TAG=${RELEASE_TAG}" >> ${GITHUB_ENV}
|
|
echo "PRERELEASE=${PRERELEASE}" >> ${GITHUB_ENV}
|
|
echo "release_tag=${RELEASE_TAG}" >> ${GITHUB_OUTPUT}
|
|
echo "prerelease=${PRERELEASE}" >> ${GITHUB_OUTPUT}
|
|
|
|
release-python:
|
|
needs:
|
|
- prepare
|
|
runs-on: ubuntu-24.04
|
|
env:
|
|
RELEASE_TAG: ${{ needs.prepare.outputs.release_tag }}
|
|
|
|
steps:
|
|
- name: Ensure workspace ownership
|
|
run: echo "chown -R ${USER} ${GITHUB_WORKSPACE}" && sudo chown -R ${USER} ${GITHUB_WORKSPACE}
|
|
|
|
# https://github.com/actions/checkout/blob/v6/README.md
|
|
- name: Check out code
|
|
uses: actions/checkout@v6
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
fetch-depth: 0
|
|
fetch-tags: true
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v5
|
|
|
|
- name: Build and push image
|
|
run: |
|
|
sudo docker login --username infiniflow --password-stdin <<< ${{ secrets.DOCKERHUB_TOKEN }}
|
|
sudo docker build -t infiniflow/ragflow:${RELEASE_TAG} -f Dockerfile .
|
|
# sudo docker tag infiniflow/ragflow:${RELEASE_TAG} infiniflow/ragflow:latest
|
|
sudo docker push infiniflow/ragflow:${RELEASE_TAG}
|
|
# sudo docker push infiniflow/ragflow:latest
|
|
|
|
- name: Build and push ragflow-sdk
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
run: |
|
|
cd sdk/python && uv build && uv publish --token ${{ secrets.PYPI_API_TOKEN }}
|
|
|
|
- name: Build and push ragflow-cli
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
run: |
|
|
cd admin/client && uv build && uv publish --token ${{ secrets.PYPI_API_TOKEN }}
|
|
|
|
github-release:
|
|
needs:
|
|
- prepare
|
|
- release-python
|
|
runs-on: ubuntu-24.04
|
|
env:
|
|
RELEASE_TAG: ${{ needs.prepare.outputs.release_tag }}
|
|
|
|
steps:
|
|
- name: Ensure workspace ownership
|
|
run: echo "chown -R ${USER} ${GITHUB_WORKSPACE}" && sudo chown -R ${USER} ${GITHUB_WORKSPACE}
|
|
|
|
# https://github.com/actions/checkout/blob/v6/README.md
|
|
- name: Check out code
|
|
uses: actions/checkout@v6
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
fetch-depth: 0
|
|
fetch-tags: true
|
|
|
|
# Creating a GitHub Release auto-attaches the "Source code (zip)" and
|
|
# "Source code (tar.gz)" archives for the tagged commit.
|
|
# make_latest=false keeps this release off the "Latest" badge so an
|
|
# existing release keeps that marker.
|
|
- name: Create GitHub Release
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
PRERELEASE: ${{ needs.prepare.outputs.prerelease }}
|
|
run: |
|
|
gh api repos/${{ github.repository }}/releases \
|
|
-f tag_name="${RELEASE_TAG}" \
|
|
-f name="${RELEASE_TAG}" \
|
|
-f make_latest=false \
|
|
-F generate_release_notes=true \
|
|
$([ "${PRERELEASE}" = "true" ] && echo "-F prerelease=true")
|