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 ---
あなたのコメントと助けをどうもありがとう!
あなたは以下から始めます:
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が含まれていることを確認してください。
別のメールIDを指定しました。しかし、Mavenは正確な問題を見つけることができず、「
REJECTED_OTHER_REASON - RemoteRefUpdate
」として出力しました。
それで、他のメールIDを与えてみましたが、うまくいきました。また、GitLabでPush
rules :::: project settings>Repository>Push Rules
を変更してみました。
別のメールアドレスを使用する必要がある場合にも、コミッターの制限を削除しました。