Node.js bilan ishimni qanday avtomatlashtirdim

Ishda bajarishingiz kerak bo'lgan juda zerikarli vazifalarni bilasiz: konfiguratsiya fayllarini yangilash, fayllarni nusxalash va joylashtirish, Jira chiptalarini yangilash.

Vaqt birozdan keyin qo'shiladi. Bu 2016 yilda men onlayn-o'yinlar kompaniyasida ishlaganimda juda ko'p edi. Men o'yinlar uchun sozlanadigan shablonlarni yaratishga to'g'ri kelgan paytlarda ish juda foydali bo'lar edi, ammo mening vaqtimning 70 foizi ularning nusxalarini yaratishga sarflangan. andozalar va terining yangi turlarini joriy etish.

Reskin nima?

Kompaniyadagi qahramonning ta'rifi bir xil o'yin mexanikasi, ekranlar va elementlarning joylashishini aniqlashdan foydalangan, ammo ranglar va aktivlar kabi vizual estetikani o'zgartirgan. Shunday qilib, "Rok Qog'oz Qaychi" kabi oddiy o'yin kontekstida biz quyida bo'lgani kabi asosiy aktivlarga ega shablon yaratamiz.

Ammo biz shunga o'xshash narsalarni yaratganimizda, biz turli xil aktivlardan foydalanardik va o'yin hali ham ishlaydi. Agar siz Candy Crush yoki Angry Birds kabi o'yinlarga qarasangiz, ularda bir xil o'yinning ko'plab turlari borligini bilib olasiz. Odatda Xellouin, Rojdestvo yoki Fisih relizlari. Biznes nuqtai nazaridan bu mukammal ma'noga ega. Endi ... hayotga qaytishimizga. Bizning har bir o'yinimiz bir xil to'plamdagi JavaScript faylini baham ko'radi va turli xil tarkib va ​​aktiv yo'llari bo'lgan JSON fayliga yuklaydi. Natija?

Men va boshqa ishlab chiquvchilar kunlik jadvallarni tuzishgan, va birinchi fikrim: "Bu juda ko'p narsani avtomatlashtirish mumkin edi." Men har doim yangi o'yin yaratganimda, ushbu amallarni bajarishim kerak edi:

  1. Andozalar omborini ularning yangilanganligiga ishonch hosil qilish uchun tortib oling;
  2. Jira chipta identifikatori bilan aniqlangan yangi filialni yaratish - master-filialdan;
  3. Men qurishim kerak bo'lgan shablonning nusxasini yarating;
  4. Qovurish;
  5. Tarkibni config.json faylida yangilang. Bunga aktivlar marshrutlari, sarlavhalari va paragraflari, shuningdek ma'lumotlar uzatish bo'yicha so'rovlar kiradi;
  6. Mahalliy tuzing va tarkibni manfaatdor tomonlarning so'z hujjatlariga mos kelishini tekshiring. Ha men bilaman;
  7. Dizaynerlar bilan ular tashqi ko'rinishi bilan mamnun ekanliklarini tekshirib ko'ring;
  8. Filialni birlashtirish va keyingi bo'limga o'tish;
  9. Jira chiptasi holatini yangilang va manfaatdor tomonlar uchun sharh qoldiring;
  10. Chaying va takrorlang.

Endi men uchun bu haqiqiy rivojlanish ishlariga qaraganda ko'proq ma'muriy his qildi. Men oldingi rolda Bash skriptiga duch keldim va unga sarflangan sa'y-harakatlarni kamaytirish uchun bir nechta ssenariylarni yaratish uchun unga sakrab chiqdim. Skriptlardan biri shablonlarni yangilab, yangi filialni yaratdi, boshqasi skriptni topshirdi va loyihani sahnalashtirish va ishlab chiqarish muhitiga birlashtirdi.

Loyihani o'rnatish, qo'lda sozlash uchun uch-o'n minut vaqtni oladi. O'rnatish uchun, ehtimol, besh-o'n daqiqa. O'yinning murakkabligiga qarab, o'n daqiqadan yarim kungacha har qanday narsa bo'lishi mumkin. Skriptlar yordam berdi, ammo tarkibni yangilash yoki etishmayotgan ma'lumotlarni ta'qib qilishga ko'p vaqt sarflandi.

Vaqtni tejash uchun kod yozish etarli emas edi. Men skriptlardan ko'proq foydalanishim uchun ish jarayonimizga yaxshiroq yondashishni o'ylardim. Tarkibni so'z hujjatlari tashqarisiga va Jira chiptalariga ko'chiring, ularni tegishli maxsus maydonlarga ajratib oling. Dizaynerlar aktivlarning ommaviy haydovchisiga ega bo'lgan joyga havolani yuborish o'rniga, aktivlarga Sahna va ishlab chiqarish URL manzili bilan tarkibni etkazib berish tarmog'ini (CDN) omborga o'rnatish maqsadga muvofiqdir.

Jira API

Bunga o'xshash narsalar bir oz vaqt talab qilishi mumkin, ammo vaqt o'tishi bilan bizning jarayonimiz yaxshilandi. Jira API-da ba'zi tadqiqotlar qildim; bizning loyihamizni boshqarish vositasi va men ishlayotgan Jira chiptalariga bir nechta so'rovlar qildim. Men juda ko'p qimmatli ma'lumotlarni orqaga tortayotgan edim. Shu qadar qadrli ediki, men Jira chiptalaridan qadriyatlarni o'qish, shuningdek sharhlar yozish va qiziquvchilarga yozib qo'yish uchun uni Bash skriptlarimga qo'shishga qaror qildim.

Bosh tugunga o'tish

Bash skriptlari yaxshi edi, lekin agar kimdir Windows-da ishlayotgan bo'lsa, ularni ishga tushirib bo'lmaydi. Bir oz qazishni amalga oshirgandan so'ng, men butun jarayonni bemalol qurish vositasiga o'tkazish uchun JavaScript-dan foydalanishga qaror qildim. Men vositani Mason deb nomladim va u hamma narsani o'zgartiradi.

CLI

Git-dan foydalansangiz - menimcha, siz terminalda turibsiz, uning buyruqlar qatori juda samimiy interfeysga ega ekanligini sezasiz. Agar siz xatoni noto'g'ri yozsangiz yoki noto'g'ri yozsangiz, u sizni termoqchi bo'lgan deb muloyimlik bilan muloyimlik bilan taklif qiladi. Qo'mondon deb nomlangan kutubxona xuddi shunday xatti-harakatni qo'llaydi va bu men foydalangan ko'plab kutubxonalardan biri edi.

Quyidagi soddalashtirilgan kod misolini ko'rib chiqing. Bu buyruqlar qatori interfeysi (CLI) dasturini yuklash.

src / mason.js

Npm-dan foydalanib, pack.json-dan havolani ishga tushirishingiz mumkin va u global taxallusni yaratadi.

Men loyihaning tubida npm havolasini ishlatsam.

npm havolasi

Bu men qo'ng'iroq qila oladigan, mason deb nomlangan buyruqni ta'minlaydi. Shunday qilib, har safar terminalda masonni chaqirganimda, u mason.js skriptini ishlaydi. Barcha vazifalar mason deb nomlangan bitta soyabon buyrug'i ostiga tushadi va men uni har kuni o'yinlarni qurishda ishlatardim. Saqlagan vaqtim nihoyatda ajoyib edi.

Siz quyida ko'rishingiz mumkin - men o'sha paytlarda qilgan ishimning faraziy misolida - men Jira chipta raqamini dalil sifatida buyruqqa topshirdim. Bu Jira API-ni buzadi va o'yinni yangilash uchun zarur bo'lgan barcha ma'lumotlarni olib keladi. Keyin u loyihani qurishda va tarqatishda davom etadi. Keyin men sharh qoldirib, manfaatdor tomonlarga va dizaynerlarga ularning amalga oshirilganligini xabar berish uchun teglardim.

$ mason GS-234 ni yaratadi
... qo'ng'iroq qilish Jira API
... OK! qadriyatlar bor!
... "GS-234" deb nomlangan usta tomonidan yangi filial yaratish
... andozalar omborini yangilash
... "uchtadan" shablonidan nusxalash
... qiymatlarni konfiguratsiya qilish JSON
... qurilish loyihasi
... tarqatish o'yini
... Zo'r! Mana jonli havola
http://www.fake-studio.com/game/fire-water-earth
... "Hey [~ ben.smith] sharhini e'lon qildi, bu nashr qilindi. Dizayn yaxshi ko'rinadimi? Jirada [~ jamie.lane] '.

Hammasi bir nechta tugmachalar bilan bajarildi!

Men butun loyihadan juda xursand bo'ldim va men yaqinda nashr etgan "Node.js bilan avtomatlashtirish" deb nomlangan kitobimga yaxshiroq versiyasini yozishga qaror qildim:

Rangli bosib chiqarish: http://amzn.eu/aA0cSnu
Shovqin: http://amzn.eu/dVSykv1
Kobo: https://www.kobo.com/gb/en/ebook/automating-with-node-js
Leanpub: https://leanpub.com/automatingwithnodejs
Google Play: https://play.google.com/store/books/details?id=9QFgDwAAQBAJ

Kitob ikki qismga bo'lingan:

1-qism

Birinchi qism - retseptlar to'plami yoki individual global buyruqlar sifatida ishlaydigan o'quv qo'llanmalar. Ular kun bo'yi yurganingizda ishlatilishi mumkin va istalgan vaqtda ish jarayonini tezlashtirish yoki toza qulaylik uchun chaqirilishi mumkin.

2-qism

Ikkinchi qism - bu yerdan yuqoriga ko'tarilish uchun xoch-platformani yaratish vositasi. Muayyan vazifani bajaradigan har bir skript o'z buyrug'i bo'ladi, asosiy soyabon buyrug'i - odatda sizning loyihangizning nomi - ularning hammasini o'z ichiga olgan.

Kitobdagi loyiha kichik multfilm robotiga asoslangan nobot (no-bot) deb nomlangan. Umid qilamanki, siz uni o'qib, nimanidir o'rganasiz.

Men har qanday ishda vaziyatlar va oqimlar turlicha ekanligini tushunaman, lekin siz kichkina bo'lsa ham, ofisingizda kuningizni biroz osonlashtiradigan biron bir narsani topishingiz kerak.

Adminga ko'proq vaqt sarflashga va kamroq vaqt sarflang.

O'qiganingiz uchun rahmat! Agar sizga yoqsa, pastga bir nechta chapak chaling.

Dasturiy ta'minot / qo'shimcha qurilmalarning barcha jihatlariga oid videolar uchun YouTube kanalimni tekshiring: https://www.youtube.com/channel/UCKr-FjGzNdbbk--gvW5tzaw