Loading .gitlab-ci.yml +165 −2 Changes for .gitlab-ci.yml: 165 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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** Loading Loading @@ -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 Loading Loading
.gitlab-ci.yml +165 −2 Changes for .gitlab-ci.yml: 165 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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** Loading Loading @@ -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 Loading