#c# #continuous-integration #github-actions
#c# #непрерывная интеграция #github-действия
Вопрос:
Я расширяю приложение Windows, которое анализирует код C # и обнаруживает различные запахи. Расширение также будет работать в рамках действий GitHub. Цель состоит в том, чтобы проанализировать зафиксированный код как часть цикла CI с использованием этого приложения. Приложение представляет собой консольное приложение, основанное на .NET framework 4.7.2.
Чтобы интегрировать приложение с действиями GitHub, я собрал файл yml (приведенный ниже). Все остальное работает нормально, но приложение завершается сбоем со следующим сообщением.
The tools version "15.0" is unrecognized. Available tools versions are "2.0", "3.5", "4.0".
Я использую следующий файл yml. Как вы можете заметить, я добавил MSBuild в path , установил переменную среды для использования версии 15, установил переменную среды VSINSTALLDIR для установки Visual Studio 2017 и установил инструменты сборки. Тем не менее, я все еще получаю ошибку. Чего мне не хватает?
Name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
# Add MsBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v1.0.0
with:
vs-version: '15.0'
- name: env var
run: echo ::set-env name=VSINSTALLDIR::"C:Program Files (x86)Microsoft Visual Studio2017Enterprise"
- name: checking sdk
run: echo ::set-env name=VisualStudioVersion::"15.0"
- name: install build tools
run: |
curl.exe -o buildtools.exe https://download.visualstudio.microsoft.com/download/pr/3e542575-929e-4297-b6c6-bef34d0ee648/639c868e1219c651793aff537a1d3b77/vs_buildtools.exe
.buildtools.exe --quiet --wait --norestart --nocache --add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools --add Microsoft.VisualStudio.Workload.UniversalBuildTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Workload.VCTools
# Runs a set of commands using the runners shell
- name: download DesigniteConsole.exe
run: |
curl.exe -o DesigniteConsole.zip "<download link>"
powershell.exe -nologo -noprofile -command "amp; { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('DesigniteConsole.zip','.');}"
- name: Run Designite application (it utilizes GitHub secrets and environment variables)
run: |
.DesigniteConsoleDesigniteConsole.exe -ci -repo ${{github.repository}} -pat ${{ secrets.PAT }} -k ${{ secrets.D_KEY }}
cat Designite_output/DesigniteAnalysis.xml
Комментарии:
1. Привет, у меня есть один вопрос, является ли ваш инструмент сборки консольным приложением или приложением пользовательского интерфейса?
Ответ №1:
После стольких попыток я смог запустить его. Вот рабочий yaml.
Name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Run a one-line script
run: Invoke-webrequest -uri https://aka.ms/vs/15/release/vs_buildtools.exe -OutFile vs_buildtools.exe
shell: powershell
- name: install build tools
run: .vs_buildtools.exe --wait --norestart --passive --installPath "C:Program Files (x86)Microsoft Visual Studio2017BuildTools" --add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools --add Microsoft.VisualStudio.Workload.MSBuildTools
shell: cmd
# Runs a set of commands using the runners shell
- name: download DesigniteConsole.exe
run: |
curl.exe -o DesigniteConsole.zip "<download link>"
powershell.exe -nologo -noprofile -command "amp; { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('DesigniteConsole.zip','.');}"
- name: Run Designite application (it utilizes GitHub secrets and environment variables)
run: |
.DesigniteConsoleDesigniteConsole.exe -ci -repo ${{github.repository}} -pat ${{ secrets.PAT }} -k ${{ secrets.D_KEY }}
cat Designite_output/DesigniteAnalysis.xml
Ответ №2:
Надеюсь, я правильно понял ваш вопрос.
Проверьте эту проблему https://github.com/microsoft/setup-msbuild/issues/18#issuecomment-644485409
На размещенных агентах установлена только последняя версия VS. Флаг версии действительно присутствует в случае изменений и / или у вас есть автономные агенты.
или
https://github.com/microsoft/setup-msbuild/issues/5#issue-588501457
В последнее время исполнителю не удается выполнить этот движок при указании аргумента версии. Обходной путь: удалите любое использование аргумента vs-version для действия и оставьте его по умолчанию последним.