Workspace локального раннера

Workspace локального раннера
New

Настоящий пример демонстрирует работу CI/CD, где раннер имеет доступ к выделенному участку файловой системы, используя переменную окружения ${{ github.workspace }}. Для этого в yaml-файле задается:

  1. метка локального раннера (которая в свою очередь присваивается раннеру при регистрации);
  2. переменная окружения ${{ github.workspace }};
  3. точки монтирования каталогов в вашей файловой системе и в контейнере раннера.

Согласно .gitverse/workflows/self-hosted-runner-workspace-example.yaml раннер создает file.txt в выделенной директории файловой системы.

Подготовительные действия

Установка Docker

См. раздел. Установка Docker (Ubuntu).

Создание или импорт репозитория

💡

Для данного примера подготовлен репозиторий cicd_tutorials/self_hosted_runner_examples ветка self-hosted-runner-workspace-example (opens in a new tab).

Публичный репозиторий доступен для импортирования и уже содержит:

  1. файл рабочего процесса .gitverse/workflows/self-hosted-runner-workspace-example.yaml;
  2. раннер act_runner_linux_amd64 (можно скачать отдельно по ссылке (opens in a new tab)).

yaml-файл рабочего процесса

В настоящем примере использован следующий yaml-файл рабочего процесса с использованием переменной окружения ${{ github.workspace }}:

name: Self-Hosted Runner Workspace Example
 
on:
  push:
    branches:
      - self-hosted-runner-workspace-example # целевая ветка
 
jobs:
  update:
    runs-on: self-hosted # метка раннера (label), задается при регистрации
    working-directory: ${{ github.workspace }}  # переменная окружения - рабочая директория для job (задачи), выполняемого на self-hosted runner
    container:
      image: ubuntu:latest # docker образ, который будет загружен раннером и в котором будут выполняться задачи настоящего yaml-файла
      volumes:
         - /home/author/Workspace/self_hosted_runner_examples/:/container_folder  # точки монтирования каталогов в проекте (project_folder) и в контейнере раннера (container_folder)
    steps:
      - name: Create project_folder directory
        run: mkdir project_folder # создание каталога в проекте
      - name: Run a script
        run: |
          echo "Hello from my self-hosted runner!" > /container_folder/file.txt
          cat /container_folder/file.txt # Verify content

Загрузка раннера

Можете пропустить данный пункт, если вы импортировали репозиторий, а act_runner_linux_amd64 (opens in a new tab) подходит для вашей ОС.

Скачайте раннер, соответствующий вашей ОС, разместите его в корне проекта и передайте права на исполнение:

$ sudo chmod +x act_runner_linux_amd64
$ tree -a
   .gitignore
   act_runner_linux_amd64
   README.md

└───.gitverse
    └───workflows
            self-hosted-runner-workspace-example.yaml

В данном примере использован раннер act_runner_linux_amd64 (opens in a new tab) для работы на WSL Ubuntu 22.04.

Включение CI/CD в настройках репозитория и получение токена

  1. Для включения CI/CD в профиле вашего репозитория нажмите:

    1. Настройки;
    2. Репозиторий;
    3. CI/CD;
    4. Обновить.

    Пример:

    Переключатель CI/CD
  2. Для получения токена для последующей регистрации локального раннера перейдите в профиль вашего репозитория и далее выберите:

    1. Настройки;
    2. Раннеры;
    3. Локальные;
    4. Добавить раннер;
    5. пиктограмму копирования токена.

    Пример:

    Получение токена для регистрации раннера

Регистрации раннера

Пример команды неинтерактивной регистрации раннера с полученным ранее токеном:

sudo ./act_runner_linux_amd64 register \
--no-interactive \
--instance https://gitverse.ru/sc \
--token DtYdkGFpO408x0qnUqgTuMwB7IVtoZ5WANL95GQr \
--name workspace-example \
--labels self-hosted

Подробнее см. Регистрация раннера.

Запуск раннера

Отправьте изменения в ветку self-hosted-runner-workspace-example и запустить раннер:

sudo ./act_runner_linux_amd64 daemon

Подробнее см. Запуск раннера.

Проверка результата выполнения раннера

  1. Чтобы посмотреть отчет выполнения задачи раннером в профиле репозитория, выберите:

    1. CI/CD;
    2. отчет раннера по вашему коммиту.

    Пример:

    Проверка результата выполнения раннера, шаг 2
  2. Ознакомьтесь с отчетом.

    Пример:

    Проверка результата выполнения раннера, шаг 2

    Проверьте, что раннер создал file.txt в указанном каталоге:

    $ git checkout self-hosted-runner-workspace-example
    $ tree -a
       .gitignore
       act_runner_linux_amd64
       .runner
       README.md
    
    ├───.gitverse
       └───workflows
               self-hosted-runner-workspace-example.yaml
    
    └───project_folder
            file.txt