APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

GitHub Rate Limitを考慮した Backstage の設定(詳細編)

みなさん、こんにちは。ACS事業部 亀崎です。

先日、GitHubのRate Limitを考慮したBackstageの設定についてご紹介させていただきました。

techblog.ap-com.co.jp

今回はその詳細についてご紹介したいと思います。

Backstage Catalog : GItHub Providerの設定

Backstageのコンフィグレーションで catalog.providers.github に指定をすると、カタログ情報のAuto Discovery機能が有効になります。

指定例は以下のようになります。

catalog:
  providers:
    github:
      providerId:
        organization: 'backstage' # string
        catalogPath: '/catalog-info.yaml' # string
        filters:
          branch: 'main' # string
          repository: '.*' # Regex

続いて指定可能内容の詳細です。

名称 内容
organization 処理対象とするGitHub Organization名
catalogPath 処理対象のファイル名。 *** といったワイルドカードが利用可能。(デフォルト: /catalog-info.yaml)
なお、 validateLocationsExist がtrueの場合はワイルドカードで指定することはできない。
validateLocationsExist Backstageにすでに登録されている場合のみ処理対象とする(デフォルト: false )
filters フィルター設定
filters.brach 対象ブランチ名。正規表現による指定可。(デフォルト: デフォルトブランチ)
filters.repository 対象リポジトリ。正規表現による指定も可能。(デフォルト: すべてのリポジトリが対象)
filters.allowFork forkリポジトリを対象とするかどうか。(デフォルト: false)
filters.topic GitHub イベントトピックのフィルター設定
filters.topic.include 処理対象とするトピック名。 includeとexcludeの両方が指定されている場合はexcludeが優先される。
filters.topic.exclude 処理除外対象とするトピック名。
filters.visibility 対象とするリポジトリの可視性。public/internal/private を指定する。(デフォルト: すべてを対象とする)
filters.allowArchived アーカイブリポジトリを対象にするかどうか。(デフォルト: false )
schedule 実行スケジュール 。(デフォルト: 3時間毎に実行。タイムアウトは1時間に設定)

設定の詳細はこちらで確認できます。

backstage.io

github.com

ハイパフォーマンス組織の設定

前回「ハイパフォーマンスな組織での設定」として以下のようなパターンをご紹介しました。それがこちらです

  • Push型の同期処理
  • 24時間に一度だけPull型の同期処理を実行
  • 自動登録はしない(新規登録は手動で実施する)

自動登録をしないとしているので validateLocationsExist をtrueで指定します。
さらに24時間に一度同期処理を実行するということですので schedulefrequency に days: 1 を指定します。

catalog:
  providers:
    github:
      providerId:
        organization: 'your-organization'
        catalogPath: '/catalog-info.yaml' 
        validateLocationsExist: true # Auto Discovery無効
        schedule:
          frequency: { days: 1 }
          timeout: { minutes: 5 }          

ここで注意点が1つあります。 validateLocationsExist を true に設定しました。 catalogPath でワイルドカードは利用できなくなります。つまり、各リポジトリのカタログ情報ファイル名は固定 (ここの例では /catalog-info.yaml )に固定しなければなりません。ご注意ください。

まとめ

今回実際の設定を例示させていただきました。 Rate Limitを考慮しなければならないのはわかったけど、どう設定したらいいんだ?と思っていた方もいらっしゃったのではないかと思います。 そうした方にこの投稿の内容が参考になればさいわいです。

Backstageには他にも開発者の認知負荷を低減する様々な機能が存在します。その効果も使い方次第でより大きくなります。 ご興味のある方がいらっしゃいましたらぜひ弊社までご相談ください。よろしくお願いします。

www.ap-com.co.jp www.ap-com.co.jp

弊社では開発者ポータルBackstageのマネージドサービスである「PlaTT」も提供しております。 Backstageに興味があるという方もぜひご連絡をいただけると嬉しいです。

www.ap-com.co.jp