@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 }}"
Спасибо заранее
  • Вопрос задан
  • 29 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
Как и написано в сообщении reusable workflows should be referenced at the top-level `jobs.*.uses' key, not within steps, его надо вставить как отдельный job.
reusable workflow не может быть step.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы