From 9acae349c418c540783dba46b1008ffadbc056b1 Mon Sep 17 00:00:00 2001 From: Richard Mrasek Date: Fri, 12 Jun 2026 08:44:49 +0200 Subject: [PATCH] test of deployment use kubectl --- .gitea/workflows/docker-publish.yml | 73 +++++++++-------------------- 1 file changed, 21 insertions(+), 52 deletions(-) diff --git a/.gitea/workflows/docker-publish.yml b/.gitea/workflows/docker-publish.yml index 066febb..7bf4510 100644 --- a/.gitea/workflows/docker-publish.yml +++ b/.gitea/workflows/docker-publish.yml @@ -76,59 +76,28 @@ jobs: docker push "${IMAGE_REPO}:latest" docker push "${IMAGE_REPO}:${SHORT_SHA}" - - name: Install helm and kubectl + - name: Setup kubectl run: | - ARCH="$(uname -m)" - if [ "${ARCH}" = "x86_64" ]; then - ARCH="amd64" - elif [ "${ARCH}" = "aarch64" ]; then - ARCH="arm64" - fi - - if ! command -v helm >/dev/null 2>&1; then - apk add --no-cache curl tar gzip ca-certificates - HELM_VERSION="v3.16.4" - curl -fsSL "https://get.helm.sh/helm-${HELM_VERSION}-linux-${ARCH}.tar.gz" -o /tmp/helm.tgz - tar -xzf /tmp/helm.tgz -C /tmp - mv "/tmp/linux-${ARCH}/helm" /usr/local/bin/helm - chmod +x /usr/local/bin/helm - fi - - if ! command -v kubectl >/dev/null 2>&1; then - KUBECTL_VERSION="v1.31.2" - curl -fsSL "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/${ARCH}/kubectl" -o /usr/local/bin/kubectl - chmod +x /usr/local/bin/kubectl - fi - - helm version - kubectl version --client - - - name: Deploy to Dagster with Helm - run: | - if [ -z "${{ secrets.KUBE_CONFIG_B64 }}" ]; then - echo "Missing KUBE_CONFIG_B64 secret" - exit 1 - fi - - COMMIT_SHA="${GITHUB_SHA:-$GITEA_SHA}" - SHORT_SHA="$(echo "${COMMIT_SHA}" | cut -c1-12)" - mkdir -p "${HOME}/.kube" echo "${{ secrets.KUBE_CONFIG_B64 }}" | base64 -d > "${HOME}/.kube/config" - export KUBECONFIG="${HOME}/.kube/config" + chmod 600 "${HOME}/.kube/config" - helm upgrade --install "${HELM_RELEASE}" dagster \ - --repo "https://code.europa.eu/api/v4/projects/1304/packages/helm/stable" \ - --version "${DAGSTER_CHART_VERSION}" \ - --namespace "${K8S_NAMESPACE}" \ - --reuse-values \ - --set-string "dagster.dagster-user-deployments.deployments[0].image.repository=${IMAGE_REPO}" \ - --set-string "dagster.dagster-user-deployments.deployments[0].image.tag=${SHORT_SHA}" - - DEPLOYMENT_NAME="$(kubectl -n "${K8S_NAMESPACE}" get deployment -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | grep 'template-code-location' | head -n 1)" - if [ -n "${DEPLOYMENT_NAME}" ]; then - kubectl -n "${K8S_NAMESPACE}" rollout restart "deployment/${DEPLOYMENT_NAME}" - kubectl -n "${K8S_NAMESPACE}" rollout status "deployment/${DEPLOYMENT_NAME}" --timeout=300s - else - echo "No deployment name matched template-code-location; Helm upgrade completed without explicit rollout restart." - fi + - name: Update Dagster user deployment image + run: | + COMMIT_SHA="${GITHUB_SHA:-$GITEA_SHA}" + SHORT_SHA="$(echo "${COMMIT_SHA}" | cut -c1-12)" + + # Patch the dagster-user-deployments to update the image tag + kubectl patch statefulset dagster-user-deployments \ + -n "${K8S_NAMESPACE}" \ + --type='json' \ + -p="[{'op': 'replace', 'path': '/spec/template/spec/containers/0/image', 'value':'${IMAGE_REPO}:${SHORT_SHA}'}]" + + # Trigger rollout restart to pick up new image + kubectl rollout restart statefulset/dagster-user-deployments \ + -n "${K8S_NAMESPACE}" + + # Wait for rollout to complete + kubectl rollout status statefulset/dagster-user-deployments \ + -n "${K8S_NAMESPACE}" \ + --timeout=5m