Workspace локального раннера New
Настоящий пример демонстрирует работу CI/CD, где раннер имеет доступ к выделенному участку файловой системы, используя переменную окружения ${{ github.workspace }}
. Для этого в yaml-файле задается:
- метка локального раннера (которая в свою очередь присваивается раннеру при регистрации);
- переменная окружения
${{ github.workspace }}
; - точки монтирования каталогов в вашей файловой системе и в контейнере раннера.
Согласно .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).
Публичный репозиторий доступен для импортирования и уже содержит:
- файл рабочего процесса .gitverse/workflows/self-hosted-runner-workspace-example.yaml;
- раннер 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 в настройках репозитория и получение токена
Для включения CI/CD в профиле вашего репозитория нажмите:
- Настройки;
- Репозиторий;
- CI/CD;
- Обновить.
Пример:
Для получения токена для последующей регистрации локального раннера перейдите в профиль вашего репозитория и далее выберите:
- Настройки;
- Раннеры;
- Локальные;
- Добавить раннер;
- пиктограмму копирования токена.
Пример:
Регистрации раннера
Пример команды неинтерактивной регистрации раннера с полученным ранее токеном:
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
Подробнее см. Запуск раннера.
Проверка результата выполнения раннера
Чтобы посмотреть отчет выполнения задачи раннером в профиле репозитория, выберите:
- CI/CD;
- отчет раннера по вашему коммиту.
Пример:
Ознакомьтесь с отчетом.
Пример:
Проверьте, что раннер создал 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