Получение ошибки при запуске сканера сонара с использованием облачной сборки с преимуществом секретного менеджера

Не могли бы вы помочь с моей проблемой ниже. Поскольку я делаю сканер сонара, использую облачную сборку с преимуществом секретного менеджера, но сталкиваюсь с проблемой. И выполнил те же шаги https://cloud.google.com/cloud-build/docs/securing-builds/use-secrets вот мой код

steps:
  - name: 'gcr.io/$_PROJECT_ID/sonar-scanner:latest'
    entrypoint: 'bash'
    args:
    - '-c'
    - '-Dsonar.host.url=http://sonar:9000/'
    - '-Dsonar.login=$$USERNAME'
    - '-Dsonar.password=$$PASSWORD'
    - '-Dsonar.projectKey=$_BRANCH-analytics'
    - '-Dsonar.sources=.'
    secretEnv: ['USERNAME', 'PASSWORD']
    dir: 'analytics'
availableSecrets:
  secretManager:
  - versionName: projects/project-id/secrets/sonar_pass/versions/1
    env: 'PASSWORD'
  - versionName: projects/project-id/secrets/sonar_user/versions/2
    env: 'USERNAME'

tags: ['cloud-builders-community']

и проблема, с которой я столкнулся:

bash: line 0: bash: -Dsonar.login=$USERNAME: invalid option name
ERROR
ERROR: build step 0 "gcr.io/project-id/sonar-scanner:latest" failed: step exited with non-zero status: 2

пробовал с разными предметами, но не нашел решения.

Я благодарен, если вы мне в этом поможете. Спасибо


person Mahaboob    schedule 10.02.2021    source источник


Ответы (2)


На самом деле у меня была такая же проблема, как и у вас. Действительно, очень важно использовать entrypoint: 'bash' и '-c', иначе Cloud Build не распознает переменные из секретного менеджера.

Мой cloudbuild.yaml шаг выглядит так:

steps:
  id: 'sonarQube'
  name: 'gcr.io/$PROJECT_ID/sonar-scanner:latest'
  entrypoint: 'bash'
  args: 
    - '-c'
    - |
      sonar-scanner -Dsonar.host.url=<url> -Dsonar.login=$$SONARQUBE_TOKEN -Dsonar.projectKey=<project-key> -Dsonar.sources=.
secretEnv: ['SONARQUBE_TOKEN']
availableSecrets:
  secretManager:
  - versionName: projects/<project-id>/secrets/sonarqube-token/versions/latest
    env: 'SONARQUBE_TOKEN'

У меня были проблемы с последним изображением сканера, потому что он использовал alpine. У меня следующая ошибка: jre-bin-java-not-found, хотя в изображении есть Java. На основе this, я создал свой собственный образ Docker на основе Ubuntu вместо Alpine. Вы можете найти изображение в запросе на вытягивание.

person Jordy Heusdens    schedule 10.02.2021
comment
Большое спасибо. Это работает для меня. Вы избавили меня от лишних затрат времени. - person Mahaboob; 11.02.2021
comment
Без проблем! Если этот или любой другой ответ решил вашу проблему, отметьте его как принятый :) - person Jordy Heusdens; 11.02.2021

Я нашел этот пример использования сонар-сканер в Cloud Build. Похоже, что сонар-сканер надо использовать без bash

Я думаю, что вам следует удалить entrypoint: 'bash' и '-c'.

Аналогичный подход используется в этом вопросе SO. Это должно решить эту ошибку.

person vitooh    schedule 10.02.2021
comment
Привет, Vitooh, спасибо за обновление. Я попробовал использовать вышеупомянутый подход, жестко закодировав свои учетные данные сонара, и он работал нормально, но пока я начал использовать секретный менеджер (для секретов), он не работает, возникает ошибка, о которой я упоминал выше. - person Mahaboob; 10.02.2021