Skip to content

feature: OSA CI/CD mode#405

Open
Shtirmann wants to merge 31 commits intomainfrom
feature/ci_cd_mode
Open

feature: OSA CI/CD mode#405
Shtirmann wants to merge 31 commits intomainfrom
feature/ci_cd_mode

Conversation

@Shtirmann
Copy link
Collaborator

@Shtirmann Shtirmann commented Feb 26, 2026

Изменения в PR:

CI/CD:

  • Добавлен файл action.yml. Теперь OSA - это Composite Action. OSA можно подключить к любому репозиторию одной строчкой в workflow. Он сам поставит зависимости и запустит анализ. При каждом коммите в ветке - дополняет новые функции, в которых нет док-стрингов.
  • Добавлен флаг --incremental - в нём OSA не переписывает весь проект, а только заполняет пустые докстринги, которых не хватает.
  • Добавлен флаг --target-files - позволяет передать список файлов для анализа. В контексте Actions позволяет передавать только те файлы, которые изменились, а не весь репозиторий.
  • В run.py добавлена проверка на GITHUB_ACTIONS, если OSA видит что она в CI режиме, то она автоматически работает с текущей веткой PR, а не стандартной osa_tool (чтобы не возникло конфликтов).

Багфиксы:

  • Юнит тесты проверяли, что код НЕ меняется, хотя должен был? Дополнил юнит тесты на корректную логику.
  • Раньше рекурсивные функции (вызывающие сами себя) создавали циклическую зависимость в графе и просто игнорировались. Теперь саморекурсия игнорируется.
  • Починил баг с вставкой кода, когда из-за разницы переносов строк (\n в Linux и \r\n в Windows) OSA не могла найти место для вставки и отдавала пустой результат.
  • Почему-то поиск через регулярки порой просто не находил функцию + не находились функции, если в конце объявления был комментарий.

Пример вызова в workflow:

- name: Run OSA Action
  uses: aimclub/OSA@main # Или @feature/ci_cd_mode пока не замержено
  with:
    openai_api_key: ${{ secrets.OPENAI_API_KEY }}
    api: 'openai'
    base_url: 'https://openrouter.ai/api/v1'
    model: 'openai/gpt-4o'

Для работы нужно добавить в Secrets репозитория токен провайдера, поддерживает всех из которых поддерживает OSA. Но если будем добавлять провайдеров - нужно будет дополнять логику.

Пайплайн работы представлен в комменте внизу.

@Shtirmann Shtirmann linked an issue Feb 26, 2026 that may be closed by this pull request
@Shtirmann Shtirmann requested review from DRMPN and fl1pcoin February 27, 2026 14:59
@Shtirmann
Copy link
Collaborator Author

Shtirmann commented Feb 27, 2026

Пайплайн работы:

1. Делаем PR (видно что нет докстринга)
image

2. OSA начинает работу
image

3. OSA делает коммит
image
image

4. В коммите видем докстринги
image

Alt.

Если в PR у всех функций есть док стринги, то OSA не будет ничего делать.

image

Проект на котором тестил:
https://github.com/Shtirmann/lir-agent

@Shtirmann Shtirmann changed the title feature/OSA CI/CD mode feature: OSA CI/CD mode Feb 27, 2026
@Shtirmann Shtirmann self-assigned this Feb 27, 2026
@Shtirmann Shtirmann added enhancement New feature or request help wanted Extra attention is needed bug Something isn't working and removed help wanted Extra attention is needed labels Feb 27, 2026
@DRMPN DRMPN removed the bug Something isn't working label Mar 2, 2026
@DRMPN DRMPN moved this to On review in Open Source Advisor Mar 2, 2026
Copy link
Contributor

@DRMPN DRMPN left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Не смог запустить.

Ошибка - https://github.com/DRMPN/osa-streamlit/actions/runs/22584664537
Файл с action - https://github.com/DRMPN/osa-streamlit/blob/main/.github/workflows/osa.yml

  1. В best practices советуют создать отдельный репозиторий под action.

Предлагаю пока оттестировать как есть, а перед влитием ПР сделать отдельный репозиторий и разместить action там.

  1. Этот action можно будет опубликовать в GitHub Marketplace.

@nicl-nno что думаешь по этому поводу? В теории, может дать какой-то прирост пользователей и небольшую популярность.

  1. Помню, что были проблемы с поиском/форматированием докстрингов, вероятно этот ПР решает большую их часть. У нас где-то зафиксированы проблемы с ними?

@Shtirmann Shtirmann requested a review from DRMPN March 3, 2026 08:36
@Shtirmann
Copy link
Collaborator Author

Поправил, кажется, не запускалось, т.к. рассчитано на запуск только в контексте PR - теперь запускается и в push и в merge.

@DRMPN DRMPN requested a review from Ekarerina-Ulyanova March 3, 2026 18:43
Copy link
Contributor

@DRMPN DRMPN left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Проверил на push и pull request, все работает.

Comment on lines 41 to 48
def __init__(self, repo_url: str, repo_branch_name: str = None, branch_name: str = "osa_tool", author: str = None):
"""Initializes the agent with repository info.

Args:
repo_url: The URL of the GitHub repository.
repo_branch_name: The name of the repository's branch to be checked out.
branch_name: The name of the branch to be created. Defaults to "osa_tool".
author: The name of the author of the pull request.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот кстати захардкоженное значение osa_tool.

Comment on lines 41 to 48
def __init__(self, repo_url: str, repo_branch_name: str = None, branch_name: str = "osa_tool", author: str = None):
"""Initializes the agent with repository info.

Args:
repo_url: The URL of the GitHub repository.
repo_branch_name: The name of the repository's branch to be checked out.
branch_name: The name of the branch to be created. Defaults to "osa_tool".
author: The name of the author of the pull request.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот кстати захардкоженное значение osa_tool.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: On review

Development

Successfully merging this pull request may close these issues.

feature: add OSA as a GitHub CI/CD

2 participants