Действия на GitHub: каждый шаг должен определять ключ «использование» или «запуск».

#github-actions

Вопрос:

Я хотел бы настроить действие на github, которое

  • вызывает nuget и кэширует его
  • создает решение
  • запускает модульные тесты

Мне удалось добиться того, что второй и третий шаги работают, но теперь проблема в том, чтобы объединить следующий первый шаг.

 - name: Cache Nuget  - uses: actions/cache@v1  with:  path: ~/.nuget/packages  key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}  restore-keys: |  ${{ runner.os }}-nuget-  

Я попытался поставить это после - uses: actions/checkout@v2 , но это приводит к следующей ошибке.

 every step must define a `uses` or `run` key  
 ...  steps:  - uses: actions/checkout@v2  - name: Cache Nuget  - uses: actions/cache@v1  with:  path: ~/.nuget/packages  key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}  restore-keys: |  ${{ runner.os }}-nuget-  - name: Setup .NET  uses: actions/setup-dotnet@v1  ...  

Что я делаю не так?

Спасибо за помощь.

Вот полная конфигурация.

 name: Build and Tests  on:  push:  branches: [ main ]  pull_request:  branches: [ main ]  jobs:  build:   runs-on: ubuntu-latest   steps:  - uses: actions/checkout@v2  - name: Cache Nuget  - uses: actions/cache@v1  with:  path: ~/.nuget/packages  key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}  restore-keys: |  ${{ runner.os }}-nuget-  - name: Setup .NET  uses: actions/setup-dotnet@v1  with:  dotnet-version: 5.0.x  - name: Restore dependencies  run: dotnet restore  - name: Build  run: dotnet build --configuration Release --no-restore  - name: Run Tests  run: dotnet test --configuration Release --no-build --verbosity minimal /p:CollectCoverage=true /p:CoverletOutput=TestResults/ /p:CoverletOutputFormat=lcov  - name: Publish coverage report to coveralls.io   uses: coverallsapp/github-action@master   with:  github-token: ${{ secrets.GITHUB_TOKEN }}   path-to-lcov: Tests/App.Tests/TestResults/coverage.info    

Ответ №1:

Ваше форматирование отключено. Используйте тире только в первой строке, вот так:

 - uses: actions/checkout@v2 - name: Cache Nuget  uses: actions/cache@v1  

Если вы также добавляете в последнюю строку тире ( - ), то GitHub считает name , что это отдельный шаг, и он не знает, что с ним делать. Однако отсутствие тире означает, uses что оно относится к тому же шагу, name что и .