web-dev-qa-db-ja.com

gitlabでのMavenリリース

Mavenを使用してMavenリリースを実行しようとしています。 CIツールとしてgitlabを使用しています。問題は、Mavenリリースを実行しようとしたときに、Mavenがpom.xmlを次のイテレーションに更新できないことです。

Googleは私の問題に対する回答がありません。私が試したことは次のとおりです。-プッシュしようとしているユーザーのアクセス許可を確認しようとしました(リポジトリへのマスターアクセス権があり、ブランチは保護されています)-マスターは私のリポジトリ内のプッシュ保護されたブランチへのアクセス権を持っています。

以下は私の.gitlab-ci.ymlファイルです-

    Maven_Release:
    stage: Maven_Release
    image: maven_Build:Latest
    script:
    - git config --global user.name "username"
    - git config --global user.email "Email"
    - git checkout -f master
    - git remote set-url Origin https://gitlab.com/test1/project/${CI_PROJECT_NAME}.git
    - mkdir -p ~/.ssh
    - echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa
    - ssh-keyscan -p 10022 gitlab.com >> ~/.ssh/known_hosts
    - mvn -B -s settings.xml -DdeployAtEnd=false -Dmaven.site.deploy.skip=true -Dresume=false -DautoVersionSubmodules=true -DdryRun=false -Djsse.enableSNIExtension=false -Dmaven.test.skip=true -DreleaseVersion=1.0.0 -DdevelopmentVersion=1.0.1 -DskipITs -DscmCommentPrefix="[ci skip]" release:prepare release:perform
    when: manual
    only:
    - master

このジョブを実行しようとしましたが、バージョンにタグを付けてデプロイできますが、以下のエラーのため、pom.xmlのバージョンを次のイテレーションに変更できません。

    [INFO] Checking in modified POMs...
    [INFO] commit done: [ci skip]prepare release REL_xxxxx
    [INFO] Push changes to remote... refs/heads/master:refs/heads/master
    [INFO] fetch url: https:/usrname:[email protected]/test/project/projectname.git
    [INFO] Push url: https:/usrname:[email protected]/test/project/projectname.git
    [INFO] REJECTED_OTHER_REASON - RemoteRefUpdate[remoteName=refs/heads/master, REJECTED_OTHER_REASON, (null)...xx3xxx9c7cdc6dxx, fastForward, srcRef=refs/heads/master, message="pre-receive hook declined"]
    [INFO] Tagging release with the label REL_xxxxx...
    [INFO] Push tag [REL_xxxxxx] to remote...
    [INFO] fetch url: https:/usrname:[email protected]/test/project/projectname.git
    [INFO] Push url: https:/usrname:[email protected]/test/project/projectname.git
    [INFO] OK - RemoteRefUpdate[remoteName=refs/tags/REL_xxxxx, OK, (null)...c5ce4d1fdf5f0a9415d9f02a48aab4f536eab52c, fastForward, srcRef=refs/tags/REL_xxxxx, message=null]
    [INFO] Transforming 'project name'...
    [INFO] Transforming 'Rproject'...
    [INFO] Transforming 'project'...
    [INFO]   Updating project name to xxx-SNAPSHOT
    [INFO] Not removing release POMs
    [INFO] Checking in modified POMs...
    [INFO] commit done: [ci skip]prepare for next development iteration
    [INFO] Push changes to remote... refs/heads/master:refs/heads/master
    [INFO] fetch url: https:/usrname:[email protected]/test/project/projectname.git
    [INFO] Push url: https:/usrname:[email protected]/test/project/projectname.git
    [INFO] REJECTED_OTHER_REASON - RemoteRefUpdate[remoteName=refs/heads/master, REJECTED_OTHER_REASON, (null)...1xxxxx541baf208dxxxd, fastForward, srcRef=refs/heads/master, message="pre-receive hook declined"]
    [INFO] Release preparation complete.
    [INFO] 
    [INFO] --- maven-release-plugin:2.5.1:perform (default-cli) @ mobile-interface-parent ---

あなたのコメントと助けをどうもありがとう!

7
user7486728

あなたは以下から始めます:

mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa
ssh-keyscan -p 10022 gitlab.com >> ~/.ssh/known_hosts

これは、GitLabリポジトリにプッシュバックする開発者権限を持つ適切なSSHキー(または同じ権限を持つデプロイメントキー)を提供するのに最適です。

しかし...あなたはそれを使用しません!

git remote set-url Origin https://gitlab.com/test1/project/${CI_PROJECT_NAME}.git

これはhttpsURLであり、SSH URL(ssh://[email protected]/test/project/projectname.gitまたは[email protected]:test/project/projectname.git)ではありません。

gitlabt.comはタイプミスであり、実際にはgitlab.comが表示されていると思います)

すべてのhttpsURLは、そのURLの資格情報が記憶されているgit config credential.helperを使用します。また、これらの認証情報は、mvn release:prepareがGitLabリポジトリにプッシュバックできるようにするための正しい認証情報ではない可能性があります。

pom.xmlを確認してください。scmセクションを使用してmvn releaseへのURLを指定できます。

<scm>
  <developerConnection>scm:git:ssh://[email protected]:/test1/project/${CI_PROJECT_NAME}.git</developerConnection>
</scm> 

~/.ssh/id_rsaを実際に使用したい場合は、developerConnectionにSSHURLが含まれていることを確認してください。


OP pandey 確認 コメント内

別のメールIDを指定しました。しかし、Mavenは正確な問題を見つけることができず、「REJECTED_OTHER_REASON - RemoteRefUpdate」として出力しました。
それで、他のメールIDを与えてみましたが、うまくいきました。

また、GitLabでPush rules :::: project settings>Repository>Push Rulesを変更してみました。
別のメールアドレスを使用する必要がある場合にも、コミッターの制限を削除しました。

4
VonC