Поделиться через


Использование прокси-сервера разработки с Azure Pipelines

На первый взгляд
Цель: Использование прокси-сервера разработки в Azure Pipelines
Время: 20 минут
Плагины: Разные
Предварительные требования:настройка прокси-сервера разработки, Azure DevOps

Использование прокси-сервера разработки с Azure Pipelines — отличный способ тестирования приложений в управляемой среде. Следуя этим инструкциям, вы можете использовать прокси-сервер разработки с Azure Pipelines.

Заметка

В этой статье мы используем агент Ubuntu для Azure Pipelines.

Установка прокси-сервера разработки и его кэширование

Начните с установки Dev Proxy на агенте, используя задачу скрипта для его установки.

- script: bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"
  displayName: 'Install Dev Proxy'

По умолчанию устанавливается последняя версия прокси-сервера разработки. Если вы хотите установить определенную версию, ее можно указать, передав версию в конце сценария:

- script: bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" v1.0.0
  displayName: 'Install Dev Proxy v1.0.0'

Рекомендуется кэшировать файлы установки прокси-сервера разработки, чтобы ускорить последующие запуски. Вы можете использовать задачу Cache для этой цели. Вот как это сделать:

variables:
- name: DEV_PROXY_VERSION
  value: v1.0.0
- name: DEV_PROXY_CACHE_RESTORED
  value: 'false'

steps:
- task: Cache@2
  inputs:
    key: '"dev-proxy-$(DEV_PROXY_VERSION)"'
    path: ./devproxy
    cacheHitVar: DEV_PROXY_CACHE_RESTORED
  displayName: Cache Dev Proxy

- script: bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" $DEV_PROXY_VERSION
  displayName: 'Install Dev Proxy'
  condition: ne(variables.DEV_PROXY_CACHE_RESTORED, 'true')

Запуск прокси-сервера разработки

При запуске Dev Proxy в конвейере CI/CD его можно запустить из скрипта или включить скрипт напрямую в код. Когда скрипт готов, вызовите его в файле конвейера:

- script: bash ./run.sh
  displayName: 'Start Dev Proxy'

Управление прокси-сервером разработки

Для управления прокси-сервером разработки можно использовать API прокси-сервера разработки. Например, чтобы начать запись запросов, можно отправить запрос POST в конечную точку /proxy :

- script: |
    curl -X POST http://localhost:8897/proxy -H "Content-Type: application/json" -d '{"recording": true}'
  displayName: 'Start recording'

Загрузка журналов Dev Proxy в качестве артефактов

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

- task: PublishPipelineArtifact@1
  displayName: Upload Dev Proxy logs
  inputs:
    targetPath: $(LOG_FILE)
    artifact: $(LOG_FILE)

Загрузка отчетов Dev Proxy

Если вы используете Dev Proxy для анализа запросов, вы можете также загрузить отчеты в качестве артефактов:

- script: |
    mkdir -p $(Build.ArtifactStagingDirectory)/Reports
    for file in *Reporter*; do
      if [ -f "$file" ]; then
        cp "$file" $(Build.ArtifactStagingDirectory)/Reports
      fi
    done
  displayName: 'Copy reports to artifact directory'

- task: PublishPipelineArtifact@1
  displayName: Upload Dev Proxy reports
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)/Reports'
    artifact: 'Reports'

Пример файла конвейера

Ниже приведен простой пример использования прокси-сервера разработки в Azure Pipeline. Этот рабочий процесс устанавливает прокси-сервер разработки, запускает его, отправляет запрос через него с помощью curl, а затем отображает журналы.

trigger:
- main
- dev

pool:
  vmImage: ubuntu-latest

variables:
- name: DEV_PROXY_VERSION
  value: v1.0.0

steps:
- script: bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" $DEV_PROXY_VERSION
  displayName: 'Install Dev Proxy'

- script: bash ./start.sh
  displayName: 'Start Dev Proxy'

- script: |
     curl -ikx http://127.0.0.1:8000 https://jsonplaceholder.typicode.com/posts
  displayName: 'Send request'

- script: |
    curl -X POST http://localhost:8897/proxy/stop
  displayName: 'Stop Dev Proxy'

- script: |
    echo "Dev Proxy logs:"
    cat devproxy.log
  displayName: 'Show Dev Proxy logs'

См. также