GitHub Actions — это платформа непрерывной интеграции и непрерывной поставки (CI/CD), которая позволяет автоматизировать конвейер сборки, тестирования и развертывания. Вы можете создавать рабочие процессы (workflows), которые собирают и тестируют каждый pull request в вашем репозитории или развертывают объединенные pull requests в продакшене.
В этой лабораторной работе вы создадите свой первый простой рабочий процесс. Вы узнаете о стандартной структуре каталогов, требуемой GitHub Actions, о том, как определить имя рабочего процесса, как указать события, которые его запускают, и как определить задания (jobs) для выполнения команд.
Эта лабораторная работа основана на репозитории, который вы создали в предыдущей лабораторной работе. Вы клонируете репозиторий github-actions-demo в вашу среду LabEx и добавите в него свой первый файл рабочего процесса.
Создайте новый YAML-файл с именем hello-world.yml в .github/workflows
На этом шаге вы клонируете репозиторий, созданный на предыдущем лабораторном занятии, и создадите свой первый файл рабочего процесса.
На странице вашего репозитория GitHub для github-actions-demo нажмите зеленую кнопку Code.
Убедитесь, что выбрана вкладка HTTPS, и скопируйте URL. Он должен выглядеть примерно так: https://github.com/your-username/github-actions-demo.git.
Откройте терминал в среде LabEx. Путь по умолчанию — ~/project.
Используйте команду git clone для загрузки репозитория. Замените your-username на ваше фактическое имя пользователя GitHub.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
Пример вывода:
Cloning into 'github-actions-demo'...
remote: Enumerating objects: X, done.
remote: Counting objects: 100% (X/X), done.
remote: Total X (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (X/X), done.
Перейдите в клонированный репозиторий:
cd ~/project/github-actions-demo
Директория .github/workflows должна уже существовать с предыдущего лабораторного занятия. Проверьте ее наличие:
ls -R .github
Создайте новый файл с именем hello-world.yml внутри директории .github/workflows. Этот файл будет содержать конфигурацию нашего рабочего процесса:
touch .github/workflows/hello-world.yml
Вы можете убедиться, что файл создан успешно:
ls -R .github
Вы должны увидеть директорию workflows, содержащую как main.yml (из предыдущего лабораторного занятия), так и hello-world.yml.
Добавьте ключ 'name' со значением 'Hello World Workflow' в YAML-файл
На этом шаге вы начнете редактировать YAML-файл для определения вашего рабочего процесса. Первым элементом, который мы обычно добавляем, является name (имя) рабочего процесса. Это имя будет отображаться на вкладке Actions (Действия) репозитория GitHub, что облегчит его идентификацию.
Откройте файл hello-world.yml с помощью редактора WebIDE. Вы можете найти этот файл в проводнике файлов слева, в директории project/github-actions-demo/.github/workflows/.
Добавьте следующее содержимое в файл:
name: Hello World Workflow
Эта пара ключ-значение присваивает удобочитаемое имя вашему рабочему процессу.
После добавления содержимого сохраните файл (Ctrl+S или Cmd+S).
Вы можете проверить содержимое файла в терминале:
cat .github/workflows/hello-world.yml
Добавьте ключ 'on' с событием 'push' для запуска при отправке изменений
На этом шаге вы определите, когда должен запускаться рабочий процесс (workflow). Это делается с помощью ключевого слова on. Мы хотим, чтобы этот рабочий процесс запускался всякий раз, когда в репозиторий отправляется (push) код.
Снова откройте .github/workflows/hello-world.yml и добавьте следующие строки под ключом name:
on: [push]
Теперь ваш файл должен выглядеть следующим образом:
name: Hello World Workflow
on: [push]
Конфигурация on: [push] указывает GitHub Actions запускать этот рабочий процесс каждый раз, когда в любую ветку репозитория выполняется git push.
Примечание: GitHub Actions поддерживает множество других событий-триггеров. Например:
pull_request: Запускается при открытии, синхронизации или закрытии pull request
workflow_dispatch: Позволяет вручную запускать рабочий процесс из вкладки GitHub Actions
schedule: Запускается по расписанию с использованием синтаксиса cron
release: Запускается при публикации релиза
И многие другие события, такие как issues, pull_request_review и т. д.
В этой лабораторной работе мы используем on: [push], поскольку это самый простой и распространенный триггер. Вы можете изучить другие типы триггеров по мере продвижения в изучении GitHub Actions.
Сохраните файл после внесения изменений.
Добавьте раздел 'jobs' с заданием с именем 'build'
На этом шаге вы определите фактическую работу, которую будет выполнять рабочий процесс (workflow). Запуск рабочего процесса состоит из одного или нескольких jobs. По умолчанию задания выполняются параллельно.
Мы добавим секцию jobs, содержащую одно задание с именем build. Это задание будет выполняться в среде Ubuntu и исполнять простую команду.
Добавьте следующее содержимое в ваш файл .github/workflows/hello-world.yml:
runs-on: ubuntu-latest: Указывает тип машины (раннера), на которой будет выполняться задание.
steps:: Список задач, которые необходимо выполнить в задании.
run: echo "Hello, World!": Команда оболочки (shell command) для выполнения.
Ваш полный файл теперь должен выглядеть следующим образом:
name: Hello World Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Say Hello
run: echo "Hello, World!"
Сохраните файл.
Зафиксируйте и отправьте файл рабочего процесса, используя команды git
На этом шаге вы закоммитите новый файл рабочего процесса (workflow file) и отправите его (push) в GitHub. Это запустит только что созданный вами рабочий процесс.
Убедитесь, что вы находитесь в директории репозитория:
cd ~/project/github-actions-demo
Проверьте статус вашего репозитория, чтобы увидеть неотслеживаемый файл:
git status
Добавьте новый файл в область проиндексированных изменений (staging area):
git add .github/workflows/hello-world.yml
Закоммитьте изменения с описательным сообщением:
git commit -m "Add hello world workflow"
Пример вывода:
[main ... ] Add hello world workflow
1 file changed, X insertions(+), X deletions(-)
create mode 100644 .github/workflows/hello-world.yml
Отправьте изменения в удаленный репозиторий на GitHub:
git push
Примечание об аутентификации:
Когда вы выполните git push, WebIDE автоматически предложит вам пройти аутентификацию. Следуйте этим подробным шагам:
Появится всплывающее окно с сообщением: "The extension 'GitHub' wants to sign in using GitHub." Нажмите Allow.
Появится новое уведомление. Нажмите "Copy&Continue to GitHub", затем нажмите "Open" в следующем запросе.
Войдите в свою учетную запись GitHub в открывшемся окне браузера и введите скопированный код авторизации. После подтверждения авторизации страница закроется автоматически.
Подождите несколько секунд, и вы увидите, что терминал успешно завершил операцию пуша.
Примечание о конфиденциальности: WebIDE запросит полный доступ к вашей учетной записи GitHub для целей аутентификации. Вам не нужно беспокоиться о проблемах конфиденциальности — виртуальная машина LabEx будет немедленно уничтожена после завершения текущей лабораторной работы, и ваши учетные данные и информация об авторизации не будут сохранены.
Этот процесс аутентификации не требует ручной настройки имени пользователя или Personal Access Token.
После выполнения шагов аутентификации вы увидите вывод, похожий на следующий:
Пример вывода:
Enumerating objects: X, done.
Counting objects: 100% (X/X), done.
Delta compression using up to 4 threads
Compressing objects: 100% (X/X), done.
Writing objects: 100% (X/X), XXX bytes | XXX.00 KiB/s, done.
Total X (delta X), reused X (delta X), pack-reused 0
To https://github.com/your-username/github-actions-demo.git
XXXXXXX..XXXXXXX main -> main
Посетите свой репозиторий на GitHub в веб-браузере и перейдите на вкладку Actions. Вы должны увидеть, что рабочий процесс "Hello World Workflow" запущен или завершен.
Примечание: При отправке кода может быть запущено несколько действий (Actions), если в вашем репозитории находится несколько файлов рабочих процессов. Пожалуйста, определите правильный запуск рабочего процесса, проверив имя рабочего процесса в левой боковой панели или используя список запусков рабочих процессов справа.
Нажмите на запуск рабочего процесса, чтобы просмотреть подробные журналы выполнения. Вы увидите:
Имя рабочего процесса: "Hello World Workflow" вверху
Имя задания (job): "build" в левой боковой панели
Выполнение шага (step execution): Нажмите на задание "build", чтобы развернуть его, затем нажмите на шаг "Say Hello"
Вывод: Вы должны увидеть вывод Hello, World! в журналах
Это дает вам полное представление о том, как выполнился ваш рабочий процесс, включая то, какие шаги выполнились успешно и какой вывод они произвели. Это очень полезно для отладки и понимания того, что делает ваш рабочий процесс.
Резюме
В этой лабораторной работе вы успешно создали свой первый рабочий процесс (workflow) GitHub Actions. Вы узнали, как:
Создать необходимую структуру каталогов .github/workflows.
Определить рабочий процесс, используя синтаксис YAML.
Установить name (имя) рабочего процесса и события-триггеры с помощью on.
Определить jobs (задания) и steps (шаги) для выполнения команд.
Зафиксировать (commit) и отправить (push) рабочий процесс в репозиторий.
Это основные строительные блоки для создания сложных конвейеров CI/CD, которые могут автоматически собирать, тестировать и развертывать ваше программное обеспечение.