ML
    • Recent
    • Categories
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    GitLab Feature Flags

    IT Discussion
    feature flags gitlab golang
    1
    2
    553
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • stacksofplatesS
      stacksofplates
      last edited by stacksofplates

      It looks like GitLab now has feature flags available for the free users (at least on the hosted version). This is a pretty awesome free feature. Here's an example of how to leverage it.

      First create your feature flag:
      feature-flag1.png

      I opted to leave the bottom section of user specific flags alone.

      Then make sure to get your config:

      feature-flag-config.png

      Then all you need to do is enable it in your application:

      package main
      
      import (
      	"fmt"
      	"os"
      
      	"github.com/Unleash/unleash-client-go"
      )
      
      type metricsInterface struct {
      }
      
      func init() {
      	environment := os.Getenv("APP_ENVIRONMENT")
      	unleash.Initialize(
      		unleash.WithUrl("https://gitlab.com/api/v4/feature_flags/unleash/14019607"),
      		unleash.WithInstanceId("y_XXx-C3w2JjpHxxx19L"),
      		unleash.WithAppName(environment),
      		unleash.WithListener(&metricsInterface{}),
      	)
      }
      
      func main() {
      	if unleash.IsEnabled("test") {
      		fmt.Println("This is the app with the feature flag on.")
      	} else {
      		fmt.Println("This is the app with the feature flag off.")
      	}
      
      }
      

      So that's fairly self explanatory. We import the unleash library and then initialize unleash with the URL, instance ID, and environment. I opted to use an environment variable to define the app's environment. If the environment was "Production" the flag wouldn't even be used and would default to off. Then in your code, just include the name of the specific flag where you want to enable or disable a feature. Then when you enable or disable the flag in GitLab it will enable or disable the feature in your app. It goes without saying that your app will need internet access for this to work unless you're self hosting. Then you would just need LAN access. You can have multiple flags for one app, so just use the correct flag name in your code at the appropriate areas.

      1 Reply Last reply Reply Quote 3
      • stacksofplatesS
        stacksofplates
        last edited by

        To be clear, GitLab uses Unleash for their feature flags which is open source. It also has it's own UI, but it's nice to have it in your code base and not need to run a separate server.

        1 Reply Last reply Reply Quote 0
        • 1 / 1
        • First post
          Last post