Introduces the LightRAG Retrieval-Augmented Generation framework as an Apolo app, including input/output schemas, types, and processors. Adds Helm chart value processing, environment and persistence configurations, and output service discovery for deployment. Includes scripts for generating type schemas and testing support, along with CI and linting setup tailored for the new app. Provides a documentation loader script to ingest markdown files into LightRAG with flexible referencing modes. Relates to MLO-469
106 lines
3 KiB
YAML
106 lines
3 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
tags: ["v*"]
|
|
pull_request:
|
|
branches: [master]
|
|
schedule:
|
|
- cron: 0 4 * * *
|
|
|
|
jobs:
|
|
test:
|
|
name: All checks are passed
|
|
uses: ./.github/workflows/test.yaml
|
|
secrets: inherit
|
|
|
|
approve:
|
|
name: Approve bot PR
|
|
runs-on: ubuntu-latest
|
|
if: endsWith(github.actor, '[bot]')
|
|
needs: test
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: metadata
|
|
id: metadata
|
|
if: github.actor == 'dependabot[bot]'
|
|
uses: dependabot/fetch-metadata@v2
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Enable auto-merge for bot PRs
|
|
run: gh pr merge --auto --squash --delete-branch "$PR_URL"
|
|
env:
|
|
PR_URL: ${{ github.event.pull_request.html_url }}
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
release-processor-image:
|
|
name: Release processor image
|
|
runs-on: ubuntu-latest
|
|
needs: test
|
|
if: github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/master')
|
|
steps:
|
|
- name: Checkout commit
|
|
uses: actions/checkout@v4
|
|
- name: Purge old artifacts
|
|
uses: kolpav/purge-artifacts-action@v1
|
|
with:
|
|
token: ${{ github.token }}
|
|
expire-in: 30mins
|
|
- name: Login to ghcr.io
|
|
uses: docker/login-action@v3.5.0
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ github.token }}
|
|
- name: Release development image
|
|
run: |
|
|
make build-hook-image
|
|
- name: Release development image
|
|
run: |
|
|
export IMAGE_TAG=development
|
|
make push-hook-image
|
|
- name: Release prod image
|
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
run: |
|
|
export IMAGE_TAG=${GITHUB_REF#refs/tags/v}
|
|
make push-hook-image
|
|
|
|
release-processor-image-pr:
|
|
name: Release processor image from PR
|
|
runs-on: ubuntu-latest
|
|
needs: test
|
|
if: github.event_name == 'pull_request'
|
|
steps:
|
|
- name: Checkout commit
|
|
uses: actions/checkout@v4
|
|
- name: Purge old artifacts
|
|
uses: kolpav/purge-artifacts-action@v1
|
|
with:
|
|
token: ${{ github.token }}
|
|
expire-in: 30mins
|
|
- name: Login to ghcr.io
|
|
uses: docker/login-action@v3.5.0
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ github.token }}
|
|
- name: Extract metadata (tags, labels) for Docker
|
|
id: meta
|
|
uses: docker/metadata-action@v5
|
|
with:
|
|
images: ghcr.io/neuro-inc/app-lightrag
|
|
tags: |
|
|
type=ref,event=pr
|
|
- name: Build Docker image
|
|
run: make build-hook-image
|
|
- name: Push release for testing
|
|
if: github.actor != 'dependabot[bot]'
|
|
run: |
|
|
FULL_IMAGE_NAME=${{ steps.meta.outputs.tags }}
|
|
export IMAGE_TAG=${FULL_IMAGE_NAME##*:}
|
|
make push-hook-image
|