CI/CDにJenkinsを使用しようとしています。 Python flaskアプリケーションを開発しました。このアプリケーションをGoogleApp Engineにデプロイしています。これまでのところ、gcloud app deploy app.yaml
コマンドを使用してデプロイしていますGoogle AppEngineへのアプリケーション。
このアプリケーションのコードは、Google Cloud SourceRepositoryにあります。
Git(Google Cloud Source Repository)への認証にはGoogle OAuthが必要なので、インストールしました Google OAuth Credentials Plugin
今私は2つの問題に直面しています
致命的:com.google.jenkins.plugins.source.GoogleRobotUsernamePassword.writeObject()を呼び出せませんでした:クラスcom.google.jenkins.plugins.sourceのcom.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule $ ForRemote#credentialsのシリアル化に失敗しました.GoogleRobotUsernamePasswordModule $ ForRemote ----デバッグ情報----メッセージ:com.google.jenkins.plugins.source.GoogleRobotUsernamePassword.writeObject()を呼び出せませんでした原因-例外:Java.lang.RuntimeException原因-メッセージ:シリアル化に失敗しましたcom.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule $ ForRemote#credentials for class com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule $ ForRemote -------------------- ----------- Java.lang.UnsupportedOperationException:セキュリティ上の理由からorg.joda.time.DateTimeのマーシャリングを拒否しています。 https://jenkins.io/redirect/class-filter/ at hudson.util.XStream2 $ BlacklistedTypesConverter.marshal(XStream2.Java:543)atcom.thoughtworks.xstream.core.AbstractReferenceMarshallerを参照してください。 convert(AbstractReferenceMarshaller.Java:69)at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.Java:58)at com.thoughtworks.xstream.core.AbstractReferenceMarshaller $ 1.convertAnother(AbstractReferenceMarshaller.Java:84)
質問:JenkinsでGoogle Cloud Sourceリポジトリを認証するにはどうすればよいですか? JenkinsでGoogleCloud Sourceリポジトリを使用するために必要な手順|プラグインは何ですか?
おそらく、不足しているスコープをComputeEngineに追加する必要がありますVMクラウドソースリポジトリへのアクセスを許可するJenkinsを実行しているインスタンス。 ドキュメント またはこの手順に従うことができます、便利だと思う方。
VM instance details
にリダイレクトされますStop
インスタンスEdit
を押して、クラウドソースリポジトリの適切なアクセススコープを設定しますVMインスタンスを開始した後、gitリポジトリを再度追加してみてください。「メタデータからのGoogleサービスアカウント」またはサービスアカウントから認証情報を選択すると、すべてが正常に機能するはずです。
「無効な認証資格情報」に出くわしました。デプロイ後にクラウドソースリポジトリを追加しようとしたときに問題が発生しました LauncherのJenkins 。
私の場合、それが発生した理由は、デプロイのプロセス中に、Compute Engine上のクラウドソースリポジトリの クラウドAPIアクセススコープ VM instanceはDisabled
に設定されました。これにより、サービスアカウントに必要なすべての役割/権限がある場合でも、そのインスタンスからの対話が防止されました。
Launcherによって再構成されるスコープは次のとおりです。
scopes:
- 'https://www.googleapis.com/auth/cloud.useraccounts.readonly'
- 'https://www.googleapis.com/auth/devstorage.read_only'
- 'https://www.googleapis.com/auth/logging.write'
- 'https://www.googleapis.com/auth/monitoring.write'
{% if enableComputeApi %}
- 'https://www.googleapis.com/auth/compute'
{% endif %}
- 'https://www.googleapis.com/auth/cloudruntimeconfig'
次の scope をVM Jenkinsを実行しているインスタンスに追加するだけで、エラーを修正できました。
https://www.googleapis.com/auth/source.read_only
プラグインを0.6バージョンに更新しました。 0.6バージョンでは、Jenkinsの「フリースタイル」プロジェクトでも同じ問題が発生します。 Jenkinsの「パイプライン」プロジェクトでチェックアウトに成功することができます。他のプロジェクトの「チェックアウト構文」をコピーして、構文の2つの部分を右側に置き換えます。
資格情報ID-> jenkinsの秘密鍵からGoogleサービスアカウントを作成した正しい資格情報IDに置き換えます。 url-> GoogleソースリポジトリのURLに置き換えます