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


Используйте Dev Proxy с действиями GitHub

Использование прокси-сервера разработки с GitHub Actions — отличный способ тестирования приложений в управляемой среде. Если вы хотите использовать прокси-сервер разработки с рабочим процессом GitHub Actions, необходимо включить несколько шагов в файл рабочего процесса, чтобы иметь возможность доверять сертификату прокси-сервера разработки.

Заметка

В этом примере мы будем использовать раннер Ubuntu для GitHub Actions.

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

Сначала установите Dev Proxy на раннер, но только если он не установлен. Чтобы установить и кэшировать прокси разработки, добавьте следующие действия в файл рабочего процесса:

- name: Cache Dev Proxy
  id: cache-devproxy
  uses: actions/cache@v4
  with:
    path: ./devproxy
    key: devproxy-linux-v0.29.2

- name: Install Dev Proxy
  if: steps.cache-devproxy.outputs.cache-hit != 'true'
  run: bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" -- v0.29.2

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

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

- name: Run Dev Proxy
  run: /bin/bash run-dev-proxy.sh

Отправка журналов прокси-сервера dev в виде артефактов

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

- name: Upload Dev Proxy logs
  uses: actions/upload-artifact@v4
  with:
    name: ${{ env.LOG_FILE }}
    path: ${{ env.LOG_FILE }}

Загрузить отчеты прокси-сервера разработки

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

- name: Upload Dev Proxy reports
  uses: actions/upload-artifact@v4
  with:
    name: Reports
    path: ./*Reporter*

Создание сводки задания

Чтобы упростить понимание результатов рабочего процесса, можно написать сводку в конце задания. Как правило, для создания сводок заданий используется MarkdownReporter, так как он создает выходные данные в формате Markdown:

- name: Write summary
  run: |
    cat YourPlugin_MarkdownReporter.md >> $GITHUB_STEP_SUMMARY

Пример файла рабочего процесса

Вот пример полного файла рабочего процесса, использующего Dev Proxy (на основе примера от Elio Struyf):

name: Test app using Dev Proxy

on:
  push:
    branches:
      - main
      - dev
  workflow_dispatch:

jobs:
  test:
    name: Test app using Dev Proxy
    timeout-minutes: 60
    runs-on: ubuntu-latest
    env:
      LOG_FILE: devproxy.log
      DEVPROXY_VERSION: v0.29.2
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      #################################
      # Cache + install of Playwright #
      #################################
      - name: Store Playwright's Version
        run: |
          PLAYWRIGHT_VERSION=$(npm ls @playwright/test | grep @playwright | sed 's/.*@//')
          echo "Playwright's Version: $PLAYWRIGHT_VERSION"
          echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_ENV          

      - name: Cache Playwright Browsers for Playwright's Version
        id: cache-playwright
        uses: actions/cache@v4
        with:
          path: ~/.cache/ms-playwright
          key: playwright-ubuntu-${{ env.PLAYWRIGHT_VERSION }}

      - name: Install Playwright Browsers
        if: steps.cache-playwright.outputs.cache-hit != 'true'
        run: npx playwright install --with-deps

      ################################
      # Cache + install of Dev Proxy #
      ################################
      - name: Cache Dev Proxy
        id: cache-devproxy
        uses: actions/cache@v4
        with:
          path: ./devproxy
          key: devproxy-ubuntu-${{ env.DEVPROXY_VERSION }}

      - name: Install Dev Proxy
        if: steps.cache-devproxy.outputs.cache-hit != 'true'
        run: bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" -- ${{ env.DEVPROXY_VERSION }}

      - name: Run Dev Proxy
        run: /bin/bash run.sh

      - name: Upload Dev Proxy logs
        uses: actions/upload-artifact@v4
        with:
          name: ${{ env.LOG_FILE }}
          path: ${{ env.LOG_FILE }}

      # only when using a reporting plugin with the Markdown reporter
      - name: Upload Dev Proxy reports
        uses: actions/upload-artifact@v4
        with:
          name: Reports
          path: ./*Reporter*
      
      # only when using a reporting plugin with the Markdown reporter
      - name: Write summary
        run: |
          cat SomePlugin_MarkdownReporter.md >> $GITHUB_STEP_SUMMARY