Commit 5121bd1c authored by Nikos Psaromanolakis's avatar Nikos Psaromanolakis Committed by Pantelis Malekas
Browse files

Edit .gitlab-ci.yml

parent 8515dccb
Loading
Loading
Loading
Loading
+165 −2
Changes for .gitlab-ci.yml: 165 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -800,11 +800,16 @@ nightly_promote_images_job:
    - hypo
  image:
    name: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/docker:29.1.3
  variables:
    SUCCESS_HELM_RELEASE_NAME: "hypo"
    SUCCESS_HELM_NAMESPACE: "hypo"
    SUCCESS_REMOTE_DEPLOY_DIR: "/home/ubuntu/hypo-nightly"
  needs:
    - job: nightly_workflows_job
      artifacts: false
    - job: nightly_check_images_job
      artifacts: true
      
  before_script:
    - |
      if [ "${RUN_NIGHTLY:-false}" != "true" ]; then
@@ -816,19 +821,78 @@ nightly_promote_images_job:
        exit 0
      fi

    - apk add --no-cache curl
    - docker info >/dev/null

    - |
      echo -n "$CI_REGISTRY_PASSWORD" |
        docker login \
          --username "$CI_REGISTRY_USER" \
          --password-stdin \
          "$CI_REGISTRY"

      
    - mkdir -p /tmp/bin ~/.ssh
    - chmod 700 ~/.ssh
    - export PATH="/tmp/bin:$PATH"

    # Install required utilities
    - |
        if command -v apk >/dev/null 2>&1; then
          apk add --no-cache openssh-client curl tar jq sshpass 
        elif command -v apt-get >/dev/null 2>&1; then
          apt-get update
          apt-get install -y --no-install-recommends \
            openssh-client curl tar jq sshpass
          rm -rf /var/lib/apt/lists/*
        else
          echo "Unsupported container base image."
          exit 1
        fi

    # Install age
    - curl -L -o /tmp/age.tar.gz https://github.com/FiloSottile/age/releases/download/v1.2.1/age-v1.2.1-linux-amd64.tar.gz
    - tar -xzf /tmp/age.tar.gz -C /tmp
    - mv /tmp/age/age /tmp/age/age-keygen /tmp/bin/

    # Install sops
    - curl -L -o /tmp/bin/sops https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64
    - chmod +x /tmp/bin/sops

    # Install yq
    - curl -L -o /tmp/bin/yq https://github.com/mikefarah/yq/releases/download/v4.47.2/yq_linux_amd64
    - chmod +x /tmp/bin/yq

    # Verify tools
    - sops --version
    - age --version
  


    # SOPS key
    - echo "$SOPS_AGE_KEY_PRIVATE" > ~/.sops-age-key.txt
    - chmod 600 ~/.sops-age-key.txt
    - export SOPS_AGE_KEY_FILE=~/.sops-age-key.txt

    # Add the deployment server host key
    - ssh-keyscan -H "$DEPLOYMENT_FAILED_SERVER_IP" >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts

    # Verify SSH connection using password
    - export SSHPASS="$DEPLOYMENT_FAILED_SERVER_PASSWORD"

    - |
      sshpass -e ssh \
        -o PreferredAuthentications=password \
        -o PubkeyAuthentication=no \
        "$DEPLOYMENT_FAILED_SERVER_USER@$DEPLOYMENT_FAILED_SERVER_IP" \
        'echo "SSH connection successful on $(hostname)"'

  script:
    - |
      set -eu

      REPORT_FILE="successful_nightly_images.txt"
      SUCCESS_VALUES_FILE="charts/hypo/values-nightly-success.yaml"

      cat > "$REPORT_FILE" <<EOF
      Successful nightly report
@@ -879,11 +943,110 @@ nightly_promote_images_job:
          >/dev/null 2>&1 || true
      done

      echo
      echo "All nightly images promoted successfully."
      echo

      sops --decrypt \
        --input-type yaml \
        --output-type yaml \
        --output "$SUCCESS_VALUES_FILE" \
        "$HELM_NIGHTLY_FAILED_VALUES_FILE"

      chmod 600 "$SUCCESS_VALUES_FILE"

      sshpass -e ssh \
        -o PreferredAuthentications=password \
        -o PubkeyAuthentication=no \
        "$DEPLOYMENT_FAILED_SERVER_USER@$DEPLOYMENT_FAILED_SERVER_IP" "
          set -e

          echo 'Uninstalling previous success-nightly Helm release...'

          helm uninstall '$SUCCESS_HELM_RELEASE_NAME' \
            --namespace '$SUCCESS_HELM_NAMESPACE' \
            --wait \
            --timeout 10m \
            || echo 'Success-nightly Helm release does not exist or was already removed.'

          echo 'Deleting PVCs...'

          kubectl delete pvc \
            --all \
            --namespace '$SUCCESS_HELM_NAMESPACE' \
            --ignore-not-found=true \
            --wait=true \
            --timeout=10m

          echo 'Deleting namespace...'

          kubectl delete namespace '$SUCCESS_HELM_NAMESPACE' \
            --ignore-not-found=true \
            --wait=true \
            --timeout=10m

          echo 'Removing previous copied Helm chart...'

          rm -rf '$SUCCESS_REMOTE_DEPLOY_DIR'

          echo 'Success-nightly cleanup completed successfully.'
        "

      echo
      echo "Preparing success-nightly Helm chart..."
      echo "=============================================="

      sshpass -e ssh \
        -o PreferredAuthentications=password \
        -o PubkeyAuthentication=no \
        "$DEPLOYMENT_FAILED_SERVER_USER@$DEPLOYMENT_FAILED_SERVER_IP" \
        "mkdir -p '$SUCCESS_REMOTE_DEPLOY_DIR'"

      echo "Copying Helm chart..."

      sshpass -e scp \
        -o PreferredAuthentications=password \
        -o PubkeyAuthentication=no \
        -r \
        charts/hypo/. \
        "$DEPLOYMENT_FAILED_SERVER_USER@$DEPLOYMENT_FAILED_SERVER_IP:$SUCCESS_REMOTE_DEPLOY_DIR/"

      echo "Helm chart copied successfully."

      echo
      echo "Deploying successful nightly HypO..."
      echo "=============================================="

      sshpass -e ssh \
        -o PreferredAuthentications=password \
        -o PubkeyAuthentication=no \
        "$DEPLOYMENT_FAILED_SERVER_USER@$DEPLOYMENT_FAILED_SERVER_IP" "
          set -e

          cd '$SUCCESS_REMOTE_DEPLOY_DIR'

          echo 'Building Helm dependencies...'
          helm dependency build .

          echo 'Installing success-nightly Helm release...'

          helm upgrade --install '$SUCCESS_HELM_RELEASE_NAME' . \
            --namespace '$SUCCESS_HELM_NAMESPACE' \
            --create-namespace \
            --values values-nightly-success.yaml \
            --wait \
            --timeout 10m

          echo 'Success-nightly deployment completed successfully.



      echo
      echo "Successful nightly report:"
      echo "=============================================="
      cat "$REPORT_FILE"


      MESSAGE=$(cat <<EOF
      ** Nightly installer succeeded**

@@ -933,7 +1096,7 @@ nightly_compare_failed_images_job:
  variables:
    FAILED_HELM_RELEASE_NAME: "hypo"
    FAILED_HELM_NAMESPACE: "hypo"
    FAILED_REMOTE_DEPLOY_DIR: "/home/ubuntu/hypo-failed-nightly"
    FAILED_REMOTE_DEPLOY_DIR: "/home/ubuntu/hypo-nightly"
  needs:
    - job: nightly_workflows_job
      artifacts: false