#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
что и .