aboutsummaryrefslogtreecommitdiff
path: root/R2R/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to 'R2R/.github/workflows')
-rwxr-xr-xR2R/.github/workflows/build-main.yml83
-rwxr-xr-xR2R/.github/workflows/build-release.yml43
-rwxr-xr-xR2R/.github/workflows/ci.yml85
-rwxr-xr-xR2R/.github/workflows/links.yml39
-rwxr-xr-xR2R/.github/workflows/publish-to-pypi.yml27
5 files changed, 277 insertions, 0 deletions
diff --git a/R2R/.github/workflows/build-main.yml b/R2R/.github/workflows/build-main.yml
new file mode 100755
index 00000000..b91de2c3
--- /dev/null
+++ b/R2R/.github/workflows/build-main.yml
@@ -0,0 +1,83 @@
+name: Build and Publish Docker Image
+
+on:
+ workflow_dispatch:
+ inputs:
+ version:
+ description: 'Version to publish (leave empty to use default versioning)'
+ required: false
+ type: string
+
+jobs:
+ build-and-publish:
+ runs-on: ubuntu-latest
+ permissions:
+ packages: write
+ contents: read
+ id-token: write
+ actions: write
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@v4
+
+ - name: Google Auth
+ uses: 'google-github-actions/auth@v2'
+ with:
+ credentials_json: '${{ secrets.GCP_SA_KEY }}'
+
+ - name: Set up Cloud SDK
+ uses: 'google-github-actions/setup-gcloud@v2'
+
+ - name: Configure SDK
+ run: 'gcloud auth configure-docker us-east1-docker.pkg.dev'
+
+ - name: Docker Auth
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_TOKEN }}
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - name: Determine version to use
+ id: version
+ run: |
+ if [ -n "${{ github.event.inputs.version }}" ]; then
+ echo "RELEASE_VERSION=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
+ else
+ echo "RELEASE_VERSION=main" >> $GITHUB_OUTPUT
+ fi
+
+ - name: Extract metadata (tags, labels) for Docker
+ id: meta
+ uses: docker/metadata-action@v5
+ with:
+ images: |
+ emrgntcmplxty/r2r
+ us-east1-docker.pkg.dev/alert-rush-397022/sciphi-r2r/r2r
+ tags: |
+ type=raw,value=${{ steps.version.outputs.RELEASE_VERSION }}
+ type=raw,value=latest
+
+ - name: Build and Push Docker Image
+ uses: docker/build-push-action@v5
+ with:
+ context: .
+ file: ./Dockerfile
+ push: true
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}
+ platforms: linux/amd64,linux/arm64
+
+ - name: Trigger Dependent Repositories
+ if: success()
+ run: |
+ curl -X POST \
+ -H "Accept: application/vnd.github.v3+json" \
+ -H "Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}" \
+ https://api.github.com/repos/SciPhi-AI/R2R-basic-rag-template/dispatches \
+ -d '{"event_type": "rebuild", "client_payload": {"r2r_tag": "${{ steps.version.outputs.RELEASE_VERSION }}"}}'
diff --git a/R2R/.github/workflows/build-release.yml b/R2R/.github/workflows/build-release.yml
new file mode 100755
index 00000000..996f7334
--- /dev/null
+++ b/R2R/.github/workflows/build-release.yml
@@ -0,0 +1,43 @@
+name: Links
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+ schedule:
+ - cron: "00 18 * * *"
+
+jobs:
+ linkChecker:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Link Checker
+ id: lychee
+ uses: lycheeverse/lychee-action@v1
+ continue-on-error: true
+ with:
+ args: "--output ./docs/lychee/out.md --config ./docs/.lycheerc"
+
+ - name: Get Lychee Exit Code
+ id: get-exit-code
+ run: echo "lychee_exit_code=$?" >> $GITHUB_ENV
+
+ - name: Create Custom Report
+ if: failure()
+ run: |
+ echo "Lychee doesn't play nice with relative imports for .mdx files. Add a link to the .lycheeignore if needed!" > ./docs/lychee/custom_report.md
+ echo "" >> ./docs/lychee/custom_report.md
+ cat ./docs/lychee/out.md >> ./docs/lychee/custom_report.md
+
+ - name: Create Issue From File
+ if: failure()
+ uses: peter-evans/create-issue-from-file@v4
+ with:
+ title: Link Checker Report
+ content-filepath: ./docs/lychee/custom_report.md
+ labels: report, automated issue
diff --git a/R2R/.github/workflows/ci.yml b/R2R/.github/workflows/ci.yml
new file mode 100755
index 00000000..d24bf06e
--- /dev/null
+++ b/R2R/.github/workflows/ci.yml
@@ -0,0 +1,85 @@
+name: CI
+
+on:
+ push:
+ branches:
+ - main
+ - '**/feature/*'
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ pre-commit:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v3
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.12.4' # Specify your Python version here
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install poetry
+ poetry install
+
+ - name: Install pre-commit
+ run: poetry run pre-commit install
+
+ - name: Run pre-commit
+ run: poetry run pre-commit run --all-files
+
+ pytest:
+ runs-on: ubuntu-latest
+ timeout-minutes: 15 # Increased timeout to accommodate Ollama setup
+
+ env:
+ OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
+ POSTGRES_DBNAME: ${{ secrets.POSTGRES_DBNAME }}
+ POSTGRES_HOST: ${{ secrets.POSTGRES_HOST }}
+ POSTGRES_PORT: ${{ secrets.POSTGRES_PORT }}
+ POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
+ POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
+ POSTGRES_VECS_COLLECTION: ${{ secrets.POSTGRES_VECS_COLLECTION }}
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v3
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.12.4'
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install poetry
+ poetry install
+
+ - name: Install Ollama
+ run: |
+ curl -fsSL https://ollama.com/install.sh | sudo -E sh
+
+ - name: Start Ollama server
+ run: |
+ ollama serve &
+ sleep 5
+ curl -i http://localhost:11434
+
+ - name: Pull Ollama model
+ run: |
+ ollama pull llama2
+
+ - name: Run tests
+ run: poetry run pytest tests/ -k "not redis and not sentence_transformer"
+
+ - name: Upload coverage reports to Codecov
+ uses: codecov/codecov-action@v4.0.1
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
diff --git a/R2R/.github/workflows/links.yml b/R2R/.github/workflows/links.yml
new file mode 100755
index 00000000..75ec1758
--- /dev/null
+++ b/R2R/.github/workflows/links.yml
@@ -0,0 +1,39 @@
+name: Links
+
+on:
+ repository_dispatch:
+ workflow_dispatch:
+ schedule:
+ - cron: "00 18 * * *"
+
+jobs:
+ linkChecker:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Link Checker
+ id: lychee
+ uses: lycheeverse/lychee-action@v1
+ continue-on-error: true
+ with:
+ args: "--output ./docs/lychee/out.md --config ./docs/.lycheerc"
+
+ - name: Get Lychee Exit Code
+ id: get-exit-code
+ run: echo "lychee_exit_code=$?" >> $GITHUB_ENV
+
+ - name: Create Custom Report
+ if: failure()
+ run: |
+ echo "Lychee doesn't play nice with relative imports for .mdx files. Add a link to the .lycheeignore if needed!" > ./docs/lychee/custom_report.md
+ echo "" >> ./docs/lychee/custom_report.md
+ cat ./docs/lychee/out.md >> ./docs/lychee/custom_report.md
+
+ - name: Create Issue From File
+ if: failure()
+ uses: peter-evans/create-issue-from-file@v4
+ with:
+ title: Link Checker Report
+ content-filepath: ./docs/lychee/custom_report.md
+ labels: report, automated issue
diff --git a/R2R/.github/workflows/publish-to-pypi.yml b/R2R/.github/workflows/publish-to-pypi.yml
new file mode 100755
index 00000000..79ac0c83
--- /dev/null
+++ b/R2R/.github/workflows/publish-to-pypi.yml
@@ -0,0 +1,27 @@
+name: Publish to PyPI
+
+on:
+ push:
+ tags:
+ - "*"
+ workflow_dispatch: # This line adds manual trigger support
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+
+ - name: Install poetry
+ run: pip install poetry
+
+ - name: Build and publish
+ run: |
+ poetry build
+ poetry publish --username __token__ --password ${{ secrets.PYPI_API_TOKEN }}