13

CI/CD に Jenkins を使用しようとしています。Python フラスコ アプリケーションを開発しました。このアプリケーションを Google App Engine にデプロイしています。これまでのところ、gcloud app deploy app.yamlコマンドを使用してアプリケーションを Google App Engine にデプロイしています。

このアプリケーションのコードは、Google Cloud ソース レポジトリにあります。

git(Google Cloud Source Repository)への認証にはGoogle OAuthが必要なので、 Google OAuth Credentials Pluginをインストールしました

今、私は2つの問題に直面しています

  1. 「メタデータからの Google サービス アカウント」認証情報の種類を使用すると、「ソース コード管理」にリストされている認証情報が表示されません。 スクリーンショットを見る
  2. 「秘密鍵からの Google サービス アカウント」を使用すると、資格情報を確認できます。しかし、ジェンキンスジョブを実行すると、以下のエラーが発生します

セキュリティ上の理由から DateTime。見る https://jenkins.io/redirect/class-filter/ hudson.util.XStream2$BlacklistedTypesConverter.marshal(XStream2.java:543) com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69) com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58) で com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:84) で

質問: Jenkins で Google Cloud Source リポジトリを認証するにはどうすればよいですか? Jenkins で Google Cloud ソース リポジトリを使用するために必要な手順|プラグインは何ですか?

4

2 に答える 2

6

解決

おそらく、Jenkins を実行している Compute Engine VM インスタンスに不足しているスコープを追加して、Cloud Source Repository へのアクセスを許可する必要があります。ドキュメントまたはこの手順のどちらか便利な方に従ってください。

  1. クラウド展開マネージャーに移動
  2. 問題の Jenkins デプロイメントの名前をクリックします
  3. 左側の情報ペインでインスタンス名をクリックすると、次の場所にリダイレクトされますVM instance details
  4. Stopインスタンス
  5. EditCloud Source Repository の適切なアクセス スコープを押して設定します

VM インスタンスを起動した後、git リポジトリを再度追加してみてください。「メタデータからの Google サービス アカウント」またはサービス アカウントから資格情報を選択すると、すべてが正常に機能するはずです。

推敲

「無効な認証資格情報」に出くわしました。Launcher から Jenkins をデプロイした後、クラウド ソース レポジトリを追加しようとすると問題が発生します。

私の場合、それが発生した理由は、デプロイのプロセス中に、Compute Engine VM インスタンス上のCloud Source RepositoriesのCloud API アクセス スコープが に設定されたため、サービス アカウントに必要なすべての権限があったとしても、そのインスタンスからの対話が妨げられたためです。役割/権限。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'

Jenkins を実行している VM インスタンスに次のスコープを追加するだけで、エラーを修正できました。

https://www.googleapis.com/auth/source.read_only 

追加:

Google API のスコープのリスト。

于 2018-04-08T11:57:48.677 に答える