When we launched Harness Feature Flags, we were excited about the opportunity to leverage other capabilities across the Harness platform to create better-than-the-sum-of-its-parts value. One of the first things we did was add support for feature release pipelines to Feature Flags, which enabled users to automate software release workflows and policy enforcement.
Today, we’re extending how you can use pipelines with the launch of a new concept, Flag Pipelines. Pipelines have always let you build powerful workflows and automation for doing releases with feature flags, and now development teams can run pipelines automatically on every flag change to enforce governance and control. That’s right – flags can have individual pipelines that run every time a flag state is changed. That’s a game-changer for automating the day-to-day usage of flags and making sure that every change meets organizational standards.
Essentially, you can now guarantee that any time a flag’s state is changed, it goes through a predefined workflow. This can be something as simple as requiring an approval every time a sensitive feature is toggled. Or, it can be something more complex, such as requiring an approval, making an update to Jira and ServiceNow, and sending notifications to customer support and managers.
Governance in the Day-To-Day Flag Lifecycle
Flag pipelines let you build a simple pipeline and assign it to a flag. From that point on, that pipeline will run automatically every time the flag changes, no matter how it changes. This means that whether you change it via the UI, API, or by updating the YAML via Git, you’ll see this pipeline triggered.
This is great addition to feature management when your team wants to do things like:
Require an approval from a manager role, or a PM, on any flag change in the production environment
Send a Slack message on every flag change
Update a Jira ticket being used to track feature development steps
Execute a custom script associated with the flag every time the flag changes
Manual Process Misses the Point Of Feature Flags
Normally, you’d use pipelines with feature flags to build automated release workflows, such as incrementing a flag to 10% of your audience with an approval every 23 hours. And you can still do that for your one-off or specifically-modeled release scenarios. Flag Pipelines let you automate and enforce the things that you want to have happen every time, not just when you have a specific one-time scenario.
For teams and broader organizations, this feature enhancement provides a broader level of control over how feature flags are handled and managed day-to-day. Previously, users would have had to create an organizational process that required all of the users to run a stated pipeline every time that a flag needed to be changed. This poses a few problems:
Individual pipelines must be created for each toggle
Everyone must be trained to use the pipeline instead of the flag toggle
The user experience becomes a mess, because half of the UI can’t be used
Users can still change flag toggles manually or via code and bypass the pipeline
It’s not that teams don’t try to do these things the right way, rather that things slip, people and processes change, and it’s inconvenient to follow numerous extra steps for something that should be simple. Instead, what if users could use flags in a way that’s more closely aligned with their actual needs, and the release process for flag changes is automatic? By flipping the script, devs aren’t slowed down, and the business makes sure that things are done the right way every time.
How to Use Feature Flag Pipelines
To set up your flag pipelines, just select any flag and select the new “Flag Pipelines” tab. From there, you can choose or create the pipeline that you want to use.
Because flag pipelines are meant for the subset of workflows that you want to execute every time, not all pipelines can be used as flag pipelines. Flag pipelines must:
Not have continuous integration/continuous development (CI/CD) steps
Only have one flag change, not multiple
Have the flag step set to runtime inputs
Once you have a suitable pipeline and have it selected inside of your Flag Pipelines settings within a flag, you’re all set. That pipeline will now automatically run every time that the flag is changed within that environment.
Flag Pipelines continue our work in the pursuit of turning feature flags into a true part of your software delivery process. Allowing more sophisticated control of feature flags brings increased governance and feature flag automation to your organization. It’s a big step forward in evolving feature flags into a key business process in software delivery.