Environment Variables and Secrets

CI/CD для машинного обучения

Ravi Bhadauria

Machine Learning Engineer

Контексты

  • Доступ к информации о предопределённых переменных и данных
    • запуски воркфлоу
    • переменные
    • среды раннеров
    • задания и шаги
  • Доступ к контекстам через синтаксис выражений ${{ context.XXX }}
  • Контексты, используемые в курсе
    • github: информация о запуске воркфлоу
    • env: переменные, заданные в воркфлоу
    • secrets: имена и значения, доступные воркфлоу
    • job: информация о текущем задании
    • runner: информация о машине
1 https://docs.github.com/en/actions/learn-github-actions/contexts
CI/CD для машинного обучения

Переменные

  • Хранение несекретной информации в открытом виде
    • флаги компилятора, имена пользователей, пути к файлам
  • Объявляются как значение ключа env
  • Область видимости определяется уровнем объявления
  • Доступны через контекст env как ${{ env.ENV_VAR }}
name: Greeting on variable day
# Global env
env:
  Greeting: Hello

jobs: greeting_job: runs-on: ubuntu-latest # Local env: scoped to greeting_job env: First_Name: Ravi
steps: - run: | echo "${{ env.Greeting }} \ ${{ env.First_Name }}."
CI/CD для машинного обучения

Секреты

  • Хранение конфиденциальной информации в зашифрованном виде
    • пароли, ключи API
  • Доступ к значениям через контекст secrets
    • ${{ secrets.SuperSecret }}
  • Можно передавать как входной параметр или переменную окружения
steps:
  - name: Hello world action
    env: # Set the secret as an env var
      super_secret: ${{ secrets.SuperSecret }}

with: # Or as an input super_secret: ${{ secrets.SuperSecret }}
  • Вывод секрета

    steps:
    - name: Print secret
      run: |
        echo "my secret is \
        ${{ secrets.SuperSecret }}"
    
  • Результат

Изображение журнала воркфлоу, показывающее, что вместо реального значения секрета выводится ***

CI/CD для машинного обучения

Настройка секретов

Изображение вкладки настроек на странице репозитория

  • Перейдите в Security > Secrets and Variables > Actions

Изображение, показывающее выбор вкладки секретов

CI/CD для машинного обучения

Настройка секретов

Изображение, показывающее ввод имени и значения секрета

CI/CD для машинного обучения

Секрет GITHUB_TOKEN

  • Встроенный секрет, предоставляемый GitHub Actions
  • Используется для выполнения действий в воркфлоу
    • Клонирование репозитория и получение кода
    • Открытие и закрытие задач и pull request'ов
    • Комментирование задач и pull request'ов
  • Автоматически доступен в каждом воркфлоу GitHub Actions
    • Доступ через ${{ secrets.GITHUB_TOKEN }}
  • Разрешения можно настраивать с нужной степенью точности
CI/CD для машинного обучения

Пример: комментирование pull request'а

  • Предоставьте разрешение на запись комментариев в PR
permissions: 
  pull-requests: write
  • Используйте GITHUB_TOKEN для авторизации
permissions: 
  pull-requests: write 
steps:
  - name: Comment PR
    uses: thollander/actions-comment-pull-request@v2
    with:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      message: |
        Hello world ! :wave:

Фрагмент страницы pull request с автоматическим комментарием от бота github-actions

1 https://gist.github.com/rbhadauria29/6d7fc51944b4fb48425c3c307fec77c6
CI/CD для машинного обучения

Давайте потренируемся!

CI/CD для машинного обучения

Preparing Video For Download...