Недавно я начал новый проект под названием DevData Tools, который представляет собой онлайн-инструмент, который предоставляет набор инструментов, полезных для конкретных нужд, ядром проекта был инструмент с утилитами для простого создания описания сценариев использования и описания тестовых примеров и экспорта в PDF как table, инструмент полезен тем, кому нелегко иметь дело с файлами и таблицами Word, но этого достаточно, чтобы написать еще одну статью ...
В этом контексте я развертывал интерфейсное приложение на хостинге Firebase, а внутреннее приложение - на Heroku, причем интерфейс был легко настроен с файлом .yml
для рабочего процесса действия github, действие Firebase сделало весь процесс deploy, нужен только токен, который я хранил в секрете Github Repo.
До сих пор все было в порядке, но дело в том, что когда я развернул внутреннее приложение, которое я пишу на Golang, все настройки и файлы были в порядке, проблема была в моем devdatatools-firebase-adminsdk.json
файле, который я добавил в свой .gitignore
файл в корень репо при загрузке в Github, но это было сделано намеренно.
Этот файл нужно игнорировать, зачем нужны какие-то закрытые ключи о sdk администратора Firebase, поэтому, когда я развернул локально, все было в порядке, потому что было там, но в CI действие heroku получало HEAD
ветки, в данном случае master
и развертывание на героку без этого файла. Дело в том, что мне пришлось создать этот файл во время выполнения рабочего процесса для развертывания на Heroku. На этом этапе мой .yml
файл рабочего процесса выглядел так:
Все действия в Github Marketplace не очень хорошо справлялись с моими потребностями,
наиболее подходящим был create-env-json
, но мне нужно было создать файл .json в подпапке src
, а также более динамичным способом, например pass весь json в секрете репо или в строке атрибута действия.
Итак, я начал искать, как работают действия, и обнаружил, что могу использовать свои знания Javascript для написания действия с использованием среды узла, первое чтение касалось основных зависимостей, каковы основные функциональные возможности, чтобы получить сделку, когда вы выполняете свое действие. .
Создав простой проект npm с помощью git init
и добавив в качестве зависимости, вся среда для выполнения записи файла .json была в моих руках. Было много тестов, чтобы понять, как получаются переменные env действия, мне очень помогают документы github:
Вы можете просмотреть код действия в этом репозитории:
Развернуть действие очень просто, если вы соблюдаете все требования файла action.yml
, описывающего действие, и файла index.js
с функциональностью, объявленной в качестве точки входа в файле package.json
, остается только создать новую версию в репозитории Github.
А теперь, если вам нужно создать файл json во время выполнения рабочего процесса, вы можете легко добавить это действие в свой .yml
файл рабочего процесса.
В конечном итоге в моем файле рабочего процесса для правильной работы использовалось мое недавно опубликованное действие:
Все тесты экшена и моего развертывания на Heroku занимают два дня моих выходных, но это того стоит!