diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 50d002771314952ea02136c4d6c48ef0e8bdcc21..34865e9b31d85d00e3d2ce867f545e31560e66e0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,6 @@ stages: - unittest + - build - build-devel - build-tag @@ -9,6 +10,12 @@ workflow: variables: RUN_UNIT_TESTS: "True" RUN_BUILD_DEVEL: "True" + - if: $CI_COMMIT_BRANCH != "main" + variables: + RUN_UNIT_TESTS: "True" + RUN_BUILD_DEVEL: "True" + BUILD_COMMIT_SHORT: "True" + LATEST_TAG: "dev" - if: $CI_COMMIT_TAG variables: RUN_UNIT_TESTS: "True" @@ -27,6 +34,19 @@ unittests: rules: - if: $RUN_UNIT_TESTS == "True" +build: + stage: build + image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [""] + script: + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64)\"}}}" > /kaniko/.docker/config.json + - sed -i -e "s/<VERSION>/${CI_COMMIT_TAG} (${CI_COMMIT_SHORT_SHA})/g" ${CI_PROJECT_DIR}/web/logs/apps.py + - /kaniko/executor --context $CI_PROJECT_DIR --destination ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} --destination ${CI_REGISTRY_IMAGE}:${LATEST_TAG} + rules: + - if: $BUILD_COMMIT_SHORT == "True" + build-devel: stage: build-devel image: diff --git a/web/tunnel/migrations/0012_tunnelmodel_tunnel_pod.py b/web/tunnel/migrations/0012_tunnelmodel_tunnel_pod.py new file mode 100644 index 0000000000000000000000000000000000000000..20dc5e7dc23ce7dcc7a2eabe6340ecfd88336a1d --- /dev/null +++ b/web/tunnel/migrations/0012_tunnelmodel_tunnel_pod.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.6 on 2023-02-10 18:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("tunnel", "0011_tunnelmodel_svc_name"), + ] + + operations = [ + migrations.AddField( + model_name="tunnelmodel", + name="tunnel_pod", + field=models.TextField(default="drf-tunnel-0"), + ), + ] diff --git a/web/tunnel/models.py b/web/tunnel/models.py index dde87cf6bcbd68437472071bab96284ab37e727c..767c1da54fdf8a9c3321a6b8b89d3cb33b7457ec 100644 --- a/web/tunnel/models.py +++ b/web/tunnel/models.py @@ -10,6 +10,7 @@ class TunnelModel(models.Model): target_node = models.TextField(null=False, max_length=32) target_port = models.IntegerField(null=False) date = models.DateTimeField(auto_now_add=True) + tunnel_pod = models.TextField(null=False, default="drf-tunnel-0") def __str__(self): return f"{self.servername}: {self.svc_name} - ssh [...]@{self.hostname} -L {self.local_port}:{self.target_node}:{self.target_port}" diff --git a/web/tunnel/utils.py b/web/tunnel/utils.py index 295114a80340a58baf8afc308acf254bd244382d..769fcb1e9ccced2188e8d675269bf19f01c99233 100644 --- a/web/tunnel/utils.py +++ b/web/tunnel/utils.py @@ -320,6 +320,7 @@ def k8s_get_svc_namespace(): def k8s_create_svc(**kwargs): v1 = k8s_get_client() deployment_name = os.environ.get("DEPLOYMENT_NAME", "tunneling") + pod_name = os.environ.get("HOSTNAME", "drf-tunnel-0") name = kwargs["svc_name"] namespace = k8s_get_svc_namespace() labels = {"name": name} @@ -342,7 +343,10 @@ def k8s_create_svc(**kwargs): "targetPort": kwargs["local_port"], } ], - "selector": {"app": deployment_name}, + "selector": { + "app": deployment_name, + "statefulset.kubernetes.io/pod-name": pod_name, + }, }, } return v1.create_namespaced_service(