@Krembi

Как правильно вынести job(sonarqube) в отдельный reusable workflow?

Добрый день, я столкнулся с проблемой при попытке интегрировать sonarqube в свои репозитории github actions. Получается Sonarqube по умолчанию мне выдал код который я должен вставить в workflow репозитория(вставил всё нормально работает).Создал reusable workflow в отдельном репозитории, переделав код sonar'а доделал его. Но при попытке запуске основного workflow, выходит ошибка:
"Error: .github#L1
reusable workflows should be referenced at the top-level `jobs.*.uses' key, not within steps".

Отправляю мой reusable workflow:
name: Reusable Workflow

on:
  workflow_call:
    secrets:
      SONAR_PROJECT_KEY:
        required: true
      SONAR_TOKEN:
        required: true
      GITHUB_TOKEN:
        required: true

jobs:
  build:
    runs-on: self-hosted
    if: github.event_name == 'pull_request'
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        persist-credentials: false
        fetch-depth: 0

    - name: Set up .NET
      uses: actions/setup-dotnet@v4
      with:
        dotnet-version: '8.x'

    - name: Build
      if: success()
      run: dotnet build --configuration Release

    - name: Test
      if: success()
      run: dotnet test

    - name: Set up JDK
      if: success()
      uses: actions/setup-java@v2
      with:
        distribution: 'adopt'
        java-version: '17'

    - name: Set NuGet Credentials
      env:
        GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
      run: |
        sed -i 's/%GITHUB_ACCESSTOKEN_ENV%/'"$GITHUB_TOKEN"'/' ./nuget.config

    - name: Cache SonarQube packages
      uses: actions/cache@v1
      with:
        path: ~\.sonar\cache
        key: ${{ runner.os }}-sonar
        restore-keys: ${{ runner.os }}-sonar

    - name: Cache SonarQube scanner
      id: cache-sonar-scanner
      uses: actions/cache@v1
      with:
        path: .\.sonar\scanner
        key: ${{ runner.os }}-sonar-scanner
        restore-keys: ${{ runner.os }}-sonar-scanner

    - name: Install SonarQube scanner
      if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
      shell: bash
      run: |
        mkdir -p ./.sonar/scanner
        dotnet tool update dotnet-sonarscanner --tool-path ./.sonar/scanner

    - name: Build and analyze
      shell: bash
      run: |
        ./.sonar/scanner/dotnet-sonarscanner begin /k:"${{ secrets.SONAR_PROJECT_KEY }}" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://somedomain.com"
        dotnet build
        ./.sonar/scanner/dotnet-sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}"
Спасибо заранее
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
Как и написано в сообщении reusable workflows should be referenced at the top-level `jobs.*.uses' key, not within steps, его надо вставить как отдельный job.
reusable workflow не может быть step.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы