Выполнение простых команд в GitHub Actions

GitBeginner
Практиковаться сейчас

Введение

GitHub Actions — это платформа непрерывной интеграции и непрерывной поставки (CI/CD), которая позволяет автоматизировать конвейер сборки, тестирования и развертывания. Вы можете создавать рабочие процессы (workflows), которые собирают и тестируют каждый pull request в вашем репозитории, или развертывают объединенные pull requests в продакшене.

Рабочий процесс (workflow) — это настраиваемый автоматизированный процесс, который выполняет одну или несколько задач (jobs). Рабочие процессы определяются YAML-файлом, зафиксированным в вашем репозитории, и запускаются при срабатывании события в вашем репозитории, либо могут быть запущены вручную или по заданному расписанию.

В этой лабораторной работе вы изучите основные строительные блоки рабочего процесса GitHub Actions:

  1. Определение задачи (job).
  2. Указание среды выполнения (runner environment) (например, Ubuntu).
  3. Добавление шагов (steps) для выполнения команд.

Вы создадите простой рабочий процесс, который выводит "Hello, World!" в консоль. Эта лабораторная работа основана на репозитории, который вы создали в предыдущих лабораторных работах. Вы клонируете репозиторий github-actions-demo и обновите существующий файл рабочего процесса.

Добавьте ключ runs-on со значением ubuntu-latest в задачу build

На этом шаге вы клонируете репозиторий и обновите существующий файл рабочего процесса (workflow file), чтобы определить задание (job) и указать операционную систему, на которой оно должно выполняться.

  1. На странице вашего репозитория GitHub для github-actions-demo нажмите зеленую кнопку Code.
  2. Убедитесь, что выбрана вкладка HTTPS, и скопируйте URL. Он должен выглядеть примерно так: https://github.com/your-username/github-actions-demo.git.
  3. Откройте терминал в среде LabEx. Путь по умолчанию — ~/project.
  4. Используйте команду git clone для загрузки репозитория. Замените your-username на ваше фактическое имя пользователя GitHub.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
  1. Перейдите в клонированный репозиторий:
cd ~/project/github-actions-demo
  1. Создайте новый файл рабочего процесса с именем simple-commands.yml в директории .github/workflows:
touch .github/workflows/simple-commands.yml
  1. Откройте файл .github/workflows/simple-commands.yml в WebIDE. Вы можете найти его в проводнике файлов слева.

  2. Добавьте следующее содержимое в файл, чтобы определить имя рабочего процесса, триггер, задание и среду выполнения (runner):

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

Ключевое слово runs-on позволяет указать тип машины, на которой будет выполняться задание. GitHub предоставляет размещенные среды выполнения (hosted runners) для Linux, Windows и macOS. ubuntu-latest — это часто используемая среда выполнения, которая предоставляет стандартную среду Ubuntu.

Добавьте раздел steps под задачей build

Теперь, когда вы определили среду выполнения задания (job environment), вам необходимо определить, что именно будет выполнять это задание. Это делается с помощью ключевого слова steps.

Задание (job) содержит последовательность задач, называемых steps. Шаги могут выполнять команды, выполнять задачи настройки (setup tasks) или запускать действие (action) из вашего репозитория.

Инструкции

  1. Откройте файл .github/workflows/simple-commands.yml в WebIDE.
  2. Добавьте ключевое слово steps под заданием build.

Обновите ваш файл, чтобы он выглядел следующим образом:

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

Убедитесь, что steps: находится на том же уровне отступа, что и runs-on:.

Добавьте шаг с именем 'Echo Hello' и командой выполнения echo "Hello, World!"

На этом шаге вы добавите несколько задач в секцию steps для выполнения различных shell-команд. Это демонстрирует, что вы можете запускать стандартные команды Linux на раннере (runner).

Инструкции

  1. Откройте файл .github/workflows/simple-commands.yml в WebIDE.
  2. Добавьте следующие шаги под ключом steps::
steps:
  - name: Echo Hello
    run: echo "Hello, World!"

  - name: Show Date
    run: date

  - name: List Files
    run: ls -la

Ваш полный файл должен выглядеть следующим образом:

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Echo Hello
        run: echo "Hello, World!"

      - name: Show Date
        run: date

      - name: List Files
        run: ls -la

Объяснение

  • echo "Hello, World!": Выводит текст в консоль.
  • date: Показывает текущую дату и время на раннере.
  • ls -la: Выводит список файлов в текущей директории. Вы заметите, что директория в основном пуста, потому что мы еще не выполнили checkout кода (мы сделаем это в следующей лабораторной работе).

Зафиксируйте и отправьте обновленный файл рабочего процесса (workflow file)

Рабочие процессы GitHub Actions являются частью кода вашего репозитория. Чтобы активировать рабочий процесс, вам необходимо зафиксировать (commit) изменения и отправить (push) их на GitHub.

  1. Убедитесь, что вы находитесь в каталоге репозитория:
cd ~/project/github-actions-demo
  1. Добавьте новый файл рабочего процесса в область проиндексированных изменений (stage):
git add .github/workflows/simple-commands.yml
  1. Зафиксируйте изменения с описательным сообщением:
git commit -m "Add simple commands workflow"

Пример вывода:

[main ... ] Add simple commands workflow
 1 file changed, 14 insertions(+)
 create mode 100644 .github/workflows/simple-commands.yml
  1. Отправьте изменения в удаленный репозиторий на GitHub:
git push

Примечание об аутентификации:
Когда вы выполняете git push, WebIDE автоматически предложит вам пройти аутентификацию. Следуйте этим подробным шагам:

  1. Появится всплывающее окно с сообщением: "The extension 'GitHub' wants to sign in using GitHub." Нажмите Allow.
  2. Появится новое уведомление. Нажмите "Copy&Continue to GitHub", а затем "Open" в следующем запросе.
  3. Войдите в свою учетную запись GitHub в открывшемся окне браузера и введите скопированный код авторизации. После подтверждения авторизации страница закроется автоматически.
  4. Подождите несколько секунд, и вы увидите, что терминал успешно завершил операцию пуша.

Примечание о конфиденциальности: WebIDE запросит полный доступ к вашей учетной записи GitHub для целей аутентификации. Вам не нужно беспокоиться о проблемах конфиденциальности — виртуальная машина LabEx будет немедленно уничтожена после завершения текущей лабораторной работы, и ваши учетные данные и информация об авторизации не будут сохранены.

Этот процесс аутентификации не требует ручной настройки имени пользователя или Персонального токена доступа (Personal Access Token).

Пример вывода:

Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 447 bytes | 447.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
To https://github.com/your-username/github-actions-demo.git
   abcdef1..1234567  main -> main

Просмотр логов выполнения рабочего процесса (workflow run logs) на вкладке GitHub Actions

После отправки вашего кода рабочий процесс (workflow) будет автоматически запущен на GitHub. Вы можете просмотреть журналы выполнения рабочего процесса, чтобы увидеть, что произошло.

  1. Посетите ваш репозиторий на GitHub в веб-браузере: https://github.com/your-username/github-actions-demo
  2. Нажмите на вкладку Actions в верхней части страницы репозитория.
  3. Вы должны увидеть список выполненных рабочих процессов, вероятно, с названием "Simple Commands" или "Add simple commands workflow".

Примечание: При отправке кода может быть запущено несколько действий (Actions), если в вашем репозитории есть несколько файлов рабочих процессов. Пожалуйста, определите правильное выполнение рабочего процесса, проверив имя рабочего процесса в левой боковой панели или используя список выполнений рабочего процесса справа.

  1. Нажмите на заголовок выполнения рабочего процесса, затем нажмите на задание (job) build.
  2. Разверните шаги Echo Hello, Show Date и List Files, чтобы увидеть их вывод.

Вы заметите, что List Files показывает пустую директорию (за исключением скрытых файлов, таких как . и ..), что демонстрирует, что среда выполнения (runner) запускается с чистого листа.

GitHub Actions logs
GitHub Actions tab

Резюме

В этой лабораторной работе вы успешно создали рабочий процесс (workflow) GitHub Actions, который выполняет несколько команд оболочки (shell commands). Вы узнали, как:

  1. Определить задачу (Job): Вы создали задачу build.
  2. Выбрать среду выполнения (Runner): Вы использовали runs-on: ubuntu-latest.
  3. Выполнять несколько команд: Вы добавили шаги для выполнения echo, date и ls.
  4. Наблюдать за средой выполнения (Runner Environment): Вы увидели, что среда выполнения запускается с пустой директорией.

В следующей лабораторной работе вы узнаете, как использовать действие Checkout Action для доступа к файлам вашего репозитория внутри среды выполнения.