Рубрики
Uncategorized

Без серверного приложения с полным стеком с использованием только GIT, Google Drive и Public CI/CD-бегунов

TL; DR; Как я построил службу Vilicus, без серверного приложения с полным стеком с бэкэнд-работниками и … с меткой ShowDev, DevOps, DevOps, DevOps.

TL; DR; Как я построил службу Vilicus, без серверного приложения с полным стеком с бэкэнд-работниками и базой данных только с использованием бегунов GIT и CI/CD.

Что такое Vilicus?

Vilicus-это инструмент с открытым исходным кодом, который организует сканирование безопасности контейнеров (Docker/OCI) и централизует все результаты в базе данных для дальнейшего анализа и показателей.

Vilicus предоставляет много альтернатив для его использования:

В этой статье объясняется, как можно было создать бесплатный онлайн -сервис без использования традиционного развертывания.

Архитектура

Фронтан размещен на страницах 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:

Исходный код:

Вы хотите узнать больше о действиях GitHub?

GitHub Pages

Фронталь работает на страницах GitHub.

По умолчанию приложение, работающее на страницах GH, размещено как http:// .github.io/ Анкет

Но 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?

Вот и все!

Если у вас есть какие -либо вопросы, оставьте здесь комментарий или пинг меня на LinkedIn Анкет

Оригинал: «https://dev.to/edersonbrilhante/a-serverless-full-stack-application-using-only-git-google-drive-and-public-ci-cd-runners-262l»