В этой статье мы говорим про инструменты CI/CD (Continuous Integration и Continuous Delivery). Под этими терминами понимается итерационный процесс сопровождения кода: тестирование и отладка кода, автоматизация рутинных действий, сборка приложений, размещение приложений в магазинах приложений и так далее. Подробно об этом говорится в статье «Что такое CI/CD».
Как понять
Скопировать ссылку «Как понять» Скопировано
Существует большое количество инструментов для сборки кода и публикации его для пользователей. У каждого свои особенности и тонкости использования. Но есть и конкурирующие между собой инструменты. Среди конкурирующих платформ стоит говорить о GitLab CI/CD, Bitbucket Pipelines, Jenkins, Netlify, JetBrains TeamCity, GitHub Actions и прочие.
GitHub Actions — это инструмент для автоматизации рутины в области разработки программного обеспечения, автоматического тестирования, сборки и публикации приложений, который глубоко интегрирован в экосистему инструментов GitHub.
Как СКАЧАТЬ проект с GitHub в PyCharm. Как клонировать репозиторий с ГИТХАБ через консоль
Например, нужна проверка кодовой базы проекта на Node.js или контента на соответствие правилам линтера EditorConfig, установленного в проекте как дев-зависимость. Разработчики, открывая проект локально с помощью IDE или запуская специальный скрипт, смогут проверить код, поскольку в проекте уже присутствует файл .editorconfig. А что делать в том случае, если разработчик открыл файл в блокноте или в веб-интерфейсе? Вот тут можно использовать экшен, который, например, будет срабатывать всякий раз, когда файлы попадают в репозиторий с помощью git push :
Файл можно назвать произвольно, указать расширение .yml и поместить в папку .github/workflows. Экшен автоматически запустится и выдаст результаты проверки на отдельной вкладке «Actions».
Как пользоваться
Скопировать ссылку «Как пользоваться» Скопировано
GitHub Actions — средство автоматизации, конфигурация которого описывается в формате YAML.
В первой секции name устанавливается название экшена, которое будет использоваться в интерфейсе GitHub. Для названия можно использовать как английский язык, так и, например, русский. Вообще эта секция не является обязательной. Давайте создадим экшен для тестирования приложения на Node.js и назовём его так:
name: Тестирование name: Тестирование Скопировать Скопировано Не удалось скопировать
В секции on перечисляются триггеры, то есть действия пользователей в репозитории, при возникновении которых будет запускаться экшен. Например, можно настроить экшен так, что он будет запускаться при определённых операциях, связанных с основной веткой:
on: push: branches: [ main ] pull_request: branches: [ main ] on: push: branches: [ main ] pull_request: branches: [ main ] Скопировать Скопировано Не удалось скопировать
В качестве событий можно использовать разные события в репозитории в формате on . . types . Подробно перечень событий и их типы описаны в соответствующем разделе официальной документации. Самые распространённые:
Изучение GitHub в одном видео уроке за 15 минут!
- push ;
- pull _ request ;
- schedule .
В случае с push и pull _ request можно указать ветку или тег, тем самым отфильтровав нужное событие для запуска экшена (формат — on . . ). Есть возможность исключить какие-то ветки, а для всех остальных запускать экшен.
В секции schedule используется формат записи времени, аналогичный cron :
on: schedule: — cron: ’20/15 9-18 1,10,20 * *’ on: schedule: — cron: ’20/15 9-18 1,10,20 * *’ Скопировать Скопировано Не удалось скопировать
Позиции в строке очень важны: cron : ‘* * * * *’
- * минуты (0—59)
- * часы (0—23)
- * номер дня в месяце (1—31)
- * номер месяца или сокращение на английском языке (1—12 или JAN—DEC)
- * номер дня недели или сокращение на английском языке (0—6 или SUN—SAT)
Если значений несколько, они могут быть перечислены через запятую , . Знак дефиса — можно использовать для указания диапазона. Если нужно начать, например, с какой-то определённой минуты, часа, дня, месяца, дня недели и запускать что-то периодически можно использовать символ / . Например, запись ’20 / 15 9 — 18 1 , 10 , 20 * *’ означает, что событие будет запускаться 1-го, 10-го и 20-го числа каждого месяца с 9 часов утра до 18 часов вечера на 20-й, 35-й и 50-й минуте каждого часа.
Секция jobs (джобы) предназначена для описания действий, которые должен произвести экшен.
jobs: jobs: Скопировать Скопировано Не удалось скопировать
Каждый джоб имеет свой вывод, которым можно управлять. Вывод той или иной информации можно использовать в зависимых джобах, которые указываются в секции needs . Вот пример зависимых джобов:
jobs: job1: job2: needs: job1 job3: needs: [job1, job2] jobs: job1: job2: needs: job1 job3: needs: [job1, job2] Скопировать Скопировано Не удалось скопировать
Джоб job2 зависит от job1 , а джоб job3 ещё и от job2 . Название джоба — это фактически название последовательности действий. Название может содержать буквы латинского алфавита, цифры и дефисы. В джобе необходимо прописать, на какой операционной системе экшен должен запускаться в секции runs — on :
first-test: runs-on: ubuntu-latest first-test: runs-on: ubuntu-latest Скопировать Скопировано Не удалось скопировать
Доступны следующие операционные системы:
- Windows Server 2019 — для этого нужно использовать windows — latest или windows — 2019 ;
- Windows Server 2016 — для этого нужно использовать windows — 2016 ;
- Ubuntu 20.04 — для этого нужно использовать ubuntu — latest или ubuntu — 20 . 04 ;
- Ubuntu 18.04 — для этого нужно использовать ubuntu — 18 . 04 ;
- macOS Big Sur 11 — для этого нужно использовать macos — 11 ;
- macOS Catalina 10.15 — для этого нужно использовать macos — latest или macos — 10 . 15 .
Для проведения тестирования или сборки приложения иногда важно использовать разные версии платформ или операционных систем. Например, в случае с Node.js можно использовать несколько версий для тестирования веб-приложения, библиотеки или фреймворка. В экшенах это возможно и реализовано как стратегия запуска на списке (матрице) образов. Слово «образ» употреблено не случайно, поскольку используется Docker-образ для запуска той или иной платформы на базе нужной операционной системы. Кроме Node.js в экшенах поддерживается большой список других платформ, инструкции по настройке которых можно посмотреть в соответствующем разделе официальной документации. В примере используется две операционных системы, на каждой из которых запускается три версии Node.js:
runs-on: $>strategy: matrix: os: [ubuntu-18.04, ubuntu-20.04] node: [10, 12, 14] runs-on: $ matrix.os >> strategy: matrix: os: [ubuntu-18.04, ubuntu-20.04] node: [10, 12, 14] Скопировать Скопировано Не удалось скопировать
Если вам не очень понятно, зачем Docker нужен и как работает, прочитайте статью «Что такое Docker».
Чтобы можно было запустить экшен на нескольких операционных системах, в секции runs — on необходимо использовать переменную $> . Существует довольно много переменных, которые можно использовать в экшенах. Например, чтобы получить имя экшена нужно использовать переменную github . action , а чтобы получить хэш коммита — github . sha . Список всех доступных для использования переменных в контексте github . * есть в официальной документации. В экшенах есть и другие контексты:
- env — содержит переменные окружения;
- job — хранит информацию о текущем джобе, которую можно использовать внутри джоба;
- steps — хранит информацию о последовательности действий в джобе;
- runner — хранит информацию о контейнере, в котором запущен текущий джоб;
- needs — хранит вывод всех джобов, зависимых от текущего джоба.
Кроме переменных в экшенах можно пользоваться переменными окружения в операционной системе напрямую для работы команд, скриптов и программ. Иногда это удобнее, чем контексты и переменные. Список переменных окружения находится на соответствующей странице документации.
Список конкретных действий указывается в секции steps . Такое название используется не случайно, подчёркивается, что это не просто список, это — строгая последовательность действий. Можно использовать заранее готовые экшены с помощью секции uses , которые находятся в публичном или приватном репозитории. На GitHub есть даже специальный официальной документации. В качестве очередного действия можно пользоваться и обычными командами терминала с помощью секции run . Если необходимо выполнить несколько команд подряд, их можно расположить построчно, используя вертикальную черту | .
Подробнее об использовании терминала можно почитать в статье «Интерфейс командной строки». Полностью пример конфигурации для тестирования приложения Node.js будет выглядеть так:
На практике
Скопировать ссылку «На практике» Скопировано
Источник: doka.guide
Как запустить Jupyter Notebook с GitHub
Jupyter Notebooks становятся стандартом де факто для программирования в области ИИ, машинного обучения и Data Science. Они также очень эффективны в обучении, используя принцип литературного программирования для сочетания в одном документе программного кода и его описания. В этой статье я опишу несколько способов запуска Jupyter Notebooks, как локально на вашем компьютере, так и в облаке.
Ранее, в статье про Azure Notebooks, я описывал как можно удобно запускать код онлайн и делиться кодом с помощью этого инструмента. К сожалению, этот сервис превратился в более профессиональное решение, но необходимость запускать Jupyter Notebooks осталась. Рассмотрим, как же можно запустить Jupyter Notebook.
Просто посмотреть
Если вы просто хотите посмотреть на код в ноутбуке, не запуская его — это очень просто! Если код расположен в репозитории GitHub — просто откройте файл .ipynb , и его содержимое будет показано прямо в браузере.
Можно также использовать nbviewer для просмотра ноутбуков. Для этого нужно будет ввести онлайн имя/репозиторий на GitHub, либо любую URL, доступную через интернет. Вот пример того, как выглядит репозиторий GitHub при открытии в nbviewer.
Ещё одной хорошей опцией будет использовать Visual Studio Code, в которой возможность просмотра ноутбуков встроена “из коробки”. Если Visual Studio Code не установлена — можно использовать онлайн-версию vscode.dev, или github.dev.
GitHub.dev — это отличный способ открыть любой репозиторий в режиме Visual Studio Code для простого редактирования файлов. Для этого достаточно в адресе репозитория заменить github.com на github.dev . Заодно становится доступным просмотр ноутбуков.
Запуск локально или в облаке
В большинстве случае вам захочется не только посмотреть, но и запустить Jupyter notebooks, изменить код и посмотреть, как он работает. В этом случае — читайте дальше!
- Установить всё необходимое окружение у себя на компьютере
- Использовать облачные сервисы
В первом случае у вас есть полный контроль над окружением, файлами и вычислительными ресурсами, но придётся потратить некоторое время на установку. Во втором случае, вы будете использовать чьи-то вычислительные ресурсы, и скорее всего количество бесплатных ресурсов, доступных вам, будет ограничено. Зато не потребуется установка ПО, и вы сможете начать работать за считанные минуты.
Локальная установка
Если вы работаете в области ИИ, машинного обучения или Data Science, у вас уже скорее всего установлена среда Python. Иметь Python на своём компьютере — это в любом случае хорошая идея, поскольку велика вероятность, что она вам рано или поздно понадобится.
Проще всего установить Python с помощью дистрибутива Miniconda. Хотя большинство обычно рекомендует ставить Anaconda, которая включает в себя большое количество библиотек, я всегда рекомендую начинать с “голой” установки Python, а все библиотеки устанавливать по мере необходимости. У Miniconda размер первоначального установщика всего 50 Mb, в противовес почти 500 Mb у Anaconda.
Установив Miniconda, будет необходимо установить Jupyter:
conda install -c conda-forge notebook
pip install notebook
После установки, перейдите в папку с вашими ноутбуками, и запустите Jupyter:
jupyter notebook
Откроется окно браузера, и можно начинать работать!
В некоторых репозиториях GitHub есть файл requirements.txt , содержащий сведения о необходимых для работы проекта библиотеках. В этом случае рекомендуется перед запуском ноутбука установить эти библиотеки командой
pip install -r requirements.txt
Возможно, вместо классического Jupyter, вы захотите установить JupyterLab, его более продвинутую версию.
pip install juputerlab jupyter-lab
JupyterLab больше напоминает полноценную среду разработки, позволяя вам, помимо ноутбуков, редактировать скрипты Python, текстовые файлы и многое другое.
Поддержка языков .NET
Jupyter поддерживает много различных языков программирования в дополнение к Python. Если вы хотите использовать C# или F#, вы можете установить .NET Interactive. Установка поддержки .NET для Jupyter описана здесь
Используем Visual Studio Code
Редактировать и исполнять ноутбуки в браузере — не лучшая идея. Намного больше возможностей доступно при использовании Visual Studio Code, в которой есть отличная поддержка Jupyter Notebooks, с возможностью просмотра значений переменных, отладки и т.д. Для выполнения ноутбуков, вам нужно будет установить расширение Python (или расширение .NET, для C#/F#). Вам также понадобится установленное на вашем компьютере Python-окружение, описанное в предыдущем разделе.
Вот ещё немного документации по использованию Jupyter в VS Code.
Установка Python на ваш компьютер — хорошее решение в долгосрочной перспективе, но если вы хотите запустить ноутбук по-быстрому — имеет смысл использовать облачное окружение. Вам не придётся ничего устанавливать на свой компьютер, и вы сможете наслаждаться работой уже через несколько минут. Иногда имеет смысл использовать облачные окружения даже тогда, когда у вас есть Python — например, чтобы избежать конфликта библиотек и запустить ноутбук в “чистом” окружении.
MyBinder
MyBinder.org позволяет вам создать виртуализированное (точнее, контейнеризованное) окружение Jupyter из любого GitHub-репозитория. Вы просто вводите GitHub URL, а Binder создаст контейнер и запустит среду Jupyter. Многие репозитории с ноутбуками даже содержат кнопку Launch Binder, позволяющую вам открыть проект в Binder автоматически.
Binder попытается создать окружение, наилучшим образом подходящее для вашего проекта. Например, если в репозитории есть файл requirements.txt с описанием необходимых библиотек, они будут автоматически установлены. Более тонко можно настраивать конфигурацию с помощью файлов в директории binder — вплоть до описания Docker-контейнера, который необходимо собрать для запуска.
GitHub Codespaces
GitHub Codespaces — это новая встроенная в GitHub возможность открывать любой репозиторий в виртуализированном облачном окружении, доступном через среду VS Code в браузере или настольной версии. В настоящий момент Codespaces функционируют в режиме бета-тестирования, предоставляя индивидуальным пользователям некоторый объем бесплатных вычислительных ресурсов.
Datalore, CoCalc и др.
- JetBrains Datalore предоставляет некоторый объем бесплатных вычислительных ресурсов (в настоящий момент — 120 часов в месяц), а также некоторое количество GPU. Вам придётся предварительно загрузить ваши ноутбуки в рабочую область Datalore.
- CoCalc — это полноценное окружение для специалистов по Data Science, поддерживающее несколько популярных языков, таких как R, Julia и Sage, систему символьной компьютерной алгебры. Вы также можете запускать ограниченный набор GUI-приложений Linux и редактировать тексты в LaTeX. Я ранее писал про CoCalc в моей заметке про использование систем символьной алгебры для школьников.
- Про Google Colab вы скорее всего и так уже знаете, поэтому я не буду здесь его подробно описывать.
Заключение
- Установить Python-окружение на ваш компьютер, и использоват интерфейс Jupyter/JupyterLab в браузере, или Visual Studio Code
- Запустить в облачной среде онлайн, используя Binder, или одну из описанных выше опций.
У обоих подходов есть свои позитивные и негативные стороны, и я надеюсь, что после прочтения этой заметки вы сможете легко выбрать для себя оптимальный способ запуска Jupyter Notebooks.
Dmitri Soshnikov 2021-09-08 EDUCATION
jupyter notebooks
Источник: soshnikov.com
Установка GitHub Desktop и его базовое использование
Так как эти темы довольно обширные, в статье рассмотрим их обзорно, с минимально необходимой информацией, для общего понимания и базовой работы с GitHub Desktop.
Что такое Git
Git (произносится «гит») — распределённая система управления версиями.
Система управления версиями — определение из Wikipedia
Система управления версиями (от англ. Version Control System, VCS или Revision Control System) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.
Если мы верстаем или программируем, не используя систему Git, то в нашем распоряжении только тот код, который пишем сейчас.
При использовании системы Git мы запоминаем версии кода на нужных нам этапах. Имеем доступ к ранним версиям. Можем смотреть изменения, которые были сделаны между версиями. Можем отменить изменения до любой из версий.
В статье часто будем использовать термин Git, чтобы проще было понять, представим, что Git это условная “записная книжка”, в которую будем записывать, какие изменения происходят в нашем проекте. Добавили файл — записываем, что файл добавлен. Изменили файл — записываем изменения, которые были сделаны в файле. Удалили файл — записываем что файл был удален. И все эти записи храняться в “записной книжке” Git
Технически Git для проекта — это скрытая папка .git в папке вашего проекта. Скрытая папка .git содержит служебные файлы, которые нельзя изменять и удалять
У Git много возможностей, но на данный момент рассматриваем только базовые
Что такое GitHub
GitHub — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки.
Введем еще один термин, который также будет часто встречаться в статье и в работе с GitHub Desktop — репозиторий.
Репозиторий — определение из Wikipedia
Репозито́рий (англ. repository), хранилище — место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети.
Если говорить совсем просто, то репозиторий — это наш проект (папка с файлами и системой Git)
Репозиторий может храниться локально на компьютере или чаще всего на таких веб-сервисах, как GitHub
Для чего нужен Github Desktop
Работа с Git подразумевает работу через командную строку, но компания GitHub выпустила приложение, которое сильно упрощает использование Git
Для работы с GitHub Desktop, необходимо зарегистрироваться на GitHub
Регистрация на GitHub
Переходим на официальный сайт GitHub
На главной странице заполняем форму справа и нажимаем “Sign up for GitHub”
Проходим проверку и нажимаем “Join a free plan”
На следующей странице можно заполнить небольшую анкету (можно не заполнять)
На этой же странице спускаемся в самый низ и нажимаем “Complete setup”
Далее для завершения регистрации просят подтвердить свой email адрес.
Проверяем свою почту. Если письмо пришло, переходим к следующему пункту.
Если письмо не пришло, нажимаем “Resend verification email”.
Если по-прежнему письмо не приходит, можно проверить и изменить настройки — нажимаем “Change your email settings”
В письме от Github нажимаем “Verify email address”
Аккаунт GitHub успешно создан
Установка GitHub Desktop
Переходим на официальный сайт GitHub Desktop
Нажимаем “Download for Windows (64bit)” (операционная система может отличаться)
Запускаем скачанный файл. После установки в появившемся окне нажимаем “Sign in to GitHub.com”
В открывшемся окне браузера вводим в форму свои данные, как при регистрации, и нажимаем “Sign in”
Если браузер запросит, то подтвердить, что нужно “Открыть приложение GitHub Desktop”
Далее регистрационные данные перенесутся в форму конфигурации (настроек) Git — нажимаем “Continue”
Отключаем пункт “Yes, submit periodic usage stats”, если не хотите периодически передавать статистику работы GitHub Desktop и нажимаем “Finish”
Далее видим начальное окно GitHub Desktop
“Create a tutorial repository…“ — создать обучающий репозиторий
“Clone repository from the Internet…“ — клонировать (скопировать/скачать) репозиторий из GitHub к себе на компьютер
“Create a New Repository on your hard drive…“ — создать новый репозиторий на вашем жестком диске (на вашем компьютере) и добавить систему Git в проект
“Add an Existing Repository from your hard drive…“ — добавить на GitHub репозиторий, который уже есть на вашем компьютере и использует Git
Справа будут отображаться ваши репозитории, которые уже загружены на GitHub, но если только что зарегистрировались, то список будет пуст.
Создаём новый репозиторий
Создаём у себя на компьютере (например, на диске C:) папку projects, где локально будут храниться все наши репозитории.
Переходим в Github Desktop, нажимаем на начальном экране “Create a New Repository on your hard drive…“ или File > New Repository
В открывшемся окне в поле Name пишем название репозитория. В поле Description — описание репозитория, если необходимо. В Local Path выбираем созданную на диске C: папку projects, остальное оставляем по-умолчанию и нажимаем “Create repository”
В папке projects появился репозиторий Project-1
В репозитории Project-1 на данный момент находятся только необходимые служебные файлы Git.
На данный момент репозиторий расположен только локально на компьютере в папке Project-1. Чтобы репозиторий появился в аккаунте GitHub и хранился там, нажимаем “Publish repository”
В появившемся окне оставляем все по-умолчанию. Пункт “Keep this code private” оставляем отмеченным, чтобы репозиторий, пока что, был виден только нам, потом в любой момент репозиторий можно будет сделать открытым, чтобы его видели другие пользователи GitHub. Нажимаем “Publish repository”
Теперь репозиторий скопирован в аккаунт GitHub. Переходим в браузере на GitHub. Сверху справа нажимаем на круглую иконку аккаунта и выбираем пункт “Your repositories”
На странице наших репозиториев появился созданный репозиторий Project-1
Откроем страницу репозитория, нажав на название репозитория в списке. На данный момент в репозитории только служебные файлы.
Создадим на компьютере в папке Project-1 файл index.html и напишем в нем минимальную разметку.
На данный момент файл index.html расположен только локально в папке Project-1. Локальная система Git, которая была создана вместе с репозиторием, об этом файле ничего не знает.
Чтобы Git узнала, что в репозиторий добавился файл, необходимо сообщить это через команду Commit.
Commit — фиксирование текущего состояния файлов, звучит как коммит.
Коммитам необходимо давать названия.
Откроем Github Desktop. Во вкладке Changes видим созданный index.html.
Вводим в поле ниже название коммита — add index.html . Затем нажимаем “Commit to main”, чтобы зафиксировать данное состояние файлов в локальную систему Git. (На данный момент не будем углубляться в ветвление Git)
На данный момент мы зафиксировали файлы в текущем состоянии и сделали запись об этом в локальную систему Git.
Далее, чтобы передать изменения в репозиторий на GitHub, нажимаем “Push origin”
Переходим в наш репозиторий на GitHub и убеждаемся, что файл index.html был добавлен
Далее внесем изменения в файл index.html — добавим заголовок
Project-1
Переходим в GitHub Desktop, видим что index.html был изменен, вводим название нового коммита — add h1 и нажимаем “Commit to main”
И снова передаем изменения в репозиторий на GitHub — нажимаем “Push origin”
Видим, что index.html был изменен при коммите add h1
Нажав на название файла index.html, убеждаемся что заголовок добавлен
На данный момент умеем создать репозиторий, делать коммиты, и передавать на GitHub
Далее рассмотрим работу с GitHub Desktop с нескольких рабочих мест
Клонирование репозитория
Предположим, мы работаем с проектом дома на компьютере и в офисе на ноутбуке. Чтобы на ноутбуке у нас была актуальная версия проекта, мы должны получить ее из репозитория на GitHub — это действие называется “клонирование”.
Создадим теперь на ноутбуке папку для репозиториев, например notebook projects
Устанавливаем на ноутбук GitHub Desktop, заходим под своим аккаунтом. Нажимаем File > Clone Repository
В списке выбираем необходимый репозиторий
В пункте Local path, нажимаем кнопку “Choose…“ и выбираем созданную папку notebook projects. Далее нажимаем “Clone…“
Репозиторий клонирован (скопирован) в папку Project-1.
Если в GitHub Desktop посмотреть вкладку History, то увидим всю историю коммитов
Внесем изменения в index.html на ноутбуке, добавим
Add text from Notebook
и сделаем коммит c названием add text from notebook , далее нажимаем “Commit to main”
Отправим коммит в репозиторий на GitHub — нажимаем “Push origin”
Коммит виден в репозитории на GitHub
В index.html добавлен
Add text from Notebook
Теперь возвращаемся из офиса домой, открываем GitHub Desktop на компьютере, и чтобы получить изменения, сделанные на ноутбуке, нажимаем “Fetch origin” — проверяем, есть ли отличия локального репозитория на компьютере и репозитория на GitHub
Отличия есть, поэтому далее нажимаем “Pull origin”
И получаем актуальный проект со всеми изменениями