Создание различной конфигурации решения в Appveyor для каждой платформы - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь добавить сборку и тестирование Linux в поддерживаемую мной библиотеку C #. Одна библиотека в решении требует WinForms и поэтому не может быть построена на Linux. Я добавил конфигурацию ReleaseNoGui в свое решение и хотел бы, чтобы Linux создавал ее, а не Release. Это возможно? Это то, что я пробовал, но он все еще строит Release.

(…)

image: 
  - Visual Studio 2019
  - Ubuntu1804

configuration: Release

(…)

build:
  project: MySolution.sln
  parallel: true
  verbosity: minimal
  publish_nuget: true
  publish_nuget_symbols: false


for:
  - 
    matrix:
      only:
        - image: Visual Studio 2019

    deploy:
      - provider: NuGet
        name: nuget_release
        api_key:
(snipped...)
  -
    matrix:
      only:
        - image: Ubuntu1804

    configuration: ReleaseNoGui

Ответы [ 2 ]

1 голос
/ 22 октября 2019

for.matrix специализирует конфиги на основе переменных среды. В настоящее время image является неподдерживаемой переменной среды.

Чтобы достичь желаемого, вы можете использовать следующую конфигурацию appveyor.yml:

environment:
  matrix:

  # Windows job
  - job_name: Windows build
    appveyor_build_worker_image: Visual Studio 2019

  # Linux job
  - job_name: Linux build
    appveyor_build_worker_image: Ubuntu1804

matrix:
  fast_finish: true

configuration: Release

build:
  project: MySolution.sln
  parallel: true
  verbosity: minimal
  publish_nuget: true
  publish_nuget_symbols: false

for:
-
  matrix:
    only:
      - job_name: Windows build

  deploy:
    - provider: NuGet
      name: nuget
-
  matrix:
    only:
      - job_name: Linux build

  configuration: ReleaseNoGui
0 голосов
/ 23 октября 2019

После прочтения ответа Федора я экспериментировал с environment.matrix, добавил configuration к элементу environment.matrix и придумал:

environment:
  matrix:

  # Windows job
  - job_name: Windows build
    appveyor_build_worker_image: Visual Studio 2019
    configuration: Release

  # Linux job
  - job_name: Linux build
    appveyor_build_worker_image: Ubuntu1804
    configuration: ReleaseNoGui

matrix:
  fast_finish: true

build:
  project: MySolution.sln
  parallel: true
  verbosity: minimal
  publish_nuget: true
  publish_nuget_symbols: false

for:
-
  matrix:
    only:
      - job_name: Windows build

  deploy:
    - provider: NuGet
      name: nuget

, который собирает Linux с правильной конфигурацией.

...