Skip to content

Commit

Permalink
Merge branch 'main' into dependabot/go_modules/github.com/go-git/go-g…
Browse files Browse the repository at this point in the history
…it/v5-5.11.0

* main: (31 commits)
  fix: resolved issues with go-git 5.11.0 (#2543)
  chore: Devenv (#2542)
  refactor(storage/fs): adjust the declarative storage abstractions (#2540)
  chore(readme): update readme with client-side eval info (#2539)
  chore(deps): bump cuelang.org/go from 0.6.0 to 0.7.0 (#2523)
  refactor: use rpc/flipt.Now everywhere instead of timestamppb.Now
  feat(rpc/flipt): add Now timestamp with microsecond precision function
  fix(mysql): increase timestamp precision from seconds to microseconds
  fix(build): create new db instance per api IT
  fix(cfg): default config outputs first INFO log regardless of FLIPT_LOG_LEVEL (#2536)
  feat(ui): show time/date format on settings/preferences page (#2537)
  fix(mod): update dagger in correct go.mod (build)
  chore(github): update DAGGER_VERSION to 0.9.4
  chore: cleanup go work sum
  chore(build): update dagger to v0.9.4
  fix(build/testing): use correct db url environment variable
  test: move database coverage into integration tests
  chore(deps): update xo/dburl to v0.20.0 (#2533)
  chore: update readme
  chore: update README
  ...
  • Loading branch information
markphelps committed Dec 17, 2023
2 parents 4de94d8 + ca1307b commit cc6b9c7
Show file tree
Hide file tree
Showing 80 changed files with 3,477 additions and 2,533 deletions.
8 changes: 6 additions & 2 deletions .github/workflows/integration-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

env:
GO_VERSION: "1.21"
DAGGER_VERSION: "0.8.3"
DAGGER_VERSION: "0.9.4"

jobs:
cli:
Expand Down Expand Up @@ -47,7 +47,11 @@ jobs:
matrix:
test:
[
"api",
"api/sqlite",
"api/libsql",
"api/postgres",
"api/mysql",
"api/cockroach",
"api/cache",
"fs/git",
"fs/local",
Expand Down
9 changes: 3 additions & 6 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,12 @@ on:

env:
GO_VERSION: "1.21"
DAGGER_VERSION: "0.8.3"
DAGGER_VERSION: "0.9.4"

jobs:
test:
name: "Tests (Go)"
runs-on: ubuntu-latest
strategy:
matrix:
database: ["mysql", "postgres", "cockroachdb", "sqlite", "libsql"]
steps:
- uses: actions/checkout@v4

Expand All @@ -36,8 +33,8 @@ jobs:
with:
install-only: true

- name: Unit Test ${{ matrix.database }}
run: mage dagger:run "test:database ${{ matrix.database }}"
- name: Unit Test
run: mage dagger:run "test:unit"

- name: Upload Coverage
uses: codecov/[email protected]
Expand Down
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,14 @@ build/hack/out/
examples/cockroachdb/data
playwright-report/
screenshots/

# Devenv
.devenv*
devenv.local.nix

# direnv
.direnv

# pre-commit
.pre-commit-config.yaml

24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,30 @@
This format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [v1.33.0](https://github.com/flipt-io/flipt/releases/tag/v1.33.0) - 2023-12-11

### Added

- `auth/github`: add organization membership check to GitHub (#2508)
- `ui`: allow setting page size for tables (#2503)
- use default config even on linux if no config found (#2496)
- `ui/console`: add copy as curl button (#2474)

### Changed

- `cli`: silence usage on error (#2512)
- `ui`: cleanup header; show user name and opt login in user dropdown (#2480)
- `ui`: replace classNames with clsx library (#2482)
- `ui`: use rtk for flags (#2478)
- `ui`: move namespaces to use redux rtk (#2472)
- rework tests for TLS options for git sources with self-signed certificates

### Fixed

- `ui`: remove h-screen from default for Loading component (#2527)
- `ui`: page api call could finish earlier that Layout api calls (#2506)
- dont show name/login section if only email (#2495)

## [v1.32.0](https://github.com/flipt-io/flipt/releases/tag/v1.32.0) - 2023-11-29

### Added
Expand Down
27 changes: 24 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,34 @@

Checkout our [Development](DEVELOPMENT.md) guide for more information on how to get started developing Flipt.

## What To Work On

Check out our [public roadmap](https://github.com/orgs/flipt-io/projects/4) to see what we're working on and where you can help.

Not sure how to get started? You can:

- [Book a pairing session/code walkthrough](https://calendly.com/flipt-mark/30) with one of our teammates!
- Join our [Discord](https://www.flipt.io/discord), and ask any questions there

- Dive into any of the open issues, here are some examples:
- [Good First Issues](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
- [Backend](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Ago)
- [Frontend](https://github.com/flipt-io/flipt/issues?q=is%3Aopen+is%3Aissue+label%3Aui)

- Looking for issues by effort? We've got you covered:
- [XS](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Axs)
- [Small](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Asm)
- [Medium](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Amd)
- [Large](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Alg)
- [XL](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Axl)

## Issues

Let us know how we can help!

* Include any **stack traces** with your error
* List versions you are using: Flipt, Go, OS, etc.
* List the contents of your Flipt configuration file. (ex: default.yml)
- Include any **stack traces** with your error
- List versions you are using: Flipt, Go, OS, etc.
- List the contents of your Flipt configuration file. (ex: default.yml)

## Code

Expand Down
13 changes: 13 additions & 0 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

The following are instructions for setting up your local machine for Flipt development. For info on using VSCode Remote Containers / GitHub Codespaces, see [#cdes](#cdes) below.

> [!TIP]
> Try our new [devenv](#devenv) solution to quickly get setup developing Flipt!
Also check out our [Contributing](CONTRIBUTING.md) guide for more information on how to get changes merged into the project.

## Requirements
Expand Down Expand Up @@ -129,3 +132,13 @@ For VSCode Remote Containers (devcontainers), make sure you have [Docker](https:
If you have access to [GitHub Codespaces](https://github.com/features/codespaces), simply open Flipt in a codespaces from the `Code` tab in the repo on GitHub or click the button below:

[![Open in Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new/?repo=flipt-io/flipt)

## devenv

[devenv](devenv.sh) is a solution that creates fast, declarative, reproducible, and composable developer environments using Nix.

To use it for developing Flipt, you'll first need to install it. See the devenv [getting started](https://devenv.sh/getting-started/) guide for more information.

Once you have devenv installed, you can run `devenv up` from the root of this repository to start a development environment.

This will start a Docker container with the Flipt server running on port `8080` and the UI development server running on port `5173`.
120 changes: 85 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<img src="logo.svg" alt="Flipt" width=275 height=96 />
</p>

<p align="center">An open source, self-hosted, enterprise-ready, feature management solution</p>
<p align="center">An enterprise-ready, GRPC powered, GitOps enabled, feature management solution</p>

<hr />

Expand All @@ -31,7 +31,7 @@
<a href="https://flipt.io/discord">
<img alt="Discord" src="https://img.shields.io/discord/960634591000014878?color=%238440f1&label=Discord&logo=discord&logoColor=%238440f1&style=flat" />
</a>
<a href="https://features.flipt.io/roadmap">
<a href="https://github.com/orgs/flipt-io/projects/4">
<img src="https://img.shields.io/badge/roadmap-public-violet" alt="Public Roadmap" />
</a>
<a href="https://flipt.io/#newsletter">
Expand All @@ -48,15 +48,16 @@
<a href="http://www.flipt.io">Website</a> •
<a href="http://www.flipt.io/blog">Blog</a> •
<a href="https://features.flipt.io/">Feedback</a> •
<a href="#contributing">Contributing</a> •
<a href="https://www.flipt.io/discord">Discord</a>
</h4>
</div>

[Flipt](https://www.flipt.io) is an open-source, self-hosted feature flag application that allows you to run experiments across services in **your** environment.
[Flipt](https://www.flipt.io) enables you to follow DevOps best practices and seperate releases from deployments. Built with high performance engineering organizations in mind.

Flipt can be deployed within your existing infrastructure so that you don't have to worry about your information being sent to a third party or the latency required to communicate across the internet.

With our [GitOps friendly functionality](https://www.flipt.io/docs/guides/get-going-with-gitops), you can easily integrate Flipt into your Platform Engineering, DevOps, and CI/CD workflows to enable continuous configuration and deployment.
With our [GitOps friendly functionality](https://www.flipt.io/docs/guides/get-going-with-gitops), you can easily integrate Flipt into your CI/CD workflows to enable continuous configuration and deployment with confidence.

<br clear="both"/>

Expand Down Expand Up @@ -86,20 +87,25 @@ Flipt supports use cases such as:

<br clear="both"/>

## Values

- 🔒 **Security** - No [SSO Tax](https://sso.tax/). HTTPS, OIDC, OAuth, Service and API Token authentication methods supported out of the box.
- 🎛️ **Control** - No data leaves your servers and you don't have to open your systems to the outside world to communicate with Flipt. It all runs within your existing infrastructure.
- 🚀 **Speed** - Since Flipt is co-located with your existing services, you do not have to communicate across the internet which can add excessive latency and slow down your applications.
-**Simplicity** - Flipt is a single binary with no external dependencies by default.
- 👍 **Compatibility** - GRPC, REST, MySQL, Postgres, CockroachDB, SQLite, LibSQL, Redis... Flipt supports it all.

<br clear="both"/>

## Features

- Fast. Written in Go. Optimized for performance
- Stand alone, single binary that's easy to run and [configure](https://www.flipt.io/docs/configuration/overview)
- Ability to create advanced distribution rules to target segments of users
- Native [GRPC](https://grpc.io/) client [SDKs](#grpc-client-libraries) to integrate with your existing GRPC architecture
- Powerful REST API with native [SDKs](#rest-client-libraries) for easy integration
- Modern, mobile-friendly 📱 UI and debug console with dark mode 🌙
- Supports multiple databases: Postgres, MySQL, SQLite, [libSQL](https://turso.tech/libsql), and [CockroachDB](https://github.com/cockroachdb/cockroach)
- Import and export to allow storing your data as code
- Cloud-ready. Runs anywhere: bare metal, PaaS, K8s, with Docker or without
- Works with [Prometheus](https://prometheus.io/) and [OpenTelemetry](https://opentelemetry.io/) out of the box 🔋
- [Filesystem, Object, Git, and OCI declarative storage backends](https://www.flipt.io/docs/configuration/storage#declarative) to support **GitOps** workflows and more.
- Audit logging with webhooks support to track changes to your data
- [Filesystem, Object, Git, and OCI declarative storage backends](https://www.flipt.io/docs/configuration/storage#declarative) to support GitOps workflows and more.
- Audit logging with Webhook support to track changes to your data

Are we missing a feature that you'd like to see? [Let us know!](https://features.flipt.io)

Expand All @@ -111,17 +117,25 @@ We would love your help! Before submitting a PR, please read over the [Contribut

No contribution is too small, whether it be bug reports/fixes, feature requests, documentation updates, or anything else that can help drive the project forward.

Check out our [public roadmap](https://volta.net/embed/eyJzdGF0dXNlcyI6WyJ0cmlhZ2UiLCJiYWNrbG9nIiwidG9kbyIsImluX3Byb2dyZXNzIiwiaW5fcmV2aWV3IiwiZG9uZSIsInJlbGVhc2VkIiwiY2FuY2VsbGVkIl0sImZpbHRlcnMiOnt9LCJvd25lciI6ImZsaXB0LWlvIiwibmFtZSI6ImZsaXB0In0=) to see what we're working on and where you can help.
Check out our [public roadmap](https://github.com/orgs/flipt-io/projects/4) to see what we're working on and where you can help.

Not sure how to get started? You can:

- [Book a free, non-pressure pairing session/code walkthrough](https://calendly.com/flipt-mark/30) with one of our teammates!
- [Book a pairing session/code walkthrough](https://calendly.com/flipt-mark/30) with one of our teammates!
- Join our [Discord](https://www.flipt.io/discord), and ask any questions there

- Dive into any of the open issues, here are some examples:
- [Good First Issues](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
- [Backend](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Ago)
- [Frontend](https://github.com/flipt-io/flipt/issues?q=is%3Aopen+is%3Aissue+label%3Aui)

- Looking for issues by effort? We've got you covered:
- [XS](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Axs)
- [Small](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Asm)
- [Medium](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Amd)
- [Large](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Alg)
- [XL](https://github.com/flipt-io/flipt/issues?q=is%3Aissue+is%3Aopen+label%3Axl)

Review the [Architecture](ARCHITECTURE.md) and [Development](DEVELOPMENT.md) documentation for more information on how Flipt works.

<br clear="both"/>
Expand All @@ -132,16 +146,6 @@ For help and discussion around Flipt, feature flag best practices, and more, joi

<br clear="both"/>

## Values

- :lock: **Security** - HTTPS support. [OIDC](https://www.flipt.io/docs/authentication/methods#openid-connect) and [Static Token](https://www.flipt.io/docs/authentication/methods#static-token) authentication. [Auditing](https://www.flipt.io/docs/configuration/auditing). No data leaves your servers and you don't have to open your systems to the outside world to communicate with Flipt. It all runs within your existing infrastructure.
- :rocket: **Speed** - Since Flipt is co-located with your existing services, you do not have to communicate across the internet which can add excessive latency and slow down your applications.
- :white_check_mark: **Simplicity** - Flipt is a single binary with no external dependencies by default.
- :thumbsup: **Compatibility** - REST, GRPC, MySQL, Postgres, CockroachDB, SQLite, LibSQL, Redis... Flipt supports it all.
- :eyes: **Observability** - Flipt integrates with [Prometheus](https://prometheus.io/) and [OpenTelemetry](https://opentelemetry.io/) to provide metrics and tracing. We support sending trace data to [Jaeger](https://www.jaegertracing.io/), [Zipkin](https://zipkin.io/), and [OpenTelemetry Protocol (OTLP)](https://opentelemetry.io/docs/reference/specification/protocol/) backends.

<br clear="both"/>

## Try It

Try the latest version of Flipt for yourself.
Expand All @@ -155,6 +159,9 @@ Try the latest version of Flipt for yourself.
<a href="https://render.com/deploy" alt="Deploy to Render">
<img width="150" alt="Deploy to Render" src="http://render.com/images/deploy-to-render-button.svg" />
</a>
<a href="https://railway.app/template/dz-JCO" alt="Deploy to Railway">
<img width="150" alt="Deploy to Railway" src="https://railway.app/button.svg" />
</a>
</div>

### Sandbox
Expand Down Expand Up @@ -216,15 +223,50 @@ docker run --rm -p 8080:8080 -p 9000:9000 -t docker.flipt.io/flipt/flipt:nightly

## Integration

Check out the [integration documentation](https://flipt.io/docs/integration/) for more info on how to integrate Flipt into your existing applications.
Check out our [integration documentation](https://flipt.io/docs/integration/) for more info on how to integrate Flipt into your existing applications.

There are two ways to evaluate feature flags with Flipt:

- [Server Side](#server-side-evaluation)
- [Client Side](#client-side-evaluation)

### Server Side Evaluation

Server-side evaluation is the most common way to evaluate feature flags. This is where your application makes a request to Flipt to evaluate a feature flag and Flipt responds with the result of the evaluation.

Flipt exposes two different APIs for performing server-side evaluation:

### REST API
- [GRPC](#grpc)
- [REST](#rest)

#### GRPC

Flipt is equipped with a fully functional GRPC API. GRPC is a high performance, low latency, binary protocol that is used by many large scale companies such as Google, Netflix, and more.

#### GRPC SDKs

| Language | Version | Status |
| -------- | ------- | ------ |
| [Go](./sdk/go) | ![go](https://img.shields.io/github/v/tag/flipt-io/flipt?filter=sdk%2Fgo%2Fv*&label=go&link=https%3A%2F%2Fpkg.go.dev%2Fgo.flipt.io%2Fflipt%2Fsdk%2Fgo) | ![stable](https://img.shields.io/badge/status-stable-green) |
| [Ruby](https://github.com/flipt-io/flipt-grpc-ruby) | ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/flipt-io/flipt-grpc-ruby?color=red&label=gem&sort=semver) | ![stable](https://img.shields.io/badge/status-stable-green) |
| [.NET](https://github.com/flipt-io/flipt-grpc-dotnet) | ![Nuget](https://img.shields.io/nuget/v/flipt.grpc) | ![hardening](https://img.shields.io/badge/status-hardening-orange) |

#### Generate Your Own

If a client in your language is not available for download, you can easily generate one yourself using the existing [protobuf definition](https://github.com/flipt-io/flipt/blob/main/rpc/flipt/flipt.proto).

Our [integration documentation](https://www.flipt.io/docs/integration) has more information on how to generate your own Flipt clients in your language of choice.

#### REST

Flipt is equipped with a fully functional REST API. In fact, the Flipt UI is completely backed by this same API. This means that anything that can be done in the Flipt UI can also be done via the REST API.

The [Flipt REST API](https://www.flipt.io/docs/reference/overview) can also be used with any language that can make HTTP requests.

### REST Client Libraries
#### REST SDKs

> [!NOTE]
> We will be revamping our current REST SDKs in the coming weeks in order to simplify the API and make them easier to use. If you have any feedback on the current REST SDKs, please open an issue in the respective repository.
| Language | Version | Status |
| -------- | ------- | ------ |
Expand All @@ -235,19 +277,27 @@ The [Flipt REST API](https://www.flipt.io/docs/reference/overview) can also be u
| [Rust](https://github.com/flipt-io/flipt-rust) | [![crates.io](https://img.shields.io/crates/v/flipt.svg)](https://crates.io/crates/flipt) | ![hardening](https://img.shields.io/badge/status-hardening-orange) |
| [PHP](https://github.com/flipt-io/flipt-php) | [![Packagist](https://img.shields.io/packagist/v/flipt-io/flipt)](https://packagist.org/packages/flipt-io/flipt) | ![beta](https://img.shields.io/badge/status-beta-yellow) |

### GRPC Client Libraries
### Client Side Evaluation

| Language | Version | Status |
| -------- | ------- | ------ |
| [Go](./sdk/go) | ![go](https://img.shields.io/github/v/tag/flipt-io/flipt?filter=sdk%2Fgo%2Fv*&label=go&link=https%3A%2F%2Fpkg.go.dev%2Fgo.flipt.io%2Fflipt%2Fsdk%2Fgo) | ![stable](https://img.shields.io/badge/status-stable-green) |
| [Ruby](https://github.com/flipt-io/flipt-grpc-ruby) | ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/flipt-io/flipt-grpc-ruby?color=red&label=gem&sort=semver) | ![stable](https://img.shields.io/badge/status-stable-green) |
| [.NET](https://github.com/flipt-io/flipt-grpc-dotnet) | ![Nuget](https://img.shields.io/nuget/v/flipt.grpc) | ![hardening](https://img.shields.io/badge/status-hardening-orange) |
Client-side evaluation is a great way to reduce the number of requests that your application needs to make to Flipt. This is done by retrieving all of the feature flags that your application needs to evaluate and then evaluating them locally.

### Generate Your Own
For more information on client-side evaluation, check out our [client-side evaluation documentation](https://www.flipt.io/docs/integration/client).

If a client in your language is not available for download, you can easily generate one yourself using the existing [protobuf definition](https://github.com/flipt-io/flipt/blob/main/rpc/flipt/flipt.proto).
#### Client Side SDKs

Our [integration documentation](https://www.flipt.io/docs/integration) has more information on how to generate your own Flipt clients in your language of choice.
> [!WARNING]
> Our client-side SDKs are currently experimental. We are looking for feedback on the design and implementation. Please open an issue if you have any feedback or questions.
Our client-side SDKs are available in the [flipt-client-sdks](https://github.com/flipt-io/flipt-client-sdks/) repository.

We currently support the following languages:

- [Go](https://github.com/flipt-io/flipt-client-sdks/tree/main/flipt-client-go)
- [Node/TypeScript](https://github.com/flipt-io/flipt-client-sdks/tree/main/flipt-client-node)
- [Python](https://github.com/flipt-io/flipt-client-sdks/tree/main/flipt-client-python)
- [Ruby](https://github.com/flipt-io/flipt-client-sdks/tree/main/flipt-client-ruby)

We will be adding more languages in the future. If you'd like to see a specific language supported, please open an issue in the [flipt-client-sdks](https://github.com/flipt-io/flipt-client-sdks/issues/new) repository.

<br clear="both"/>

Expand Down
Loading

0 comments on commit cc6b9c7

Please sign in to comment.