Azure Pipelines: push был отклонен, поскольку одна или несколько фиксаций содержат адрес электронной почты автора, который не соответствует шаблонам, указанным в политике

Лазурный трубопровод:
У меня возникла проблема при попытке создать и выпустить микросервисы с помощью команд Maven mvn release:prepare release:perform. Конвейер выдает следующую ошибку:

error: remote unpack failed: error VS403702: The push was rejected because one or more commits contain author email '' which does not match the policy-specified patterns.

Похоже, что отправка отклоняется из-за фиксации с пустым адресом электронной почты автора, что не соответствует политике организации в отношении электронных писем о фиксации.

Это для пользователя {{имя вашего проекта}} Build Service ({ваша организация}), у которого пустой адрес электронной почты.

Результат git log --pretty=format:"%h %an <%ae>" | grep '<>' :

0fc26c311 {{название вашего проекта}} Служба сборки ({ваша организация}) <>

Кроме того, у меня уже есть несколько действительных адресов электронной почты, указанных для проверки политики репозитория/автора фиксации.

Обновления от 07.16.2024:

Ошибка:

Caused by: org.apache.maven.shared.release.scm.ReleaseScmCommandException: Unable to commit files
Provider message:
The git-push command failed.
Command output:
error: remote unpack failed: error VS403702: The push was rejected because one or more commits contain author email '' which does not match the policy-specified patterns. 
To https://dev.azure.com/URL
 ! [remote rejected]     feature/23972-Pipeline-To-Release -> feature/23972-Pipeline-To-Release (VS403702: The push was rejected because one or more commits contain author email '' which does not match the policy-specified patterns. )
error: failed to push some refs to 'https://dev.azure.com/URL'

    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.checkin (AbstractScmCommitPhase.java:165)
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.performCheckins (AbstractScmCommitPhase.java:145)

Скрипт:

Пожалуйста, найдите сценарий:

parameters:
  - name: 'skipRelease'
    type: boolean
    default: false    
stages:
  - stage: ValidateGitCheckin
    jobs:
      - job: Validate
        steps:
          - script: |
              git config --add safe.directory $(Build.SourcesDirectory)
              
              if [ "${{ parameters.skipRelease }}" = "true" ]; then
                echo "SKIP_RELEASE: Inherit parameter"
                echo "##vso[task.setvariable variable=skipRelease;isoutput=true]true"
              fi
            displayName: "Validate git checkin"

  - stage: SetupMaven
    jobs:
      - job: DownloadMaven
        steps:
          - task: DownloadSecureFile@1 
            name: settingsxml
            inputs:
              secureFile: "settings.xml"
          - script: |
              mkdir -p $(System.DefaultWorkingDirectory)/.m2
              cp $(settingsxml.secureFilePath) $(System.DefaultWorkingDirectory)/.m2/settings.xml
            displayName: "Setup Maven settings.xml"
            
          - task: PublishPipelineArtifact@1
            inputs:
              path: $(System.DefaultWorkingDirectory)/.m2
              artifact: m2
            displayName: "Download and store Maven settings.xml to artifact"


  - stage: Release
    jobs:
      - job: ReleaseJob
        container: dockerContainer
        steps:
          - checkout: self
            fetchDepth: 0
            persistCredentials: true
          - script: |       
              git config --local user.email "$(build.RequestedForEmail)"
              git config --local user.name "$(build.RequestedFor)"
              git status
              if ! git diff-index --quiet HEAD --; then
              echo "There are uncommitted changes"
              exit 1
              fi
              git checkout feature/$(Build.SourceBranchName)
              git push origin feature/$(Build.SourceBranchName)
            displayName: 'Added git identity'
          - task: DownloadPipelineArtifact@2
            inputs:
              artifact: m2
              path: $(System.DefaultWorkingDirectory)/.m2
          - task: Maven@3
            displayName: 'Release clean'
            inputs:
              mavenPomFile: '$(System.DefaultWorkingDirectory)/pom.xml'
              options: '-B -X -s $(System.DefaultWorkingDirectory)/.m2/settings.xml'    
              goals: 'release:clean'
          - task: Maven@3
            displayName: 'Release prepare'
            inputs:
              mavenPomFile: '$(System.DefaultWorkingDirectory)/pom.xml'
              options: '-B -X -s $(System.DefaultWorkingDirectory)/.m2/settings.xml'    
              goals: 'release:prepare'
          - task: Maven@3
            displayName: 'Release perform'
            inputs:
              mavenPomFile: '$(System.DefaultWorkingDirectory)/pom.xml'
              options: '-B -X -s $(System.DefaultWorkingDirectory)/.m2/settings.xml'    
              goals: 'release:perform'

Можете ли вы предоставить подробный YAML-файл вашего конвейера и подробные журналы невыполненной задачи конвейера?

Bright Ran-MSFT 16.07.2024 03:33

Если конвейер выполнит отправку здесь, будет запущен новый конвейер, у которого будет запрошенная учетная запись службы сборки. В этом случае вам, вероятно, следует проверить значение и заменить значение по умолчанию. git config --local user.email "$(build.RequestedForEmail)"

jessehouwing 16.07.2024 14:42
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
92
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Команда «mvn Release:prepare» обновит POM-файл, а затем отправит его с новой фиксацией в исходный репозиторий в Azure Repos.

Если вы включили опцию «Commit author email validation» и установили шаблоны в политиках репозитория, при отправке нового коммита он будет проверять, может ли адрес электронной почты автора коммита соответствовать шаблонам. Если не совпадает, он вернет эту ошибку.

При попытке зафиксировать и отправить новые изменения в Azure Repos из Azure Pipelines задача по умолчанию будет использовать учетную запись службы сборки. Чтобы избежать проблем в конвейерах, перед запуском команды «mvn release:prepare» вы можете попробовать запустить команду «git config», чтобы установить автора коммита, который может соответствовать шаблонам, установленным в политиках репозитория.

steps:
. . .

- bash: |
   git config --global user.name "User01"
   git config --global user.email [email protected]
  displayName: 'Set Commit Author'

. . .

При использовании этого метода при последующих шагах по фиксации новых изменений будет использоваться автор фиксации, установленный на предыдущем шаге.


Другие вопросы по теме

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

Как выполнить git diff в конвейере Azure DevOps CI с несколькими репозиториями
Размещенные агенты Azure Pipelines были обновлены и теперь содержат пакет SDK/среды выполнения .Net 5.x вместе со старой версией .Net Core
Azure Devops // Подключение к службе // Terraform // Конвейер Yaml -> Ошибка сборки
Срок службы .NET Core SDK/среды выполнения 2.2 и 3.0 истек (EOL) и удален из всех размещенных агентов
Почему мои условия не работают должным образом в конвейерах YAML Azure DevOps при использовании условий на основе динамической переменной?
Выходная переменная из обычного задания конвейера Azure не расширяется в задании развертывания
Мой конвейер Azure не запускается, несмотря на выполнение условий
Используйте выходные данные команды bash в качестве входных параметров шаблона задания в конвейере Azure DevOps
Start-process: входной объект не может быть привязан ни к каким параметрам команды
Как заставить ручную сборку Azure Pipeline выбрать нужную мне ветку git