Github flow
Github flow
* Rapid Integration
* Reduced branch complexity
* Prevent the accumulation of long-lived feature branches
CONS
* Can be challenging
* Potential risk of breaking changes
* Potential Incomplete features
Feature Flags
Gradual rollouts, experimentation, reduced risk
Flux CD
Versioning and Environment Variable Storage
spec:
values: DEV
app:
image:
repository: iccacr.azurecr.io/frontend
tag: 2.5.2-unstable
envs:
VERSION: 2.5.2-unstable
FLAG_ENABLE_DOCUMENTS_LIST: "true"
FLAG_ENABLE_PROMO_HERO: "true"
FLAG_ENABLE_BEST_BITRATE: "true"
spec:
values:
app:
image:
repository: iccacr.azurecr.io/frontend
tag: 2.5.1
envs:
VERSION: 2.5.1
FLAG_ENABLE_DOCUMENTS_LIST: "false"
FLAG_ENABLE_PROMO_HERO: "false"
FLAG_ENABLE_BEST_BITRATE: "false"
spec:
values: DEV
app:
image:
repository: iccacr.azurecr.io/frontend
tag: 2.5.2-unstable
envs:
VERSION: 2.5.2-unstable
FLAG_ENABLE_DOCUMENTS_LIST: "true"
FLAG_ENABLE_PROMO_HERO: "true"
FLAG_ENABLE_BEST_BITRATE: "true"
spec:
values: PRD
app:
image:
repository: iccacr.azurecr.io/frontend
tag: 2.5.1
envs:
VERSION: 2.5.1
FLAG_ENABLE_DOCUMENTS_LIST: "false"
FLAG_ENABLE_PROMO_HERO: "false"
FLAG_ENABLE_BEST_BITRATE: "false"
Next.js & React
Using Flags on Server/Client-side components
// ‘@/utilities/featureFlags.ts’
return (
<>
<Markdown text={entity.body}/>
{ FLAG_ENABLE_ACCORDIONS &&
<Accordion entity={entity.parts}/>
}
</>
);
};
// ‘@/contexts/featureFlagsContext.tsx’
'use client';
CSR
import React, { createContext } from 'react';
// ‘@/components/FavoriteTeam.tsx’
return (
<>
{FLAG_ENABLE_FAVORITE_TEAM && (
<FavoriteTeamView />
)}
</>
);
};