The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Проект Сicada развивает систему автоматизации сборок, похожую на GitHub Actions

07.11.2023 16:01

Доступна открытая система автоматизации сборочных процессов Сicada, позволяющая на своём сервере развернуть инфраструктуру, похожую на GitHub Actions, Azure DevOps и Gitlab CI, не зависящую от облачных сервисов. Код проекта написан на языке Python и распространяется под лицензией AGPLv3.

Система способна автоматически запускать сценарии сборки и тестирования кодовых баз при срабатывании определённых событий, таких как поступление push-запроса в Git, создание релизов, открытие/закрытие issue и открытие/закрытие pull-запросов. Отличительной чертой Сicada является предоставление для определение логики работы предметно ориентированного функционального языка программирования, поддерживающего переменные, выражения, циклы, условные блоки и встроенные функции.


   on git.push

   fn test(compiler):
     env.CC = compiler

     echo Testing (compiler)
     shell make clean all
 
   let compilers = ["gcc", "clang"]

   for compiler in compilers:
     test(compiler)

Предлагаемые язык позволяет легко создавать обработчики, которые проблематично описать в файлах конфигурации на базе формата YAML, и даёт возможность обойтись без подключения внешних скриптов на Shell или Python. При этом реализованный подход также решает проблему с несовместимостью YAML-форматов конфигурации, используемых в разных платформах автоматизации сборок. В Сicada предлагаются независимые от платформ универсальные типы событий, которые позволяют привязать один и тот же сценарий автоматизации к разным платформам, например, обработчик push-запросов может быть прикреплён к событиям, поступающим из GitHub и Gitlab.

Особое внимание также уделяется безопасному хранению токенов и паролей, применяемых для доступа к API, репозиториям и окружениям для установки результирующих сборок. Подобная конфиденциальная информация хранится в зашифрованном виде (AES-GCM c 256-разрядным ключом) при помощи инструментария HashiCorp Vault. Для каждого репозитория и точки установки создаётся отдельный ключ шифрования, ключи автоматически обновляются каждые 30 дней, хранилище ключей запускается на отдельном сервере.

Секретные данные по умолчанию не передаются через переменные окружения, а в репозиторий открывается только доступ на чтение. Имеется встроенная защита от подстановки команд в выражения, обеспечивающая автоматическое экранирование опасных конструкций, например, выражение 'let name = "; rm -rf /"; echo Hello, (name)' не приведёт к выполнению команды "rm". Из оптимизаций отмечается встроенная система кэширования результатов компиляции и загрузки ресурсов.

  1. Главная ссылка к новости (https://github.com/Cicada-Soft...)
  2. OpenNews: В ходе атаки на GitHub захвачены ключи для подписи приложений GitHub Desktop и Atom
  3. OpenNews: Атака на GitHub Actions для майнинга криптовалюты на серверах GitHub
  4. OpenNews: Приложение, дающее прямые ссылки на артефакты от GitHub Actions
  5. OpenNews: Уязвимость в GitHub Actions, допускающая подстановку команд
  6. OpenNews: Релиз сервера непрерывной интеграции Hudson 3.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60068-cicada
Ключевые слова: cicada, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (36) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 16:34, 07/11/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –4 +/
     
  • 1.2, Аноним (2), 16:42, 07/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Выглядит неплохо. Надеюсь не будет странных ограничений с магическими числами как у гитлаба, типа "кэшей не может быть больше четырех, а хэш можно вычислять только от одного или от двух файлов, но не от трех, хаха"
     
  • 1.3, Аноним (3), 18:52, 07/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    хм, опять копируют удачное проприетарное решение, а потом будуть ныть "а почему у нас форматы несовместимые" ?

    Надеюсь они добавят хороших фич, чтобы отличаться от конкурентов.

     
     
  • 2.5, Пряник (?), 19:12, 07/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Пользоваться чужими услугами всегда дороже, чем делать самому. Так что возможность поднять свой CI/CD это уже плюс.
     
     
  • 3.12, Аноним (3), 22:08, 07/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    хм... ну не знаю
    Это надо или держать нужного человека в штате или брать "админа на час".
    Плюс разовая закупка билд серверов.
    Мне кажется, что в некоторых случаях выбрать "чужие услуги" может быть выгоднее.
     
     
  • 4.24, Аноним (24), 12:22, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, то есть без админа (и вообще людей, худо-бедно понимающих в IT, чтобы набросать последовательность команд для сборки) такие проекты нормально живут, проблемы начинаются только на стадии автоматизации сборки?
     
     
  • 5.36, kusb (?), 18:05, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Может свои серверы покупать и всё такое. Интересно, могут ли автоматизированные сборки жить на других компьютерах, например на компьютерах программистов (в отдельном окружении, например)
    Странное решение, чтобы сэкономить на серверах.
     
  • 3.35, Аноним (35), 16:20, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Проще уж Gitlab свой поднять. Там все по умолчанию есть.
     
     
  • 4.37, Пряник (?), 10:00, 09/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да, но GitLab какой-то уж больно тормозной по сравнению с Gogs/Gitea/Forgejo, а в этих нет CI/CD...
     
  • 2.10, morphe (?), 20:44, 07/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > удачное
    > Github Actions
     

  • 1.4, Второй из Кукуева (?), 19:10, 07/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Еще один CI с собственным синтаксисом?
    Ай, маладцы!
    Мало нам GH Action, Gitlab CI, Drone/Woodpecker и еще десятка разных
    Будет еще один

    Они издеваются?
    И так приходится в голове держать все вышеперечисленные, потому что у одних клиентов одно, у других другое, у третьих третье, а у четвертых вообще черт в ступе и на роботе-пылесосе

     
     
  • 2.6, Пряник (?), 19:14, 07/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Старая добрая "Война стандартов".
     
     
  • 3.11, Второй из Кукуева (?), 20:45, 07/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Старая добрая "Война стандартов".

    Угу
    При чем больше всего бесят CI которые используют таки yaml, но каждый свой(как раз вот GH Actions, Gitlab CI, Drone, вроде и Jenkins)
    Вроде все похожи, но у каждых своя какая-то особенность
    И такой думаешь "Ага! Я уже это делал для вон того клиента!", а потом понимаешь, что делал под один, а у этого другой и надо адаптировать, хоть все и похоже, сидишь и переделываешь

     
     
  • 4.22, burik666 (ok), 10:47, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    причем тут yaml?
     
     
  • 5.33, freehck (ok), 16:08, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну как это причём. Написал же человек: путается в синтаксисах разных CI-систем, потому ему yaml-ы сродни китайцам -- все на одно лицо.
     
  • 2.31, Аноним (31), 14:54, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Можете попробовать внедрять Dagger CI
     

  • 1.7, Аноним (7), 19:19, 07/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Есть Jenkins
    Остальное от лукавого
     
  • 1.13, cheburnator9000 (ok), 22:31, 07/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Bash скрипты покрывают практически все потребности CI/CD, простой тому пример VoidLinux, где вся система сборки это по сути "фреймворк" на bash.

    Вся декларативщина только вредна. Люди совсем перестают думать и считают что оно должно работать в любых ситуациях, а это совсем не так. Через ENV файл или переменные окружения можно передать любые данные, условный ENV файл с секретами может генерировать перед запуском сама CI/CD система, я такой подход практически нигде не видел из "облачных решений", все упариваются с переменными окружения, а затем затирают Credentials в логах, казалось бы есть подход проще.

    Например, данных подход 'cache node_modules using hashOf("package-lock.json")' к кешированию вызовет проблемы как только смузихлебы из NPM решат поменять логику хранения модулей и или еще чего сломают, исправить вы это не сможете пока сервис не реализует изменения под видом 'cache_v2'.

    Единственное что сервис должен предоставить свои, безопасные для процесса сборки и логгирования, варианты консольных утилит деплоя результата сборки и кеширования нужных каталогов - это я за, но никто не заморачивается. Например, в гитхабе/лабе за это отвечает код со стороны сервера исполняя декларативный файл сборки, а это не очень то безопасно.

     
     
  • 2.15, Признанный гуру (?), 00:29, 08/11/2023 Скрыто ботом-модератором     [к модератору]
  • +6 +/
     
     
  • 3.16, cheburnator9000 (ok), 00:44, 08/11/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.17, Признанный гуру (?), 00:58, 08/11/2023 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 4.28, freehck (ok), 13:47, 08/11/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.27, freehck (ok), 13:44, 08/11/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.30, Признанный гуру (?), 14:12, 08/11/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.18, User (??), 09:52, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, удачи на собеседовании - рогам-и-копытам будет очень интересно узнать про voidlinux и ci\cd на bash'е - правда денег за это они не заплатят, но скорее всего послушают. Всем остальным - очень не очень, даже слушать не будут.
     
     
  • 3.23, Аноним (24), 12:20, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В компании, предоставляющей shared hosting на основе LAMP, могут заинтересоваться.
    Сейчас уже не 90-е, и такие компании сложно найти, но они пока остались.
     
     
  • 4.25, User (??), 12:44, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > В компании, предоставляющей shared hosting на основе LAMP, могут заинтересоваться.
    > Сейчас уже не 90-е, и такие компании сложно найти, но они пока
    > остались.

    Неее... им же это адище ПОДДЕРЖИВАТЬ потом - может даже после ухода Васяна в мэшин-лёрнинг-дейта-сайенс или еще какую модную хуцпу. Проще уж какую "панельку"(ТМ) прикрутить\фэтэпэ открыть, а Васяны с voidlinux'ами пусть на стороне рогов-и-копыт кон-тин-ни-ёс ди-ли-ви-ри реализуют.

     
  • 3.32, cheburnator9000 (ok), 15:16, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну, удачи на собеседовании - рогам-и-копытам будет очень интересно узнать про voidlinux
    > и ci\cd на bash'е - правда денег за это они не
    > заплатят, но скорее всего послушают. Всем остальным - очень не очень,
    > даже слушать не будут.

    Правильно нужно обязательно всеми конечностями наступить в помет вендор лока чтобы тебя железобетонно со смузихлебной вакансии не уволили. 👍

     
     
  • 4.34, User (??), 16:12, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> Ну, удачи на собеседовании - рогам-и-копытам будет очень интересно узнать про voidlinux
    >> и ci\cd на bash'е - правда денег за это они не
    >> заплатят, но скорее всего послушают. Всем остальным - очень не очень,
    >> даже слушать не будут.
    > Правильно нужно обязательно всеми конечностями наступить в помет вендор лока чтобы тебя
    > железобетонно со смузихлебной вакансии не уволили. 👍

    Борис! Борись!

     
  • 2.26, freehck (ok), 13:29, 08/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Bash скрипты покрывают практически все потребности CI/CD

    Вот кстати согласен. Проблема shell-скриптов в том, что это тьюринг-полный язык, и для большинства современных айтишников его освоение сопряжено с определёнными трудностями. Но если им дать шаблоны, по которым надо писать код -- кое-как справляются. Ревью, естественно, обязателен.

    > Через ENV файл или переменные окружения можно передать любые данные, условный ENV файл с секретами может генерировать перед запуском сама CI/CD система, я такой подход практически нигде не видел из "облачных решений"

    Мы поступаем просто: в IaC-репозитории храним шифрованные файлы с кодом. Через unix env var в пайплайн передаётся только ключ для расшифровки. Однако, строго говоря, расшифровка файла с секретами -- это уже не задача системы CI/CD. Её задача -- передать переменную и дёрнуть скрипт(ы).

     
     
  • 3.38, ivan_erohin (?), 10:10, 09/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Но если им дать шаблоны, по которым надо писать код

    а есть такие готовые ? чтобы нулевым пунктом было "не используейте башизмы".

    для С есть что-то на букву "М" и с акцентом на безопастный код.

     
     
  • 4.40, freehck (ok), 13:13, 09/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> Но если им дать шаблоны, по которым надо писать код
    > а есть такие готовые ? чтобы нулевым пунктом было "не используейте башизмы".

    У нас есть референсный код, который мы даём новым сотрудникам. Не в публичном доступе. Если хочешь, могу выслать. Напиши мне на мыло.

    Загона по поводу пункта "не используйте башизмы" кстати не имеем. У нас позиция несколько иная: писать скрипты под определённую версию шелла и таскать её с собой.

    > для С есть что-то на букву "М" и с акцентом на безопастный код.

    для shell я рассчитываю по крайней мере, что человек прочитает ABS

     

  • 1.14, cheburnator9000 (ok), 22:58, 07/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Для сборки hello world-ов сойдет если оно было бесплатное.
     
  • 1.20, Аноним (-), 10:34, 08/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Отличительной чертой Сicada является предоставление для определение логики работы предметно ориентированного функционального языка программирования, поддерживающего переменные, выражения, циклы, условные блоки и встроенные функции.

    Если есть repl и синтаксис пайпалайнов из шелла, шелл можно будет выкинуть на помойку.
    Но, похоже, шелл они там сделали ключевым словом, так что расходимся и потихоньку пилим новый шелл без нюансов с пробелами. Как только смогут такой написать, ну или вбухают в обычный шелл код как данные и правила, все эти докерфайлы, экшоны и тому подобное пойдёт на выброс.

     
  • 1.21, Аноним (21), 10:40, 08/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > python = ">=3.11" . Модные ребятки.
     
  • 1.39, YetAnotherOnanym (ok), 13:04, 09/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > реализованный подход также решает проблему с несовместимостью YAML-форматов конфигурации, используемых в разных платформах автоматизации сборок. В Сicada предлагаются независимые от платформ универсальные типы событий

    Одиннадцатый конкурирующий стандарт?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру