TL; DR; Как я построил службу Vilicus, без серверного приложения с полным стеком с бэкэнд-работниками и базой данных только с использованием бегунов GIT и CI/CD.
Что такое Vilicus?
Vilicus-это инструмент с открытым исходным кодом, который организует сканирование безопасности контейнеров (Docker/OCI) и централизует все результаты в базе данных для дальнейшего анализа и показателей.
Vilicus предоставляет много альтернатив для его использования:
- Собственная установка ;
- GitHub Action В ваших рабочих процессах GitHub;
- Шаблон CI в ваших трубопроводах Gitlab CI/CD;
- Бесплатный онлайн -сервис ;
В этой статье объясняется, как можно было создать бесплатный онлайн -сервис без использования традиционного развертывания.
Архитектура
Фронтан размещен на страницах GitHub. Этот фронт представляет собой целевую страницу с бесплатным обслуживанием для сканирования или отображения уязвимостей на изображениях контейнеров.
Результаты сканирования изображений контейнера хранятся в репозитории Gitlab.
Когда пользователь просит показать результаты изображения, Frontend потребляет API Gitlab, чтобы извлечь файл с помощью Vulns из этого изображения. Если это изображение еще не сканируется, у пользователя есть возможность запланировать сканирование с помощью формы Google.
Когда эта форма заполняется, данные отправляются в таблицу Google.
Рабочий процесс GitHub работает каждые 5 минут, чтобы проверить, есть ли новые ответы в этой таблице. Для каждого нового изображения в электронной таблице этот рабочий процесс запускает другой рабочий процесс, чтобы сканировать изображение и сохранить результат в репозитории Gitlab.
Зачем хранить в Гитлабе?
Gitlab обеспечивает большие ограничения.
Вот краткое изложение различий в предложении об общественном облаке и бесплатном уровне:
3 | GitHub | 100 | 2 | 5000 |
5 | Битбакет | Unlimited (до размера репо) | 1 | 5000 |
Неограниченный | Гитлаб | Unlimited (до размера репо) | 10 | 36000 |
Гугл Диск
Этот выбор был «быстрой победой». В обычном развертывании бэкэнд может назвать секреты API, без каких -либо клиентов, знающих секреты.
Но поскольку я использую страницы GitHub, я не могу этого использовать (ну, я мог бы сделать это в JavaScript, но любой, кто использует осмотр браузера, увидит секреты. Так что давайте не сделаем этого 😉)
Это делает таблицу Google работать в качестве очереди.
Форма Google: Электронная таблица Google с ответами:
GitHub Workflows
Расписание рабочего процесса
Проходит не более 5 минут. Этот рабочий процесс выполняет сценарий Python, который проверяет, есть ли новые строки в Таблица Google
и для каждой строки сделан HTTP -запрос, чтобы запустить событие Repository_dispatch
Анкет
Это заставляет рабочие процессы работать в качестве бэкэнд -работников.
Расписание в рабочем процессе:
name: Schedule on: schedule: - cron: '*/5 * * * *' ...
Мероприятие Repository_dispatch В рабочем процессе:
name: Report on: [repository_dispatch] ...
Скриншоты:
История расписания: Расписание рабочего процесса: Сканирование истории: Сообщить о рабочем процессе: Отчет о сканировании хранится в Gitlab:
Исходный код:
- Запланируйте рабочий процесс
- Сообщить о рабочем процессе
- Скрипт для загрузки файла отчета в gitlab
- Сценарий для итерации ответов и вызвать новые сканирования
- Gitlab Repo с файлами отчетов
Вы хотите узнать больше о действиях GitHub?
GitHub Pages
Фронталь работает на страницах GitHub.
По умолчанию приложение, работающее на страницах GH, размещено как http://
Анкет
Но GitHub позволяет настроить домен, потому что можно получить доступ к Vilicus, используя https://vilicus.edersonbrilhante.com.br
вместо http://edersonbrilhante.github.io/vilicus
Анкет
Рабочий процесс GitHub для создания приложения и развертывания его на страницах GH
Создание исходного кода:
- name: Build run: | cd website npm install npm run-script build env: REACT_APP_GA_CODE: ${{ secrets.REACT_APP_GA_CODE }} REACT_APP_FORM_SCAN: ${{ secrets.REACT_APP_FORM_SCAN }}
Развертывание сборки:
- name: Deploy uses: JamesIves/github-pages-deploy-action@releases/v3 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages FOLDER: website/build
Исходный код:
- Рабочий процесс для развертывания кода на страницах GitHub
- Исходный код приложения
- Развернутый код на страницах GH
Вы хотите узнать больше о страницах GitHub?
Вот и все!
Если у вас есть какие -либо вопросы, оставьте здесь комментарий или пинг меня на LinkedIn Анкет
Оригинал: «https://dev.to/edersonbrilhante/a-serverless-full-stack-application-using-only-git-google-drive-and-public-ci-cd-runners-262l»