Использование секретов

Использование секретов

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

Установите docker, скачайте раннер и настройте secretsDemo.yaml файл конфигурации CI/CD.

💡

Для проверки примеров CI/CD с конфигурацией secretsDemo.yaml доступен репозиторий CICD_examples, ветка secretsDemo (opens in a new tab), в нем:

  • подготовлен файл конфигурации .gitverse/workflows/secretsDemo.yaml;
  • загружен раннер act_runner.

Конфигурация secretsDemo.yaml

Файл secretsDemo.yaml следует расположить в директории ./gitverse/workflows вашего проекта, он определяет конфигурацию работы CI/CD для GitVerse:

name: Демо использования секрета в CI/CD
on: [push]
jobs:
  build-test:
    name: Build & Test
    runs-on: ubuntu-latest
    steps:
      - if: ${{ secrets.SECRET == 'secret-word' }}
        name: Check if secret is correct
        run: echo "true"
⚠️

Раннер так же обработает .yaml файлы в директории .github/workflows.

Структура:

  • name: Название конфигурации CI/CD - "Демо использования секрета в CI/CD";
  • on: Определяет события, на которые реагирует CI/CD. В данном случае это событие push;
  • jobs: Определяет список задач, которые нужно выполнить:
    • build-test:
      • name: Название задачи - "Build & Test";
      • runs-on: Определяет операционную систему, на которой будет выполняться задача - "ubuntu-latest";
      • steps: Список шагов, которые нужно выполнить в рамках задачи:
        • if: Условие для выполнения шага. В данном случае, проверяется, равно ли значение секрета SECRET строке secret-word;
        • name: Название шага - "Check if secret is correct";
        • run: Команда echo "true", которая будет выполнена только если условие secrets.SECRET == 'secret-word' истинно.

Раннер с проверкой секрета

  1. Включите CI/CD в профиле вашего репозитория (Настройки>Репозиторий>CI/CD>Обновить):

    Пример:

    включение CI/CD в настройках репозитория
  2. Получите регистрационный токен раннера (Настройки>Раннеры>Добавить раннер>копировать токен):

    Пример:

    получение регистрационного токена
  3. Создайте secretsDemo.yaml в директории ./gitverse/workflows вашего проекта.

  4. Сделайте раннер исполняемым и зарегистрируйте его, используя полученный токен.

    Пример:

    $sudo chmod +x act_runner
    $sudo ./act_runner register

    У вас запросят регистрационный токен, введите его:

    INFO Registering runner, arch=amd64, os=linux, version=40a6fce. 
    WARN Runner in user-mode.                         
    INFO Enter the runner token: 
    <token>

    Далее введите имя раннера:

    INFO Enter the runner name (if set empty, use hostname: <host name>): 
    secretsDemo-runner

    (Опционально) введите лейбл раннера:

    INFO Enter the runner labels, leave blank to use the default labels (comma-separated, for example, ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster,linux_arm:host):
    

    Сообщение об успешной регистрации:

    INFO Registering runner, name=secretsDemo-runner, instance=https://gitverse.ru/sc, labels=[ubuntu-latest:docker://node:16-bullseye ubuntu-22.04:docker://node:16-bullseye ubuntu-20.04:docker://node:16-bullseye ubuntu-18.04:docker://node:16-buster]. 
    DEBU Successfully pinged the GitVerse instance server 
    INFO Runner registered successfully.        

    Регистрационный токен раннера может быть активирован только один раз.

    💡

    После регистрации в текущей директории появится файл .runner. Он хранит данные регистрации – не редактируйте его вручную! Если файл потеряется или повредится, просто удалите его и проведите регистрацию снова. При необходимости можно указать иное местоположение файла через конфигурацию.

  5. Зарегистрированный раннер отобразится со статусом "Недоступен" (Профиль репозитория>Настройки>Раннеры).

    Пример:

    зарегистрированный бинарный раннер
  6. Добавьте секрет в профиле репозитория (Настройки>Секреты>Добавить секрет).

    Пример:

    Кнопка добавления секрета

    Заполните название секрета и его значение:

    Заполнение формы секрета
  7. Запустите раннер.

    Пример:

    sudo ./act_runner daemon
  8. Внесите изменения в репозиторий, чтобы раннер среагировал на событие push.

    Пример:

    Провокация раннера на push
  9. Выберите данную задачу в профиле репозитория на вкладке Настройки>CI/CD.

    Пример:

    Задача secretsDemo
  10. Отобразятся детали.

    Пример:

    Выполнилось условие secretsDemo.yaml в части содержания секрета, который мы задали вначале:

    if: ${{ secrets.SECRET == 'secret-word' }}
          name: Check if secret is correct
          run: echo "true"
    Детали задачи по проверке секрета