diff --git a/content/posts/argocd-dynamic-environment-per-branch-part-1/index.md b/content/posts/argocd-dynamic-environment-per-branch-part-1/index.md index dd559e5..f6d06f4 100644 --- a/content/posts/argocd-dynamic-environment-per-branch-part-1/index.md +++ b/content/posts/argocd-dynamic-environment-per-branch-part-1/index.md @@ -316,9 +316,32 @@ First, let's set environment variables: So after setting all these variables, I can use `envsubst < ./kube/template.yaml` to create a correct generator. After that I only need to append it to one that is already in k8s. *And not to append if it's already there*. -So let's design out pipeline: +So my pipeline for a non-main branch looks like that: +```YAML +- name: Deploy a preview ApplicationSet + image: alpine/k8s:1.24.10 + when: + branch: + exclude: + - main + environment: + KUBECONFIG_CONTENT: + from_secret: KUBECONFIG_CONTENT + commands: + - mkdir $HOME/.kube + - echo $KUBECONFIG_CONTENT | base64 -d > $HOME/.kube/config + - apk update --no-cache && apk add yq gettext + - export ARGO_APP_CHART_VERSION=`cat chart/Chart.yaml | yq '.version'` + - export ARGO_APP_BRANCH=$DRONE_BRANCH + - export ARGO_APP_HOSTNAME="${DRONE_BRANCH}-dev.badhouseplants.net" + - export ARGO_APP_IMAGE_TAG=$DRONE_COMMIT_SHA + - kubectl get -f ./kube/applicationset.yaml -o yaml > /tmp/old_appset.yaml + - yq "del(.spec.generators[].list.elements[] | select(.name == \"$ARGO_APP_BRANCH\"))" /tmp/old_appset.yaml > /tmp/clean_appset.yaml + - envsubst < ./kube/template.yaml > /tmp/elements.yaml + - yq '.spec.generators[].list.elements += load("/tmp/elements.yaml")' /tmp/clean_appset.yaml > /tmp/new_appset.yaml + - kubectl apply -f /tmp/new_appset.yaml +``` -1. Get an application set is currently deployed to k8s - ```BASH - kubectl get application-set - ``` +And even though it's very ugly, I already like it. Because it's working + +![Drone pipeline result](/dyn-envs/drone-pipeline.png) \ No newline at end of file