0
Help us understand the problem. What are the problem?

posted at

updated at

Organization

Spring Cloud Contract メモ - Getting Startedでの気付き

1. やったこと

2. バージョンなど

  • Java 11
    • AdoptOpenJDK-11.0.11+9
  • Spring Boot 2.4.6
  • Spring Cloud Contract 2.2.7.RELEASE
  • Spring Cloud Contract 3.0.2

3. 気づき

3.1. Githubリポジトリにssh接続の場合にエラーになった

3.1.1. 事象

  • エラーメッセージに下記のように出力された
    • Caused by: com.jcraft.jsch.JSchException: Auth fail

3.1.2. 原因

  • GithubリポジトリにSSHでアクセスするためにはSSH鍵の登録が必要
  • 以下の原因が想定される
    • Github側にSSH鍵の登録を忘れた or 誤っている
    • .ssh/configにSSH鍵の設定を忘れた or 誤っている

3.1.3. 解決

# .ssh/config例
Host github.com
  IdentityFile ~/.ssh/id_rsa
  User git

3.2. GithubにSSH鍵を設定したのにエラーになった

3.2.1. 事象

  • エラーメッセージに下記のように出力された
    • Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@3946075

3.2.2. 原因

3.2.3. 解決

  • SSH鍵を作成する時に以下のようなコマンドで作成した
    • ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"
    • SSH鍵の先頭が-----BEGIN RSA PRIVATE KEY-----になっていることを確認した

3.3. テストは成功したけど、Github接続するところでエラーが出ている

  • 以下のようなエラーメッセージが出力されたと思ったが、出なくなったのでスキップ(エラーメッセージは記憶なので間違いあるかも)
    • Caused by: com.jcraft.jsch.agentproxyAgentProxyException: java.io.IOException: failed to fctrl usocket: -1
  • ssh-agentを起動したらエラーが出なくなった、ような気がした
  • ここでエラーになっても接続はできるようなので無視しても良いかも

3.4. Githubリポジトリのブランチ名がmasterじゃない

3.4.1. 事象

  • エラーメッセージに下記のように出力された
    • Caused by: org.eclipse.jgit.api.errors.RefNotFoundException: Ref master cannot be resolved

3.4.2. 原因

  • デフォルトでmasterブランチを参照するようになっているため

3.4.3. 解決

以下のいずれかで対応できる

  • (1) AutoConfigureStubRunnerなどの設定で、git.branchにブランチ名を指定したpropertiesを設定する
@AutoConfigureStubRunner(
    repositoryRoot = "git://git@github.com:ShigeoTejima/spring-cloud-contract-demo.git",
    ids = {"com.example:cdc-producer-demo:+::8100"},
    stubsMode = StubRunnerProperties.StubsMode.REMOTE,
    properties = {"git.branch=main"})
% env STUBRUNNER_PROPERTIES_GIT_BRANCH=main ./mvnw clean test
or
% ./mvnw -Dstubrunner.properties.git.branch=main clean test

おわり。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?