СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS...

45

Transcript of СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS...

Page 1: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления
Page 2: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления
Page 3: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

СОДЕРЖАНИЕ

1 Что такое Cake. Описание и ключевые преимущества

2 Основы работы с Cake

3 Разбор примеров использования Cake в наших проектах

Page 4: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

СAKE. ЧТО ЭТО? ОПИСАНИЕ И КЛЮЧЕВЫЕ ПРЕИМУЩЕСТВА

Page 5: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

5Automation Builds With Cake

ПРОБЛЕМАЧТО ТАКОЕ CAKE

Compile Deploy

JS

C#

Test Package

Compile

«У меня все работает»

Page 6: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

6Automation Builds With Cake

ПРОБЛЕМАЧТО ТАКОЕ CAKE

● Несколько языков разработки

● Множество стадий билд процесса

● Различное поведение в зависимости от окружения

Page 7: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

7Automation Builds With Cake

ПРОБЛЕМА – COMPILE

● Чекаут из разных репозиториев

● Восстановление пакетов npm / nuGet

● Разрешение зависимостей

● Версионирование

● Обфускация кода

● Ветвления логики компиляции

ЧТО ТАКОЕ CAKE

Page 8: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

8Automation Builds With Cake

ПРОБЛЕМА – TEST

● Unit тестирование

● Определение покрытия кода тестами

● Статический анализ кода

● UI тесты

ЧТО ТАКОЕ CAKE

Page 9: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

9Automation Builds With Cake

ПРОБЛЕМА – PACKAGE

● Подпись кода

● Создание релиз ноутов

● Генерация документации

ЧТО ТАКОЕ CAKE

Page 10: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

10Automation Builds With Cake

ПРОБЛЕМА – DEPLOY

● Zip

● Миграция баз данных

● Работа с FTP

● Работа с пулами приложений

● Нотификации про выполнение операции

ЧТО ТАКОЕ CAKE

Page 11: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

11Automation Builds With Cake

АЛЬТЕРНАТИВЫ

● Попросить вылить того, кто уже выливал

● CI сервер

● Написать свой скрипт

ЧТО ТАКОЕ CAKE

Page 12: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

12Automation Builds With Cake

АЛЬТЕРНАТИВЫ – РУКАМИ

● Каждый раз по новому

● «У меня все работает»

● Нет никакой периодичности

● Занимает много времени

● Отпуски и больничные

● Через пол года уже никто

ничего не помнит

ЧТО ТАКОЕ CAKE

Page 13: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

13Automation Builds With Cake

АЛЬТЕРНАТИВЫ – CI СЕРВЕР

● Сложно дебажить процесс билда

● Конфигурация находится не под version-контролем

● Нет связи между решением и определением процесса билда

● Для некоторых CI систем новый синтаксис

ЧТО ТАКОЕ CAKE

Page 14: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

14Automation Builds With Cake

АЛЬТЕРНАТИВЫ – СВОЙ СКРИПТ

● PowerShell – мощный язык, но им нужно владеть

● Проблемы с мультиплатформенность (ее нет)

● Огромное количество подводных камней

ЧТО ТАКОЕ CAKE

Page 15: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

15Automation Builds With Cake

КЛЮЧЕВЫЕ ПРЕИМУЩЕСТВА

Cake (C# Make) is a cross-platform build automation system

with a C# DSL for tasks such as compiling code, copying files

and folders, running unit tests, compressing files

and building NuGet packages.

ЧТО ТАКОЕ CAKE

Page 16: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

16Automation Builds With Cake

КЛЮЧЕВЫЕ ПРЕИМУЩЕСТВА

● Полный контроль над процессом билда

● Мультиплатформенность – поддерживается запуск на Windows, Linux, macOS

● Для написания кода используется C# с всеми его преимуществами

● Легкость расширения функциональности через nuGet

● Open Source. Разработка ведется на GitHub

● Есть каналы для общения с мейнтейнерами в Gitter

● Огромная экосистема. 112 расширений для любых потребностей,

среди которых MSBuild, Git, SemVer2.0.0, etc

ЧТО ТАКОЕ CAKE

Page 17: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

CAKE. ОСНОВЫ РАБОТЫ

Page 18: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

18Automation Builds With Cake

СТРУКТУРА ФАЙЛОВ ДЛЯ CAKECAKE. ОСНОВЫ РАБОТЫ

● build.ps1/build.sh○ Bootstrapper скрипты, которые обеспечивают установку зависимостей

для Cake и правильный запуск

○ Написаны на PowerShell для Win и Bash для Linux/Mac

○ Обеспечивают валидацию параметров и запуск нужного таска на выполнение

○ Может быть изменен под нужды проекта

● build.cake○ Основной скрипт, написанный на C# с некоторыми особенностями

○ Содержит основную логику

○ Имя может отличаться от стандартного

● tools/packages.config (не обязательно)○ Говорит bootstrapper скрипту, какие nuGet пакеты и какой версии

устанавливать перед запуском

Page 19: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

19Automation Builds With Cake

СТРУКТУРА ФАЙЛОВ ДЛЯ CAKECAKE. ОСНОВЫ РАБОТЫ

Page 20: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

20Automation Builds With Cake

IDE

● Visual Studio○ Нужно установить расширение○ Поддержка запуска тасков на выполнение, с выводом во внутреннюю консоль○ Поддержка Debug○ Нет intellisense, но есть подсветка синтаксиса

● VS Code○ Нужно установить расширение○ Поддержка запуска тасков на выполнение, с выводом во внутреннюю консоль○ Поддержка Debug○ Подсветка синтаксиса и intellisense○ Дополнительные команды и сниппеты○ ИМХО работает не всегда идеально, особенно на Mac

CAKE. ОСНОВЫ РАБОТЫ

Page 21: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

21Automation Builds With Cake

TASKS

● Основной юнит выполнения Cake

● Могут иметь зависимости, критерии и специфическую обработку ошибок

CAKE. ОСНОВЫ РАБОТЫ

Page 22: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

22Automation Builds With Cake

TASKS

● Указывает какой таск будет запускаться

● Всегда должен быть в конце

● У тасков нет параметров

CAKE. ОСНОВЫ РАБОТЫ

Page 23: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

23Automation Builds With Cake

ЗАВИСИМОСТИ

● Таски могут быть зависимы друг от друга

● Зависимостей может быть множество

● Каждый таск выполняется только 1 раз

CAKE. ОСНОВЫ РАБОТЫ

Page 24: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

24Automation Builds With Cake

ЗАВИСИМОСТИCAKE. ОСНОВЫ РАБОТЫ

Page 25: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

25Automation Builds With Cake

КРИТЕРИИ

● Необходимы для контроля выполнения билд скрипта

● Критерии вычисляются на момент создания задачи

● Если нужно отложить вычисление до момента выполнения

задачи – стоит использовать лямбды

● Обычно используются для изменения логики в зависимости

от окружения, бранча, прочее

CAKE. ОСНОВЫ РАБОТЫ

Page 26: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

26Automation Builds With Cake

КРИТЕРИИCAKE. ОСНОВЫ РАБОТЫ

Page 27: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

27Automation Builds With Cake

РАБОТА С ОШИБКАМИ

● Выполнение скрипта прерывается при возникновении

необработанного исключения

● Для тасков существует несколько вариантов обработки исключений:

○ OnError – колбек для обработки ошибки, продолжает выполнение

○ ContinueOnError – продолжает выполнение скрипта

○ ReportError – колбек для уведомления про исключение, останавливает

выполнение скрипта

CAKE. ОСНОВЫ РАБОТЫ

Page 28: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

28Automation Builds With Cake

РАБОТА С ОШИБКАМИCAKE. ОСНОВЫ РАБОТЫ

Page 29: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

29Automation Builds With Cake

РАБОТА С ОШИБКАМИCAKE. ОСНОВЫ РАБОТЫ

Page 30: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

30Automation Builds With Cake

РАБОТА С ОШИБКАМИCAKE. ОСНОВЫ РАБОТЫ

Page 31: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

31Automation Builds With Cake

РАБОТА С ОШИБКАМИCAKE. ОСНОВЫ РАБОТЫ

Page 32: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

32Automation Builds With Cake

PRE/POST TASKS

● Setup – существует для выполнения перед первым таском

● Teardown – существует для выполнения после последнего таска

CAKE. ОСНОВЫ РАБОТЫ

Page 33: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

33Automation Builds With Cake

АРГУМЕНТЫ

● Основной способ передачи настроек в скрипт

● Конвертируются из строкового представления

в нужный вам тип

● Также можно обращаться к переменным окружения

CAKE. ОСНОВЫ РАБОТЫ

Page 34: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

34Automation Builds With Cake

АРГУМЕНТЫ● Аргумент target – стандартный подход к вызову нужного вам таска

● Старайтесь указывать имя таска по умолчанию, чтоб упростить вызов скрипта

CAKE. ОСНОВЫ РАБОТЫ

Page 35: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

35Automation Builds With Cake

АРГУМЕНТЫCAKE. ОСНОВЫ РАБОТЫ

Page 36: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

36Automation Builds With Cake

АРГУМЕНТЫCAKE. ОСНОВЫ РАБОТЫ

Page 37: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

37Automation Builds With Cake

АРГУМЕНТЫCAKE. ОСНОВЫ РАБОТЫ

Page 38: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

38Automation Builds With Cake

ДИРЕКТИВЫ ПРЕПРОЦЕССОРА

● Директивы используются для загрузки в скрипт различных расширений, скриптов и nuGet библиотек

● Можно использовать пакеты как с nuGet сервера, так и локальные скрипты или либы

CAKE. ОСНОВЫ РАБОТЫ

Page 39: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

39Automation Builds With Cake

ДИРЕКТИВЫ ПРЕПРОЦЕССОРАCAKE. ОСНОВЫ РАБОТЫ

Page 40: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

40Automation Builds With Cake

АРГУМЕНТЫ КОМАНДНОЙ СТРОКИ

● Существуют для передачи аргументов в билд скрипт

● Формат передачи аргументов в sh и ps1 bootstrap скрипты – могут отличаются

● Формат передачи аргументов также отличается в разных версиях bootstrap скриптов

● Из полезных аргументов можно выделить:

○ -dryrun – выполняет сборку скрипта и выводит очередь выполнения тасков

○ -verbosity – задает минимальный уровень логов (quiet, minimal, normal,

verbose, diagnostic)

● Примеры вызова скриптов:

○ ./build.sh --script=custom-build.cake --target="Integration" --verbosity=normal

○ .\build.ps1 -Target Deployment --nuGetApiKey=proget:xXxXXxXxXXxX

CAKE. ОСНОВЫ РАБОТЫ

Page 41: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

41Automation Builds With Cake

ИНТЕГРАЦИЯ С BAMBOO – WINCAKE. ОСНОВЫ РАБОТЫ

Page 42: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

42Automation Builds With Cake

ИНТЕГРАЦИЯ С BAMBOO – MAC CAKE. ОСНОВЫ РАБОТЫ

Page 43: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ CAKE В НАШИХ ПРОЕКТАХ

Page 44: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления

Copyright Plarium Global LTD. 2018Do not distribute

THANK YOU

Page 45: СОДЕРЖАНИЕcdn01.x-plarium.com/browser/content/developers/udev/... · 2018. 9. 5. · JS C# Test Package Compile «У меня все ... Обфускация кода Ветвления