ArgoCD plugin for expanding joy releases for the ArgoCD ApplicationSet Controller.
go install github.com/matryer/moq@latest- Update this repo and merge to master (triggering a build & /release)
- Note the new release version# from https://github.com/nestoca/joy-generator/releases
- Ensure the same version is present here
- Apply the newly released version in
infra's componentArgoCD.configureJoyGenerator()'sdevVersionhere- do
pu main preview-markdownoninfra/pulumi/platformas part of your PR/roll-out & merge, as normal
- do
- Test the new version
- ℹ️
devVersionwill be deployed to environments that containdevin their name,versionto all other envs - Update the catalog (e.g. an env-var in canary) & merge to master
- Verify that the env-var is present in ArgoCD's
Live Manifestunder dev-canary >rollout> latestrs(ReplicaSet) >pod
- ℹ️
- Apply the newly released version in
infra's componentArgoCD.configureJoyGenerator()'sversionhere- do
pu main preview-markdownoninfra/pulumi/platformas part of your PR/roll-out & merge, as normal
- do
- VICTORY! 💪
Argo CD's ApplicationSet controller will query joy-generator on Webhooks or schedule. The latter returns a full list of parameters for each application in the catalog. The ApplicationSet controller will then create or update the Application resources in the cluster. See Argo CD - Generators
Plugin for more information.
sequenceDiagram
participant user as User
participant gh as GitHub
participant a as ArgoCD
participant jg as Joy Generator
participant k8s as Kubernetes
user->>gh: Merge a PR
gh->>a: Webhook
a->>jg: Get list parameter values to use as a template
jg->>gh: Pull latest commit of master
jg->>a: Generate list of parameters for each applications in the catalog
a->>k8s: Create or update ApplicationSet
a->>k8s: Create or update Application
k8s->>a: ApplicationSet created or updated
a->>k8s: Sync Applications (if needed)
k8s->>a: Applications synced