← Назад ко всем вопросам

Как прокидывать переменные окружения в автотесты в CI?

1️⃣ Как кратко ответить

Переменные окружения в CI можно прокидывать через конфигурационные файлы CI/CD, такие как .gitlab-ci.yml или .github/workflows, используя секции env или environment. Также можно использовать секреты, которые хранятся в защищенных хранилищах CI/CD платформ, и передавать их в тесты через соответствующие механизмы платформы.

2️⃣ Подробное объяснение темы

Переменные окружения — это способ передачи конфигурационных данных в приложения, включая автотесты, без необходимости изменения кода. В контексте CI/CD (Continuous Integration/Continuous Deployment) переменные окружения позволяют передавать данные, такие как учетные данные, API-ключи или параметры конфигурации, в процессе выполнения автотестов.

Зачем это нужно

  1. Безопасность: Переменные окружения позволяют хранить чувствительные данные, такие как пароли и токены, вне кода, что повышает безопасность.
  2. Гибкость: Легко изменять конфигурацию тестов без изменения кода.
  3. Универсальность: Использование переменных окружения позволяет запускать тесты в разных средах (например, тестовой, продакшн) с разными параметрами.

Как это работает

Пример с GitLab CI/CD

В GitLab CI/CD переменные окружения можно задать в файле .gitlab-ci.yml. Например:

stages:
  - test
​
variables:
  BASE_URL: "https://example.com"
  API_KEY: "your_api_key"
​
test_job:
  stage: test
  script:
    - echo "Running tests with BASE_URL=$BASE_URL and API_KEY=$API_KEY"
    - npm test
  • stages: Определяет этапы пайплайна, в данном случае это этап test.
  • variables: Определяет переменные окружения BASE_URL и API_KEY, которые будут доступны в рамках всех джобов.
  • test_job: Определяет джоб, который будет выполняться на этапе test.
  • script: Содержит команды, которые будут выполнены в рамках джоба. Переменные окружения используются в командах через синтаксис $VARIABLE_NAME.

Пример с GitHub Actions

В GitHub Actions переменные окружения задаются в файле .github/workflows/workflow.yml. Например:

name: CI
​
on:
  push:
    branches:
      - main
​
jobs:
  test:
    runs-on: ubuntu-latest
    env:
      BASE_URL: "https://example.com"
      API_KEY: "your_api_key"
    steps:
      - uses: actions/checkout@v2
      - name: Run tests
        run: |
          echo "Running tests with BASE_URL=$BASE_URL and API_KEY=$API_KEY"
          npm test
  • name: Имя workflow.
  • on: Определяет триггеры для запуска workflow, в данном случае это пуши в ветку main.
  • jobs: Определяет набор джобов, которые будут выполнены.
  • env: Определяет переменные окружения BASE_URL и API_KEY, которые будут доступны в рамках джоба test.
  • steps: Определяет шаги, которые будут выполнены в рамках джоба. Переменные окружения используются в командах через синтаксис $VARIABLE_NAME.

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

Для хранения чувствительных данных, таких как пароли и токены, рекомендуется использовать секреты. В GitLab они называются "Protected Variables", а в GitHub — "Secrets". Эти данные хранятся в зашифрованном виде и могут быть использованы в пайплайнах.

Пример использования секретов в GitHub Actions

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Run tests
        env:
          API_KEY: ${{ secrets.API_KEY }}
        run: |
          echo "Running tests with API_KEY=$API_KEY"
          npm test
  • secrets.API_KEY: Использует секрет API_KEY, который был предварительно добавлен в настройки репозитория GitHub.

Таким образом, переменные окружения и секреты позволяют гибко и безопасно управлять конфигурацией автотестов в CI/CD пайплайнах.

Тема: CI/CD
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки