Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Использование прокси-сервера разработки с Azure Pipelines — отличный способ тестирования приложений в управляемой среде. Следуя этим инструкциям, вы можете использовать прокси-сервер разработки с Azure Pipelines.
Заметка
В этой статье мы используем агент Ubuntu для Azure Pipelines.
Установка прокси-сервера разработки и его кэширование
Сначала установите прокси-сервер разработки на агенте, но сделайте это только в том случае, если он еще не установлен. Чтобы установить и кэшировать Dev Proxy, добавьте следующие действия в файл pipeline:
variables:
- name: DEV_PROXY_VERSION
value: v0.29.2
- 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: 'Run Dev Proxy'
Загрузка журналов 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'
Пример файла конвейера
Ниже приведен пример файла конвейера, который устанавливает прокси-сервер разработки, запускает его и отправляет журналы и отчеты в виде артефактов:
trigger:
- main
- dev
pool:
vmImage: ubuntu-latest
variables:
- name: LOG_FILE
value: devproxy.log
- name: DEV_PROXY_VERSION
value: v0.29.2
- name: DEV_PROXY_CACHE_RESTORED
value: 'false'
- name: PLAYWRIGHT_CACHE_RESTORED
value: 'false'
steps:
- task: UseNode@1
inputs:
version: '20.x'
displayName: 'Install Node.js'
- script: npm ci
displayName: 'Install dependencies'
#################################
# Cache + install of Playwright #
#################################
- script: |
PLAYWRIGHT_VERSION=$(npm ls @playwright/test | grep @playwright | sed 's/.*@//')
echo "Playwright's Version: $PLAYWRIGHT_VERSION"
echo "##vso[task.setvariable variable=PLAYWRIGHT_VERSION]$PLAYWRIGHT_VERSION"
displayName: Store Playwright's Version
- task: Cache@2
inputs:
key: '"playwright-ubuntu-$(PLAYWRIGHT_VERSION)"'
path: '$(HOME)/.cache/ms-playwright'
cacheHitVar: PLAYWRIGHT_CACHE_RESTORED
displayName: Cache Playwright Browsers for Playwright's Version
- script: npx playwright install --with-deps
condition: ne(variables['PLAYWRIGHT_CACHE_RESTORED'], 'true')
displayName: 'Install Playwright Browsers'
################################
# Cache + install of Dev Proxy #
################################
- 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')
- script: bash ./run.sh
displayName: 'Run Dev Proxy'
- task: PublishPipelineArtifact@1
displayName: Upload Dev Proxy logs
inputs:
targetPath: $(LOG_FILE)
artifact: $(LOG_FILE)
- 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'