- Оригинальный адрес:How I automated my job with Node.js
- Оригинальный автор:Shaun Michael Stone
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:geniusq1981
- Корректор:Starriers
Вы знаете, что на работе приходится выполнять много утомительных задач: обновление файлов конфигурации, копирование и вставка файлов, обновление задач Jira.
Через некоторое время время потребления этих задач будет постепенно накапливаться. Так было в 2016 году, когда я работал в компании, занимающейся онлайн-играми. Создание настраиваемых шаблонов для игр — очень полезная работа для разработчиков игр, но около 70% моего времени уходит на дублирование этих игровых шаблонов и развертывание этих переупакованных реализаций.
Что такое Рескин?
По определению компании, рескин — это то, что использует ту же игровую механику, расположение экрана и элементов, но изменяет чисто визуальную эстетику, такую как цвета и активы. Итак, в простой игре, такой как «Камень, ножницы, бумага», мы создаем шаблон со следующими основными активами.
После того, как мы создадим такой рескин, мы сможем заменить разные активы. Если вы посмотрите на такие игры, как Candy Crush или Angry Birds, вы увидите, что существует множество разных версий одной игры. Обычно есть версии, соответствующие Хэллоуину, Рождеству или Пасхе, чтобы отличать выпуск. С точки зрения бизнеса это имеет смысл. Теперь... вернемся к нашей реализации. Каждая игра использует один и тот же файл JavaScript, но загружает файлы JSON с разным содержимым и путями к ресурсам. оказаться?
У меня и других разработчиков каждый день куча рабочих графиков, и моей первой мыслью было «на самом деле очень много работы можно автоматизировать». Всякий раз, когда я иду, чтобы создать новую игру, я должен сделать следующие шаги:
- git pull репозитории шаблонов, чтобы убедиться, что они обновлены;
- Создайте новую ветку из основной ветки, определяемой идентификатором задачи Jira;
- Сделайте копию шаблона, который мне нужно построить;
- запустить глоток;
- возобновитьconfig.jsonсодержимое в файле. Это включает в себя пути к ресурсам, заголовки, абзацы и запросы службы данных;
- Скомпилируйте локально и проверьте, соответствует ли он содержанию, требуемому документом требований к задаче;
- Уточните у дизайнера, довольны ли они результатом;
- Слияние с основной веткой и переход к следующей ветке;
- Обновляйте статус задач Jira и оставляйте комментарии;
- Приведите в порядок и повторите вышеописанный процесс еще раз.
Для меня это больше похоже на управленческую работу, чем на реальную работу по разработке. Я знакомился со сценариями Bash на предыдущих должностях и создал несколько сценариев на их основе, чтобы сократить объем проделанной работы. Один из сценариев может обновить шаблон и создать новую ветку, а другой сценарий выполняет фиксацию и объединяет проект в среду разработки и рабочую среду.
Создание проекта вручную занимает от трех до десяти минут. Развертывание может занять от пяти до десяти минут. Они варьируются в зависимости от сложности игры и иногда могут занимать от десяти минут до половины дня. Скрипты могут помочь, но по-прежнему требуют много времени для обновления контента или поиска недостающей информации.
Недостаточно сократить время, просто написав код. Нужно подумать о лучших способах обработки нашего рабочего процесса, чтобы я мог лучше использовать эти сценарии. Переместите содержимое из документов, разбейте его на соответствующие настраиваемые поля и переместите в задачи Jira. Вместо того, чтобы отправлять ссылку на ресурс на общедоступный сервер, разработчику практичнее настроить репозиторий сети доставки контента (CDN), который содержит URL-адреса разработки и производства для ресурса.
Jira API
Такие вещи могут занять некоторое время, чтобы увидеть результаты, но наш процесс со временем улучшается. Я провел небольшое исследование API нашего инструмента управления проектами Jira и сделал несколько запросов к задачам Jira, над которыми работал. Я собрал много ценных данных. Эти данные очень ценны, поэтому я решил интегрировать их в свой Bash-скрипт, чтобы считывать эти данные из задач Jira и оставлять сообщение ответственному лицу, когда задача выполнена.
От Bash к узлу
Скрипты Bash — это хорошо, но если кто-то работает в Windows, это не сработает. Проведя небольшое исследование, я решил обернуть весь процесс в пользовательский инструмент сборки с использованием JavaScript. я называю этоMason, это все меняет.
CLI
Когда вы используете Git в терминале, вы заметите, что он имеет очень удобный интерфейс командной строки. Если вы ошибетесь в написании или вводе команды, она вежливо предложит вам, что печатать. Такое же поведение используется библиотекой под названием Commander, одной из многих, которые я использовал.
Рассмотрим упрощенный пример кода ниже. Он загружает приложение интерфейса командной строки (CLI).
src/mason.js
#! /usr/bin/env node
const mason = require('commander');
const { version } = require('./package.json');
const console = require('console');
// commands
const create = require('./commands/create');
const setup = require('./commands/setup');
mason
.version(version);
mason
.command('setup [env]')
.description('run setup commands for all envs')
.action(setup);
mason
.command('create <ticketId>')
.description('creates a new game')
.action(create);
mason
.command('*')
.action(() => {
mason.help();
});
mason.parse(process.argv);
if (!mason.args.length) {
mason.help();
}
С npm вы можете запуститьpackage.jsonСсылка в , которая создает глобальный псевдоним.
...
"bin": {
"mason": "src/mason.js"
},
...
Когда я запускаю ссылку npm в корне проекта.
npm link
Это даст мне команду каменщика, которую я могу вызвать. Поэтому всякий раз, когда я вызываю mason в терминале, он запускает скрипт mason.js. Все задачи реализованы в этой команде mason, которую я использую каждый день для сборки игр. Время, которое я экономлю, невероятно.
Вы можете видеть ниже — в примере, который я представлял себе в то время — что я передаю номер задачи Jira в качестве параметра команде. Это позволит получить доступ к API Jira и получить всю информацию, необходимую для обновления игры. Затем он приступит к компиляции и развертыванию проекта. Я опубликую комментарий позже, @principal и дизайнер, чтобы сообщить им, что это сделано.
$ mason create GS-234
... calling Jira API
... OK! got values!
... creating a new branch from master called 'GS-234'
... updating templates repository
... copying from template 'pick-from-three'
... injecting values into config JSON
... building project
... deploying game
... Perfect! Here is the live link
http://www.fake-studio.com/game/fire-water-earth
... Posted comment 'Hey [~ben.smith], this has been released. Does the design look okay? [~jamie.lane]' on Jira.
Все это делается с помощью всего нескольких ключей!
Я был так доволен всем проектом, что решил переписать лучшую версию только что опубликованной книги под названием «Автоматизация с помощью Node.js».
- цветная печать: amzn.eu/aA0cSnu
- Разжечь: amzn.eu/dVSykv1
- Кобо: woohoo.kobo.com/root/en/eBook…
- Линпаб: leanuniversal.com/automating i…
- Гугл игры: play.google.com/store/books…
Книга разделена на две части:
часть 1
Первая часть представляет собой набор методов или строительных блоков инструкций в виде одной глобальной команды. Их можно использовать в повседневной работе или вызывать в любое время исключительно для удобства, чтобы ускорить рабочий процесс.
часть 2
Вторая часть представляет собой пошаговое руководство по созданию инструмента кроссплатформенной компиляции с нуля. Каждый скрипт реализует определенную задачу, а главная команда, обычно название проекта, инкапсулирует их все.
Предметы в книге называютсяnobot (no-bot), который основан на маленьком мультяшном роботе. Надеюсь, вам понравится и вы чему-то из него научитесь.
Я знаю, что в каждом бизнесе есть разные ситуации и процессы, но вы должны найти в нем что-то, что сделает вашу повседневную работу в офисе намного проще, даже если это незаметно.
Тратьте больше времени на разработку и меньше на управление.
Спасибо за чтение! Если вам это нравится, пожалуйста, дайте нам, как ниже. 👏
Видео о различных аспектах программного и аппаратного обеспечения смотрите на моем канале YouTube:Ву Ву YouTube.com/channel/UC K…
Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из ИнтернетаНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллекти другие поля, если вы хотите видеть больше качественных переводов, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.