This repository uses a develop-based branching model:
develop: The default branch for active development and feature integrationfeature/*: Feature branches created fromdeveloprelease/*: Release branches created fromdevelopfor deploymentupstream/*: Branches for integrating upstream LibreChat changesbugfix/*: Bug fix branches created fromrelease/*brancheshotfix/*: Emergency fix branches created from release tags
Workflow changes should be made on the develop branch through pull requests. GitHub Actions workflows execute from the branch they're defined on, so workflows on develop will trigger for develop branch events.
From a local terminal, while having the develop branch checked out, run:
git remote add upstream https://github.com/danny-avila/LibreChat.git # Only needed once
git fetch upstream --tagsThen push tags to your fork:
git push origin --tagsThe following files are specific to the Paychex deployment of LibreChat and exist on the develop branch:
az_container_app_definitions/- Azure Container App definitions (YAML) for N1, N2a, and Prod environmentsmongodb_atlas_setup/- One-time JavaScript commands to create vector-related objects in MongoDB Atlas.paychex.dockerignore- Files to ignore when building the Paychex Docker imagelibrechat.n1.yml- N1 environment configurationlibrechat.n2a.yml- N2a environment configurationlibrechat.prod.yml- Production environment configurationpaychex-root.pem- Paychex SSL certificatepayx-docker-compose.override.yml- Paychex-specific Docker Compose overrideclient/src/hooks/Pendo/- Pendo analytics integration.github/workflows/- Custom CI/CD workflows for Paychex environments
All Paychex customizations are maintained on the develop branch and follow the standard feature branch workflow.
-
Checkout the develop branch:
git checkout develop git pull origin develop
-
Setup environment configuration:
- Copy
.env.paychexto.env(contact your team for sensitive values) - Copy your target environment config to
librechat.yaml:cp librechat.n2a.yml librechat.yaml # For N2a environment # OR cp librechat.n1.yml librechat.yaml # For N1 environment
Note: The file extension must be
.yaml(not.yml) - Copy
-
Update Docker image tag (optional for testing specific versions): Edit
payx-docker-compose.override.ymlif you need a specific LibreChat version:api: container_name: LibreChat ports: - "${PORT}:${PORT}" image: ghcr.io/danny-avila/librechat:v0.8.1 # Update version as needed
-
Start the application:
docker compose -f docker-compose.yml -f payx-docker-compose.override.yml up
-
Access the application:
- Navigate to
localhost:3080in your browser - If using VSCode remote SSH, ensure port 3080 is forwarded
- Register a test user and log in
- Navigate to
-
Create a feature branch from develop:
git checkout develop git pull origin develop git checkout -b feature/AIA-XXXX-description
-
Make your changes and commit:
git add . git commit -m "feat: description of changes"
-
Push and create a pull request:
git push origin feature/AIA-XXXX-description
Create a PR targeting the
developbranch -
After approval, the feature will be merged into develop
-
Create a release branch from develop:
git checkout develop git pull origin develop git checkout -b release/payx-X.X.X-sXX
-
Push the release branch:
git push origin release/payx-X.X.X-sXX
-
Deploy to non-production environment:
- Run the appropriate GitHub Actions workflow (N1 or N2a)
- Provide the release branch name as input
- Optionally build the RAG API image (typically only needed for new releases)
-
Test and fix issues:
- If bugs are found, create
bugfix/branches from the release branch - Merge bugfixes back into the release branch
- Re-deploy and verify
- If bugs are found, create
-
Merge back to develop:
git checkout develop git merge release/payx-X.X.X-sXX git push origin develop
-
Tag the release:
git tag -a payx-X.X.X-sXX -m "Release X.X.X Sprint XX" git push origin payx-X.X.X-sXX -
Delete the release branch:
git branch -d release/payx-X.X.X-sXX git push origin --delete release/payx-X.X.X-sXX
-
Create an upstream integration branch:
git checkout develop git pull origin develop git checkout -b upstream/vX.X.X-integration
-
Fetch and merge upstream changes:
git fetch upstream git merge upstream/main # Or specific upstream tag -
Resolve conflicts and test thoroughly
-
Tag the upstream integration:
git tag -a upstream-vX.X.X -m "Integrated upstream LibreChat vX.X.X" -
Create PR to merge into develop:
- Create pull request from
upstream/vX.X.X-integrationtodevelop - Review and test
- Merge after approval
- Create pull request from
-
Push tag and clean up:
git push origin upstream-vX.X.X git branch -d upstream/vX.X.X-integration git push origin --delete upstream/vX.X.X-integration