# .github/workflows/reindex_on_merge.yml name: Re-index Repository on Merge (Self-Hosted) on: pull_request: types: [closed] branches: - main workflow_dispatch: jobs: reindex: # This condition ensures the job only runs if the pull request was actually merged. if: github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch' # This tells GitHub to run this job on one of your self-hosted runners. runs-on: Windows # Set a default shell for all run steps in the job. defaults: run: shell: bash steps: # Step 1: Check out the repository's code # This downloads the latest version of your 'main' branch into the runner's working directory. - name: Checkout repository uses: actions/checkout@v4 # Step 2: Set up a specific Python version # This ensures a consistent Python version is used for the venv. - name: Set up Python 3.11 id: setup-python uses: actions/setup-python@v4 with: python-version: '3.11' # Step 3: Create and activate a virtual environment # This creates a '.venv' directory in your project folder if it doesn't exist, # and then activates it for subsequent steps. - name: Create and activate virtual environment run: | if [ ! -d ".venv" ]; then python -m venv .venv fi source .venv/bin/activate # Step 4: Install or update dependencies # This uses the pip from the virtual environment to install all required libraries. - name: Install dependencies run: | source .venv/bin/activate pip install --upgrade pip pip install -r requirements.txt # Step 5: Run the indexing script within the virtual environment # It executes your 'create_index.py' script using the Python from the venv. # The GITHUB_TOKEN is still passed securely to the script. - name: Run indexing script run: | source .venv/bin/activate python create_index.py env: GITHUB_REPOSITORY: ${{ github.repository }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Optional: Specify the working directory if your bot lives in a subfolder # working-directory: ./path/to/your/bot # The "Upload database artifact" step is no longer needed, as the database # is now being written directly to a persistent location on your server.