cognee/.github/workflows/profiling.yaml
2024-12-04 18:35:06 +01:00

99 lines
3.6 KiB
YAML

name: Profiling Comparison for Specific File 2
on:
pull_request:
paths:
- 'cognee/api/v1/cognify/code_graph_pipeline.py' # Trigger only if this specific file changes
jobs:
profiler:
runs-on: ubuntu-latest
steps:
# Checkout the code from the repository with full history
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch all history so we can checkout any commit
# Set up Python environment
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
# Install necessary dependencies
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install scalene requests
# Install your project's dependencies if needed
pip install -r requirements.txt # If you have a requirements file
# Set environment variables for SHAs
- name: Set environment variables
run: |
echo "BASE_SHA=${{ github.event.pull_request.base.sha }}" >> $GITHUB_ENV
echo "HEAD_SHA=${{ github.event.pull_request.head.sha }}" >> $GITHUB_ENV
# Run profiler on the base branch
- name: Run profiler on base branch
env:
BASE_SHA: ${{ env.BASE_SHA }}
run: |
echo "Profiling the base branch for code_graph_pipeline.py"
echo "Checking out base SHA: $BASE_SHA"
git checkout $BASE_SHA
echo "This is the working directory: $PWD"
# Ensure the script is executable
chmod +x cognee/api/v1/cognify/code_graph_pipeline.py
# Run Scalene
scalene --json --outfile base_results.json cognee/api/v1/cognify/code_graph_pipeline.py
# Run profiler on head branch
- name: Run profiler on head branch
env:
HEAD_SHA: ${{ env.HEAD_SHA }}
run: |
echo "Profiling the head branch for code_graph_pipeline.py"
echo "Checking out head SHA: $HEAD_SHA"
git checkout $HEAD_SHA
echo "This is the working directory: $PWD"
# Ensure the script is executable
chmod +x cognee/api/v1/cognify/code_graph_pipeline.py
# Run Scalene
scalene --json --outfile head_results.json cognee/api/v1/cognify/code_graph_pipeline.py
# Compare profiling results
- name: Compare profiling results
run: |
python -c "
import json
try:
with open('base_results.json') as f:
base = json.load(f)
with open('head_results.json') as f:
head = json.load(f)
cpu_diff = head.get('total_cpu_samples_python', 0) - base.get('total_cpu_samples_python', 0)
memory_diff = head.get('malloc_samples', 0) - base.get('malloc_samples', 0)
with open('profiling_diff.txt', 'w') as f:
f.write(f'CPU Usage Difference: {cpu_diff}\\n')
f.write(f'Memory Usage Difference: {memory_diff} bytes\\n')
except Exception as e:
with open('profiling_diff.txt', 'w') as f:
f.write(f'Error comparing profiling results: {e}\\n')
"
# Post results to the pull request
- name: Post profiling results to PR
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');
const diff = fs.readFileSync('profiling_diff.txt', 'utf-8');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `### Profiling Results for code_graph_pipeline.py\n\`\`\`\n${diff || 'No differences found.'}\n\`\`\``
});