GitHub Codespaces — это современная облачная среда разработки, которая использует контейнер для предоставления популярных языков, инструментов и служебных программ для разработки. GitHub Codespaces также можно настроить, что позволяет создать настраиваемую среду разработки для проекта. Настроив пользовательскую среду разработки для проекта, вы получите воспроизводимую конфигурацию кодового пространства для всех пользователей проекта.
Создание кодового пространства
Кодовое пространство можно создавать в нескольких точках входа:
- Из шаблона GitHub или любого репозитория шаблонов в GitHub.com для запуска нового проекта
- Из ветви в репозитории для работы с новыми функциями
- Из открытого запроса на вытягивание для изучения работы в процессе выполнения
- Из фиксации в журнале репозитория для изучения ошибки в определенный момент времени
codespace можно создать на веб-сайте GitHub.com, в Visual Studio Code или с помощью GitHub CLI.
Кодовое пространство может быть временным, если вам нужно протестировать что-то или вернуться в то же кодовое пространство для выполнения более долгосрочных задач.
Дополнительные сведения см. в разделах Создание codespace для репозитория, Создание codespace на основе шаблона и Открытие существующего codespace.
Примечание. Вы можете создать несколько codespace для каждого репозитория или даже для каждой ветви. Однако количество создаваемых сред codespace ограничено, как и количество одновременно выполняемых сред codespace. Если вы достигнете максимального количества сред codespace и попытаетесь создать еще одну среду, появится сообщение о том, что необходимо удалить существующую среду codespace, прежде чем создать новую.
Процесс создания codespace
При создании codespace различные шаги выполняются в фоновом режиме, прежде чем codespace становится доступным для вас.
Шаг 1. Кодовому пространству назначаются виртуальная машина и хранилище
При создании codespace выполняется неглубокий клон репозитория или репозитория шаблонов, если вы создаете codespace на основе шаблона. Репозиторий клонируется в виртуальную машину Linux, которая является как выделенной, так и частной. Выделение виртуальной машины обеспечит вам полный набор вычислительных ресурсов, доступных на этом компьютере. При необходимости это также позволит вам получить полный корневой доступ к контейнеру.
Репозиторий клонируется в /workspaces
каталог в codespace. Дополнительные сведения см. в разделе Сведения о структуре каталогов codespace ниже.
Шаг 2. Создается контейнер
GitHub Codespaces использует контейнер в качестве среды разработки. Этот контейнер создается на основе конфигураций, которые можно определить в devcontainer.json
файле и, при необходимости, в Файле Dockerfile. Если вы создаете пространство кода из пустого шаблона GitHub или из репозитория без devcontainer.json
файла, GitHub Codespaces использует образ по умолчанию, который имеет множество языков и сред выполнения. Дополнительные сведения см. в разделе Основные сведения о контейнерах разработки. Дополнительные сведения о том, что содержит образ по умолчанию, см. в репозитории devcontainers/images
.
Примечание. Если вы хотите использовать перехватчики Git в кодовом пространстве и применить что-то из каталога шаблонов Git к своему кодовому пространству, перехватчики необходимо настроить при выполнении шага 4 после того, как будет создан контейнер.
Поскольку репозиторий клонируется на виртуальную машину узла до создания контейнера, никакое содержимое каталога шаблонов Git не будет применяться в вашем кодовом пространстве, пока вы не настроите перехватчики в файле конфигурации devcontainer.json
с помощью postCreateCommand
в шаге 4. Дополнительные сведения см. в разделе Шаг 4. Настройка после создания.
Шаг 3. Подключение к кодовому пространству
После создания контейнера и выполнения любой другой инициализации вы будете подключены к своему кодовому пространству. К нему можно подключиться с помощью:
- Ваш веб-браузер
- Visual Studio Code
- Интегрированная среда разработки JetBrains
- GitHub CLI
Шаг 4. Настройка после создания
После подключения к codespace автоматическая установка может продолжить сборку на основе конфигурации, указанной в devcontainer.json
файле. Могут быть выполнены команды postCreateCommand
и postAttachCommand
.
Если вы хотите использовать перехватчики Git в codespace, настройте перехватчики с помощью devcontainer.json
скриптов жизненного цикла, таких как postCreateCommand
. Сведения о скриптах жизненного цикла см. в спецификации контейнеров разработки на веб-сайте "Контейнеры разработки".
Если у вас есть общедоступный репозиторий файлов с точкой для GitHub Codespaces, его можно включить для использования с новыми кодовыми пространствами. Если он включен, файлы с точкой будут клонированы в контейнер и будет вызван скрипт установки. Дополнительные сведения см. в разделе Персонализация GitHub Codespaces для вашей учетной записи.
Наконец, если вы создали codespace из репозитория, весь журнал репозитория копируется с помощью полного клона. Если вы создали codespace на основе шаблона, полный журнал репозитория шаблонов не сохраняется; Вместо этого, если вы не используете пустой шаблон, вы начнете с начальной фиксации для содержимого репозитория шаблонов.
В процессе настройки после создания можно использовать интегрированный терминал и вносить изменения в файлы, но нужно стараться избегать любых конфликтов между работой и выполняемыми командами.
Жизненный цикл Codespaces
Сохранение файлов в кодовом пространстве
Сохраняйте изменения в файлах обычным способом в зависимости от используемого редактора.
Если вы работаете с codespaces в Visual Studio Code, вы можете включить автоматическое сохранение , чтобы обеспечить постоянное сохранение изменений.
Закрытие или остановка кодового пространства
Codespace будет продолжать работать, пока вы используете его, но время ожидания будет истекать после периода бездействия. Изменения файлов в выходных данных редактора и терминала считаются действиями, поэтому время ожидания codespace не истекает, если выходные данные терминала продолжаются. Время ожидания бездействия по умолчанию составляет 30 минут. Вы можете определить личный параметр времени ожидания для создаваемых codespace, но это может быть отказано в политике времени ожидания организации. Дополнительные сведения см. в разделе Настройка периода ожидания для GitHub Codespaces.
Если время ожидания codespace будет прекращено, но его можно перезапустить на вкладке браузера (если вы использовали codespace в браузере), из VS Code или из списка codespace в https://github.com/codespaces.
Чтобы остановить codespace, вы можете
- В браузере в списке codespaces в https://github.com/codespacesщелкните многоточие (...) справа от codespace, которое нужно остановить, и нажмите кнопку Остановить codespace.
- В VS Code: откройте Visual Studio Code Command Palette (например, нажав клавиши CTRL+SHIFT+ВВОД (Windows/Linux) или SHIFT+Command+P (Mac) и
Codespaces: stop
нажмите клавишу ВВОД. - В клиенте JetBrains нажмите кнопку остановки в верхней части окна инструментов GitHub Codespaces. Дополнительные сведения см. на вкладке "URI JetBrains" раздела "Остановка и запуск codespace".
- В окне терминала используйте команду
gh codespace stop
GitHub CLI . Дополнительные сведения см. в разделе Использование GitHub Codespaces с GitHub CLI.
Если выйти из codespace без выполнения команды stop (например, закрыв вкладку браузера) или оставить codespace без взаимодействия, пространство codespace и его выполняемые процессы будут продолжаться в течение периода времени ожидания бездействия.
При закрытии или остановке кодового пространства все незафиксированные изменения сохраняются, пока вы не подключитесь к кодовому пространству еще раз.
Запуск приложения
Переадресация портов обеспечивает доступ к TCP-портам, работающим в кодовом пространстве. Например, если веб-приложение выполняется через порт 4000 в кодовом пространстве, можно настроить автоматическую переадресацию этого порта с тем, чтобы приложение было доступно из браузера.
Переадресация портов определяет, какие порты будут вам доступны с удаленного компьютера. Даже если вы не переадресуете порт, он будет по-прежнему доступен другим процессам, выполняемым в самом кодовом пространстве.
Когда приложение, работающее в GitHub Codespaces, выводит порт в консоль, GitHub Codespaces обнаруживает шаблон URL-адреса localhost и автоматически перенаправит порт. Чтобы открыть порт в браузере, щелкните URL-адрес в окне терминала или ссылку во всплывающем уведомлении, которое появится в правом нижнем углу VS Code. По умолчанию GitHub Codespaces пересылает порт по протоколу HTTP. Дополнительные сведения о переадресации портов см. в разделе Переадресация портов в кодовом пространстве.
Порты могут переадресовываться автоматически, но не являются общедоступными в Интернете. По умолчанию все порты являются частными, но любой порт можно сделать доступным для вашей организации или общедоступным, а затем предоставить к нему доступ по URL-адресу. Дополнительные сведения см. в разделе Переадресация портов в кодовом пространстве.
Запуск приложения при первом подключении к кодовому пространству может сопровождаться быстрым внутренним циклом разработки. При редактировании изменения автоматически сохраняются и становятся доступными через переадресованный порт. Для просмотра изменений вернитесь на вкладку запущенного приложения в браузере и обновите ее.
Фиксация и отправка изменений
Git устанавливается по умолчанию в codespace, поэтому вы можете использовать существующий рабочий процесс Git. Вы можете работать с Git в codespace через терминал или с помощью функций управления версиями VS Code или JetBrains.
Если вы работаете с существующим репозиторием, вы можете создать codespace из любой ветви, фиксации или запроса на вытягивание в репозитории или переключиться на новую или существующую ветвь из активного codespace. Поскольку среда GitHub Codespaces предназначена для временного использования, она может служить изолированной средой для экспериментов, проверки запроса на вытягивание, созданного членом команды, или устранения конфликтов слияния.
Если у вас есть доступ только на чтение к репозиторию, вы можете создать codespace для репозитория при условии, что вы можете создать его вилку. При фиксации из codespace или отправке новой ветви GitHub Codespaces автоматически создает вилку репозитория или связывает пространство кода с существующей вилкой, если у вас уже есть для репозитория вышестоящий.
Если вы работаете в codespace, созданном на основе шаблона, Git устанавливается по умолчанию, но вам потребуется опубликовать codespace в удаленный репозиторий, чтобы сохранить работу и поделиться ею с другими пользователями. Если вы начинаете с пустого шаблона GitHub, сначала необходимо инициализировать рабочую область как репозиторий Git (например, введя git init
), чтобы начать использовать систему управления версиями в codespace.
Дополнительные сведения см. в разделе Использование системы управления версиями в codespace.
Примечание. Фиксации из кодового пространства будут соотнесены с именем и общедоступный адресом электронной почты, настроенным в https://github.com/settings/profile. Токен, ограниченный репозиторием, включается в среду как GITHUB_TOKEN
, а для проверки подлинности используются учетные данные GitHub.
Персонализация codespace с помощью расширений или подключаемых модулей
Вы можете добавлять подключаемые модули и расширения в пространство кода, чтобы персонализировать интерфейс в JetBrains и VS Code соответственно.
Расширения VS Code
Если вы работаете с codespaces в классическом приложении VS Code или веб-клиенте, вы можете добавить любые необходимые расширения из Visual Studio Code Marketplace. Сведения о том, как расширения выполняются в GitHub Codespaces, см. в разделах Поддержка удаленной разработки и GitHub Codespaces документации по VS Code.
Если вы уже используете VS Code, вы можете использовать синхронизацию параметров для автоматической синхронизации расширений, параметров, тем и сочетаний клавиш между локальным экземпляром и любыми создаваемыми пространствами кода.
Подключаемые модули JetBrains
Если вы работаете с codespace в интегрированной среде разработки JetBrains, вы можете добавить подключаемые модули из JetBrains Marketplace.
-
Щелкните Клиент JetBrains, а затем — Параметры.
-
В диалоговом окне Настройки выберите подключаемые модули на узле , чтобы установить подключаемый модуль в полной интегрированной среде разработки JetBrains, которая выполняется удаленно, или Подключаемые модули , чтобы установить подключаемый модуль на локальном клиенте, например, чтобы изменить тему пользовательского интерфейса.
-
Перейдите на вкладку Marketplace .
-
Щелкните Установить рядом с необходимым подключаемым модулем.
Сведения о структуре каталогов codespace
При создании codespace репозиторий клонируется в /workspaces
каталог в codespace. Это постоянный каталог, подключенный к контейнеру. Любые изменения, внесенные в этот каталог, включая редактирование, добавление или удаление файлов, сохраняются при остановке и запуске codespace, а также при перестроении контейнера в codespace.
За пределами /workspaces
каталога codespace содержит структуру каталогов Linux, которая зависит от образа, используемого для сборки codespace. Вы можете добавлять файлы или вносить изменения в файлы за пределами /workspaces
каталога. Например, можно установить новые программы или настроить конфигурацию оболочки в файле, ~/.bashrc
например . Как пользователь, не являющийся корневым, вы можете не иметь автоматический доступ на запись в определенные каталоги, но большинство образов разрешают корневой доступ к этим каталогам с помощью sudo
команды .
Вне /workspaces
, за исключением /tmp
каталога, каталоги в codespace привязаны к жизненному циклу контейнера. Это означает, что все внесенные изменения сохраняются при остановке и запуске codespace, но не сохраняются при перестроении контейнера. Дополнительные сведения о каталоге см. в /tmp
разделе Сохранение переменных среды и временных файлов.
Очистка внешних каталогов /workspaces
помогает убедиться, что перестроенный контейнер находится в том же состоянии, что и в только что созданном пространстве кода. При перестроении контейнера для применения изменений конфигурации к пространству кода, с которым вы работаете, вы можете быть уверены, что любые внесенные изменения конфигурации будут работать одинаково для пользователей, создающих новые codespace с той же конфигурацией. Дополнительные сведения см. в разделе Основные сведения о контейнерах разработки.
Если вы хотите внести в codespace изменения, которые будут более надежными по сравнению с перестроениями и в разных codespace, у вас есть несколько вариантов.
- Чтобы установить программы и средства во всех пространствах кода, созданных из репозитория, в конфигурации контейнера разработки можно использовать свойства команд жизненного цикла, такие как
postCreateCommand
выполнение пользовательских команд установки, или выбрать один из предварительно написанных команд установки с именем "компоненты". Дополнительные сведения см. в спецификации контейнеров разработки на веб-сайте "Контейнеры разработки" и в разделе Добавление компонентов в файл devcontainer.json. - Чтобы установить средства или настроить установку в каждом создаваемом пространстве codespace, например при настройке
bash
профиля, можно связать GitHub Codespaces с репозиторием файлов точек. Репозиторий dotfiles также клонируется в постоянный/workspaces
каталог. Дополнительные сведения см. в разделе Персонализация GitHub Codespaces для вашей учетной записи. - Если вы хотите сохранить определенные файлы при перестроении, с помощью
devcontainer.json
файла можно создать символьную связь между файлами и постоянным каталогом в/workspaces
. Дополнительные сведения см. в разделе Перестроение контейнера в codespace.