front50

Cross-Application Persistence Service

  • 所有者: spinnaker/front50
  • 平台:
  • 許可證: Apache License 2.0
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Front50

Build Status

Front50 is the system of record for all Spinnaker metadata, including: application, pipeline and service account configurations.

All metadata is durably stored and served out of an in-memory cache.

Internals

Persistence

The following storage backends are supported:

  • Amazon S3
  • Google Cloud Storage
  • Redis
  • SQL - recommended

SQL is a cloud agnostic storage backend that offers strong read-after-write consistency and metadata versioning.

Metadata

The following types are represented in Front50 (data models):, Type, Description, ------, -------------, Application, Defines a set of commonly named resources managed by Spinnaker (metadata includes name, ownership, description, source code repository, etc.)., Application Permission, Defines the group memberships required to read/write any application resource., Entity Tags, Provides a general purpose and cloud agnostic tagging mechanism., Notification, Defines application-wide notification schemes (email, slack and sms)., Pipeline, Defines a reusable delivery workflow (exists within the context of a specific application)., Pipeline Strategy, Defines a custom deployment strategy (exists within the context of a specific application)., Project, Provides a (many-to-many) grouping mechanism for multiple applications., Service Account, Defines a system identity (with group memberships) that can be associated with one or more pipeline triggers., ### Domain

We strive to make it easy to introduce additional metadata attributes; models are simple objects and serialized to JSON at persistence time.

Migrators for non-trivial attribute changes are supported via implementations of the Migration interface.

The StorageServiceSupport class maintains an in-memory cache for each metadata type and delegates read/write operations to a storage backend-specific StorageService implementation.

Relevant Metrics

The following metrics are relevant to overall Front50 health:, Metric, Description, Grouping, controller.invocations (count), Invocation counts., controller, controller.invocations (average), Invocation times., controller, statusCode and method, controller.invocations (count), All 5xx responses., controller, statusCode and status = 5xx, ## Debugging

To start the JVM in debug mode, set the Java system property DEBUG=true:

./gradlew -DDEBUG=true

The JVM will then listen for a debugger to be attached on port 8180. The JVM will not wait for
the debugger to be attached before starting Front50; the relevant JVM arguments can be seen and
modified as needed in build.gradle.

Modular builds

By default, Front50 is built with all storage providers included. To build only a subset of
providers, use the includeProviders flag:

./gradlew -PincludeProviders=s3,gcs clean build

You can view the list of all providers in gradle.properties.

Working Locally

The tests are setup to only run if needed services are available.

S3

S3 TCK only run if there is a s3 proxy available at 127.0.0.1:9999

This can be provided with the following command:

docker run -d -p9999:80 \
  --env S3PROXY_AUTHORIZATION="none" \
  --env JCLOUDS_PROVIDER="filesystem" \
  --env JCLOUDS_IDENTITY="remote-identity" \
  --env JCLOUDS_CREDENTIAL="remote-credential" \
  andrewgaul/s3proxy

When running the S3 TCK via an IDE make sure to have env AWS_ACCESS_KEY_ID and AWS_SECRET_KEY set to null otherwise the tests will timeout, the gradle test task is already configured this way.

主要指標

概覽
名稱與所有者spinnaker/front50
主編程語言Java
編程語言Groovy (語言數: 5)
平台
許可證Apache License 2.0
所有者活动
創建於2014-06-30 22:17:10
推送於2025-04-09 04:55:17
最后一次提交2025-04-08 16:13:46
發布數437
最新版本名稱v2.38.2 (發布於 )
第一版名稱0.1 (發布於 2014-07-07 13:06:37)
用户参与
星數63
關注者數69
派生數641
提交數1.7k
已啟用問題?
問題數0
打開的問題數0
拉請求數1320
打開的拉請求數9
關閉的拉請求數119
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?