Задать вопрос
  • Сколько нанометров в обычных корпусных транзисторах?

    opium
    @opium
    Просто люблю качественно работать
    Для дискретных транзисторов нм-процесс — не то же что у CPU, их геометрия определяется электрическими параметрами, не плотностью. Мелкосигнальные BJT (типа BC547) делают на старых процессах, там буквально 1–5 мкм (1000–5000 нм). У MOSFET бывает компактнее, но конкретный техпроцесс никто особо не публикует.
    Ответ написан
    Комментировать
  • Как в GitLab выполнить джоб из внешней системы и где взять и как передать токен для выполнения?

    opium
    @opium
    Просто люблю качественно работать
    CI_JOB_TOKEN не подойдёт — он живёт только внутри запущенного джоба. Нужен Personal Access Token (или Project Access Token) с scope api, создаётся в Settings → Access Tokens проекта.

    Схема: токен добавляешь как CI-переменную (masked + protected), второй джоб прокидывает его в approval service вместе с ID третьего джоба. ID джоба достаётся так:
    GET /api/v4/projects/$CI_PROJECT_ID/pipelines/$CI_PIPELINE_ID/jobs
    — там список, фильтруешь нужный по имени. Потом сервис дёргает POST .../jobs/{job_id}/play с хедером PRIVATE-TOKEN: токен.

    Триггеры — это для запуска новых пайплайнов, не отдельных джобов.
    Ответ написан
    4 комментария
  • GitLab Как сделать автоматическую проверку кода при push или merge request с уведомлением разработчика о результате и получением от него обр. связи?

    opium
    @opium
    Просто люблю качественно работать
    push в GitLab не отменить через pipeline — коммит уже в репо, и только потом стартует CI. Блокировать именно push можно через server hooks (pre-receive), но там таймаут секунды — ИИ не вписать.

    Нормальная схема: поставь protected branch на main (запрет прямого push), разраб пушит в ветку, открывает MR, CI запускает скрипт. Diff берёшь через
    git diff $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_COMMIT_SHA
    или через GitLab API изменений MR. Результат — комментарием в MR, если скрипт вернул ненулевой exit code — merge заблокирован при включённом "Pipelines must succeed".

    requests.post() в job синхронный, job стоит и ждёт пока ИИ не ответит.
    Ответ написан
    Комментировать
  • GitLab Как сделать автоматическую проверку кода при push или merge request с уведомлением разработчика о результате и получением от него обр. связи?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Да, возможно. Поднимаете отдельный CI/CD сервер, создаете задачу с нужным вам функционалом и на этом сервере её запускаете. Отчёт можно любым приложением/скриптом отправить/залить куда и как угодно. Например, можно сразу в коммит или в запрос запостить сообщение через API: https://docs.gitlab.com/api/commits/#post-comment-...
    А при появлении сообщения в коммите/запросе гитлаб автоматом оповещает всех причастных, кто подписан. Просто настройте нужные вам оповещения — можно ботом в чат их слать в ТМ, на почту или ещё куда угодно.
    Так же гитлаб поддерживает стандартные форматы отчётов тестов из коробки, что позволяет сразу в интерфейсе гитлаба увидеть все результаты тестов. Возможно в вашем случае это подойдёт, возможно нет.
    Отдельный сервер нужен для того, чтобы не создавать проблемы и тормоза на основном сервере, где запущен гитлаб. А если запускаете на том же — убедитесь в установке ограничений производительности для задач. Иначе, когда у вас будет запускаться по сотне или даже тысяче задач в день — будет не очень комфортно работать с гитлабом.

    2. Это не имеет смысла. Пуш — это по факту просто загрузка коммита на сервер. Есть PR — он легко блокируется через подтверждение со стороны определённых пользователей или групп пользователей, а так же в случае если задача завершилась с ошибкой. Это всё настраивается в настройках. Вам следует просто правильно организовать рабочий процесс. Используйте стандартный Github Flow. PR для того и придуманы, чтобы в PR принимать или отклонять изменения. Не, так-то если очень хочется, то можно откатывать одиночные коммиты, но правильнее это делать через PR.

    3. Задача запускается сразу после пуша. В задаче есть полный доступ к репозиторию и всему коду. А т.к. это гит, то легко можно получить все изменения в любом виде в скрипте и делать что угодно с ними.

    4. Да, это стандартное поведение всех задач. Задача, обычно, запускается в контейнере и пока контейнер работает — статус задачи не меняется. Либо это отдельный скрипт на сервере, завершение которого гитлаб будет ждать. Задачу даже можно разбить на несколько стадий и по мере их завершения менять статус самой задачи, а результат можно даже в реальном времени в самом гитлабе в задаче наблюдать.
    Ответ написан
    Комментировать