GitHub Actions с использованием действия Checkout

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

Введение

В этой лабораторной работе вы узнаете, как использовать действие actions/checkout, которое является одним из самых важных шагов в любом рабочем процессе (workflow) GitHub Actions. По умолчанию среда выполнения (runner) GitHub Actions запускается в пустом каталоге. Чтобы собрать, протестировать или развернуть ваш код, вы должны сначала извлечь (check out) репозиторий в рабочее пространство среды выполнения.

Вы создадите файл рабочего процесса, настроите его для извлечения вашего кода, а затем проверите доступность файлов, перечислив их в логах. Этот процесс имитирует стандартную настройку конвейера непрерывной интеграции (CI).

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

Добавление шага для использования actions/checkout@v4 в рабочем процессе

На этом шаге вы клонируете репозиторий и создадите рабочий процесс (workflow), который использует действие actions/checkout. Это действие извлекает (checks out) ваш репозиторий в $GITHUB_WORKSPACE, чтобы ваш рабочий процесс мог получить к нему доступ.

  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. Создайте новый файл рабочего процесса с именем ci.yml внутри директории .github/workflows:
touch .github/workflows/ci.yml
  1. Откройте .github/workflows/ci.yml в редакторе WebIDE и добавьте следующее содержимое. Эта конфигурация определяет рабочий процесс с именем "CI", который запускается при каждом событии push. Он включает одну задачу (job) с именем build, выполняющуюся на ubuntu-latest, с шагом для извлечения кода (checkout).
name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

Строка uses: actions/checkout@v4 указывает GitHub Actions загрузить и выполнить версию v4 официального действия checkout.

Добавление шага для вывода списка файлов с помощью команды run ls -la

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

Откройте .github/workflows/ci.yml и добавьте следующий шаг в список steps. Убедитесь, что отступы выровнены правильно относительно предыдущего шага.

- name: List files
  run: ls -la

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

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: List files
        run: ls -la

Ключевое слово run позволяет выполнять программы командной строки. Здесь ls -la выведет список всех файлов, включая скрытые, в корне репозитория.

Создание демонстрационного файла с именем index.js в репозитории

На этом шаге вы создадите пример файла в вашем репозитории. Этот файл послужит доказательством того, что действие actions/checkout работает корректно, когда мы увидим его в логах рабочего процесса (workflow logs).

  1. Убедитесь, что вы находитесь в директории репозитория:
cd ~/project/github-actions-demo
  1. Создайте простой JavaScript-файл с именем index.js в корне вашего репозитория:
echo "console.log('Hello, GitHub Actions!');" > index.js
  1. Вы можете проверить создание файла, выполнив команду:
ls -l index.js

Этот файл представляет исходный код вашего приложения, который конвейер CI (CI pipeline) обычно собирает или тестирует.

Зафиксировать (commit) и отправить (push) изменения демонстрационного файла и рабочего процесса

На этом шаге вы закоммитите свои изменения и отправите их на GitHub. Отправка этого коммита запустит рабочий процесс (workflow), который мы определили, благодаря конфигурации on: [push].

  1. Убедитесь, что вы находитесь в каталоге репозитория:
cd ~/project/github-actions-demo
  1. Проверьте статус вашего репозитория, чтобы увидеть неотслеживаемые файлы:
git status

Вы должны увидеть .github/workflows/ci.yml и index.js как неотслеживаемые.

  1. Добавьте все изменения в индекс (stage):
git add .
  1. Закоммитьте изменения с описательным сообщением:
git commit -m "Add CI workflow and index.js"

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

[main ... ] Add CI workflow and index.js
 2 files changed, 14 insertions(+), 0 deletions(-)
 create mode 100644 .github/workflows/ci.yml
 create mode 100644 index.js
  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. Подождите несколько секунд, и вы увидите, что терминал успешно завершил операцию отправки (push).

Примечание о конфиденциальности: 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), 512 bytes | 512.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
   1234567..abcdef1  main -> main

Эта отправка запускает рабочий процесс на GitHub.

Проверьте выполнение рабочего процесса, чтобы убедиться в перечислении файлов в логах

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

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

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

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

Вы должны увидеть вывод команды ls -la, который включает index.js и другие файлы из вашего репозитория:

Run ls -la
  ls -la
  shell: /usr/bin/bash -e {0}
total XX
drwxr-xr-x  X runner ... .
drwxr-xr-x  X runner ... ..
drwxr-xr-x  X runner ... .git
drwxr-xr-x  X runner ... .github
-rw-r--r--  X runner ... index.js
...

Это подтверждает, что шаг actions/checkout успешно извлек (checked out) ваш репозиторий. Без шага checkout команда ls -la показала бы только пустую директорию. Это демонстрирует, почему действие checkout является необходимым — оно делает файлы вашего репозитория доступными для исполнителя рабочего процесса (workflow runner).

GitHub Actions logs

Резюме

В этой лабораторной работе вы успешно создали рабочий процесс GitHub Actions, использующий действие actions/checkout. Вы узнали, как:

  1. Настроить структуру каталогов .github/workflows.
  2. Определить рабочий процесс, который запускается по событиям push.
  3. Использовать actions/checkout@v4 для клонирования вашего репозитория в исполнитель (runner).
  4. Добавить шаг для проверки наличия файлов с помощью ls -la.

Это основополагающий шаг для почти всех конвейеров CI/CD, позволяющий последующим шагам выполнять сборку, тестирование и развертывание кода вашего приложения.