From 3a2153a41ab056ef9eca9e3bf29f5ab990a1e63d Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 19 Feb 2021 17:32:51 +0100 Subject: [PATCH 001/217] adds time measure to tests --- ods-devenv/scripts/deploy.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index f667812c4..bd0582956 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1770,7 +1770,7 @@ function run_smoke_tests() { pushd tests export PROVISION_API_HOST=https://prov-app-ods.ocp.odsbox.lan - make test + time make test popd git reset --hard @@ -1785,7 +1785,7 @@ function run_smoke_tests() { echo "bitbucket up and running." pushd tests - make test-quickstarter + time make test-quickstarter popd # clean up after tests From cf64f6c4b36afacb4e43cd3751ad6e12cd3f401f Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 5 Mar 2021 09:32:34 +0100 Subject: [PATCH 002/217] adds alternative staged ods box creation --- ods-devenv/packer/BaseVM2ODSBox.json | 97 +++++++++++++++ ods-devenv/packer/CentOS2BaseVM.json | 71 +++++++++++ ods-devenv/packer/create_ods_box_image.sh | 114 ++++++++++++++++++ .../scripts/bootstrap-base-vm-without-ods.sh | 31 +++++ .../scripts/bootstrap-ods-on-base-vm.sh | 31 +++++ ods-devenv/scripts/deploy.sh | 70 +++++++++++ 6 files changed, 414 insertions(+) create mode 100644 ods-devenv/packer/BaseVM2ODSBox.json create mode 100644 ods-devenv/packer/CentOS2BaseVM.json create mode 100755 ods-devenv/scripts/bootstrap-base-vm-without-ods.sh create mode 100755 ods-devenv/scripts/bootstrap-ods-on-base-vm.sh diff --git a/ods-devenv/packer/BaseVM2ODSBox.json b/ods-devenv/packer/BaseVM2ODSBox.json new file mode 100644 index 000000000..0e845a02d --- /dev/null +++ b/ods-devenv/packer/BaseVM2ODSBox.json @@ -0,0 +1,97 @@ +{ + "variables": { + "aws_access_key": "", + "aws_secret_key": "", + "pub_key": "" + }, + "builders": [ + { + "type": "amazon-ebs", + "access_key": "{{user `aws_access_key`}}", + "secret_key": "{{user `aws_secret_key`}}", + "region": "eu-west-1", + "source_ami_filter": { + "filters": { + "image-id": "{{user `ami_id`}}" + }, + "owners": "275438041116" + }, + "instance_type": "{{user `instance_type`}}", + "ssh_username": "{{user `username`}}", + "ssh_password": "{{user `password`}}", + "ami_name": "ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", + "run_tags": { + "Name": "ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" + }, + "tags": { + "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" + } + } + ], + "provisioners": [ + { + "type": "file", + "source": "{{user `pub_key`}}", + "destination": "~/tmp/odsbox.pub" + }, + { + "type": "shell", + "inline": [ + "echo 'Adding odsbox.pub to authorized keys'", + "mkdir -p ~/.ssh", + "chmod go-xrw ~/.ssh", + "mv ~/tmp/odsbox.pub ~/.ssh/odsbox.pub", + "touch ~/.ssh/authorized_keys", + "cat ~/.ssh/odsbox.pub >> ~/.ssh/authorized_keys", + "chmod go-xrw ~/.ssh/*", + "ls -lart ~/.ssh", + "echo '...done!'" + ] + }, + { + "type": "file", + "source": "ods-devenv/ods-service/startup_ods.sh", + "destination": "/home/openshift/tmp/" + }, + { + "type": "file", + "source": "ods-devenv/ods-service/stop_ods.sh", + "destination": "/home/openshift/tmp/" + }, + { + "type": "file", + "source": "ods-devenv/ods-service/ods.service", + "destination": "/home/openshift/tmp/" + }, + { + "type": "shell", + "script": "ods-devenv/packer/pwd_less_sudo.sh", + "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" + }, + { + "type": "shell", + "script": "ods-devenv/scripts/bootstrap-ods-on-base-vm.sh", + "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" + }, + { + "type": "shell", + "script": "ods-devenv/packer/stop_ods.sh" + }, + { + "type": "shell", + "script": "ods-devenv/packer/pwd_sudo.sh", + "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" + }, + { + "type": "shell", + "inline": [ + "echo Installing ODS service", + "echo openshift | sudo -S cp /home/openshift/tmp/ods.service /etc/systemd/system/ods.service", + "sudo cp /home/openshift/tmp/startup_ods.sh /usr/local/sbin/startup_ods.sh", + "sudo cp /home/openshift/tmp/stop_ods.sh /usr/local/sbin/stop_ods.sh", + "sudo systemctl daemon-reload", + "sudo systemctl enable --now ods.service" + ] + } + ] +} diff --git a/ods-devenv/packer/CentOS2BaseVM.json b/ods-devenv/packer/CentOS2BaseVM.json new file mode 100644 index 000000000..3ac499a07 --- /dev/null +++ b/ods-devenv/packer/CentOS2BaseVM.json @@ -0,0 +1,71 @@ +{ + "variables": { + "aws_access_key": "", + "aws_secret_key": "", + "pub_key": "" + }, + "builders": [ + { + "type": "amazon-ebs", + "access_key": "{{user `aws_access_key`}}", + "secret_key": "{{user `aws_secret_key`}}", + "region": "eu-west-1", + "source_ami_filter": { + "filters": { + "image-id": "{{user `ami_id`}}" + }, + "owners": "275438041116" + }, + "instance_type": "{{user `instance_type`}}", + "ssh_username": "{{user `username`}}", + "ssh_password": "{{user `password`}}", + "ami_name": "Base VM Setup {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", + "run_tags": { + "Name": "Base VM Setup Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" + }, + "tags": { + "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" + } + } + ], + "provisioners": [ + { + "type": "file", + "source": "{{user `pub_key`}}", + "destination": "~/tmp/odsbox.pub" + }, + { + "type": "shell", + "inline": [ + "echo 'Adding odsbox.pub to authorized keys'", + "mkdir -p ~/.ssh", + "chmod go-xrw ~/.ssh", + "mv ~/tmp/odsbox.pub ~/.ssh/odsbox.pub", + "touch ~/.ssh/authorized_keys", + "cat ~/.ssh/odsbox.pub >> ~/.ssh/authorized_keys", + "chmod go-xrw ~/.ssh/*", + "ls -lart ~/.ssh", + "echo '...done!'" + ] + }, + { + "type": "shell", + "script": "ods-devenv/packer/pwd_less_sudo.sh", + "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" + }, + { + "type": "shell", + "script": "ods-devenv/scripts/bootstrap-base-vm-without-ods.sh", + "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" + }, + { + "type": "shell", + "script": "ods-devenv/packer/stop_ods.sh" + }, + { + "type": "shell", + "script": "ods-devenv/packer/pwd_sudo.sh", + "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" + } + ] +} diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index be362e05e..bcdaec1c8 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -229,5 +229,119 @@ function create_ods_box_ami() { fi } +####################################### +# creates an ODS box image for AWS EC2 +# Globals: +# aws_access_key +# aws_secret_key +# ods_branch +# instance_type +####################################### +function create_ods_box_from_base_vm_ami() { + local ami_id + ami_id=$(aws ec2 describe-images \ + --owners 275438041116 \ + --filters "Name=name,Values=Base VM Setup ${target_git_ref} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ + --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') + + echo "ami-id=${ami_id}" + echo "PACKER_LOG=${PACKER_LOG}" + echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" + echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" + echo "ods_branch=${ods_branch}" + + if [[ "${dryrun}" == "true" ]] + then + echo -n "dryrun" + local counter=0 + while (( counter <= 10 )) + do + sleep 1 + counter=$((counter + 1)) + echo -n '.' + done + echo "done." + exit 0 + else + if [[ -z ${pub_key:=""} ]]; then + pub_key="not-valid.pub" + echo "A public key was not provided... creating not-valid.pub file ($pub_key) as placeholder!" + echo "#define the pub_key parameter to be able to include your public key" > $pub_key + pwd + cat $pub_key + echo "... done: created placeholder not-valid.pub file ($pub_key)!" + fi + + time packer build -on-error=ask \ + -var "aws_access_key=${aws_access_key}" \ + -var "aws_secret_key=${aws_secret_key}" \ + -var "ami_id=${ami_id}" \ + -var 'username=openshift' \ + -var 'password=openshift' \ + -var "name_tag=ODS Box $(date)" \ + -var "ods_branch=${ods_branch}" \ + -var "instance_type=${instance_type}" \ + -var "pub_key=${pub_key}" \ + ods-devenv/packer/BaseVM2ODSBox.json + fi +} + +####################################### +# creates an Base VM image for AWS EC2 +# Globals: +# aws_access_key +# aws_secret_key +# ods_branch +# instance_type +####################################### +function create_base_vm_ami() { + local ami_id + ami_id=$(aws ec2 describe-images \ + --owners 275438041116 \ + --filters "Name=name,Values=import-ami-*" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=CentOS*" \ + --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') + + echo "ami-id=${ami_id}" + echo "PACKER_LOG=${PACKER_LOG}" + echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" + echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" + echo "ods_branch=${ods_branch}" + + if [[ "${dryrun}" == "true" ]] + then + echo -n "dryrun" + local counter=0 + while (( counter <= 10 )) + do + sleep 1 + counter=$((counter + 1)) + echo -n '.' + done + echo "done." + exit 0 + else + if [[ -z ${pub_key:=""} ]]; then + pub_key="not-valid.pub" + echo "A public key was not provided... creating not-valid.pub file ($pub_key) as placeholder!" + echo "#define the pub_key parameter to be able to include your public key" > $pub_key + pwd + cat $pub_key + echo "... done: created placeholder not-valid.pub file ($pub_key)!" + fi + + time packer build -on-error=ask \ + -var "aws_access_key=${aws_access_key}" \ + -var "aws_secret_key=${aws_secret_key}" \ + -var "ami_id=${ami_id}" \ + -var 'username=openshift' \ + -var 'password=openshift' \ + -var "name_tag=ODS Box $(date)" \ + -var "ods_branch=${ods_branch}" \ + -var "instance_type=${instance_type}" \ + -var "pub_key=${pub_key}" \ + ods-devenv/packer/CentOS2BaseVM.json + fi +} + target="${target:-display_usage}" ${target} diff --git a/ods-devenv/scripts/bootstrap-base-vm-without-ods.sh b/ods-devenv/scripts/bootstrap-base-vm-without-ods.sh new file mode 100755 index 000000000..5ac8ec20d --- /dev/null +++ b/ods-devenv/scripts/bootstrap-base-vm-without-ods.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +set -eux + +ods_git_ref= + +while [[ "$#" -gt 0 ]]; do + case $1 in + + --branch) ods_git_ref="$2"; shift;; + +esac; shift; done + +ods_git_ref="${ods_git_ref:-master}" +echo "bootstrap: Will build base vm box against git-ref ${ods_git_ref}" + +# install modern git version as required by repos.sh +if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi +sudo yum update -y +sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm +sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm +sudo yum -y install git + +opendevstack_dir="${HOME}/opendevstack" +mkdir -p "${opendevstack_dir}" +cd "${opendevstack_dir}" || return +curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/${ods_git_ref}/scripts/repos.sh +chmod u+x ./repos.sh +./repos.sh --git-ref "${ods_git_ref}" --verbose + +cd ods-core +time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target basic_vm_without_ods_setup diff --git a/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh b/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh new file mode 100755 index 000000000..069021f96 --- /dev/null +++ b/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +set -eux + +ods_git_ref= + +while [[ "$#" -gt 0 ]]; do + case $1 in + + --branch) ods_git_ref="$2"; shift;; + +esac; shift; done + +ods_git_ref="${ods_git_ref:-master}" +echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" + +# install modern git version as required by repos.sh +if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi +sudo yum update -y +sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm +sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm +sudo yum -y install git + +opendevstack_dir="${HOME}/opendevstack" +mkdir -p "${opendevstack_dir}" +cd "${opendevstack_dir}" || return +curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/${ods_git_ref}/scripts/repos.sh +chmod u+x ./repos.sh +./repos.sh --git-ref "${ods_git_ref}" --verbose + +cd ods-core +time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target ods_on_basic_vm_setup diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index bd0582956..8a58cac4b 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1910,6 +1910,76 @@ function basic_vm_setup() { echo "source /etc/bash_completion.d/oc" } +function basic_vm_without_ods_setup() { + check_system_setup + setup_rdp + setup_dnsmasq + # optional + setup_vscode + setup_google_chrome + install_docker + setup_openshift_cluster + download_tailor + print_system_setup + # download atlassian stack backup files for unattented setup. + # either use prepare_atlassian_stack + # or + # initialize_atlassian_jiradb and initialize_atlassian_bitbucketdb + prepare_atlassian_stack + startup_and_follow_atlassian_mysql + # initialize_atlassian_jiradb + startup_atlassian_crowd + # currently nothing is waiting on Jira to become available, can just run in + # the background + startup_atlassian_jira & + # initialize_atlassian_bitbucketdb + startup_and_follow_bitbucket + # TODO: push to function + sudo systemctl restart dnsmasq + + configure_bitbucket2crowd + + # TODO wait until BitBucket (and Jira) becomes available + create_empty_ods_repositories + configure_jira2crowd + + # TODO: dump all variables in a file for later reuse +} + +function ods_on_basic_vm_setup() { + + create_configuration + push_ods_repositories + set_shared_library_ref + + install_ods_project + # Install components in OpenShift + setup_nexus | tee "${log_folder}"/nexus_setup.log + setup_sonarqube | tee "${log_folder}"/sonarqube_setup.log + setup_jenkins | tee "${log_folder}"/jenkins_setup.log + setup_provisioning_app | tee "${log_folder}"/provapp_setup.log + setup_docgen | tee "${log_folder}"/docgen_setup.log + + local fail_count + fail_count=0 + for job in $(jobs -p) + do + echo "Waiting for openshift build ${job} to complete." + wait "${job}" || fail_count=$((fail_count + 1)) + echo "build job ${job} returned. Number of failed jobs is ${fail_count}" + # TODO fail if any job fails + done + + setup_jenkins_agents + + run_smoke_tests + setup_ods_crontab + + echo "Installation completed." + echo "Now start a new terminal session or run:" + echo "source /etc/bash_completion.d/oc" +} + while [[ "$#" -gt 0 ]]; do case $1 in From fe84f71048b107e57e4817e4ad49db16c21ccdce Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 5 Mar 2021 15:27:21 +0100 Subject: [PATCH 003/217] exists if ami-id is null --- ods-devenv/packer/create_ods_box_image.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index bcdaec1c8..06632aff8 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -250,6 +250,12 @@ function create_ods_box_from_base_vm_ami() { echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" echo "ods_branch=${ods_branch}" + if [[ -z ${ami_id:=""} ]] + then + echo "No ami-id was found! [ami-id=${ami_id}]"; + exit 2 + fi + if [[ "${dryrun}" == "true" ]] then echo -n "dryrun" @@ -335,7 +341,7 @@ function create_base_vm_ami() { -var "ami_id=${ami_id}" \ -var 'username=openshift' \ -var 'password=openshift' \ - -var "name_tag=ODS Box $(date)" \ + -var "name_tag=Base VM Box $(date)" \ -var "ods_branch=${ods_branch}" \ -var "instance_type=${instance_type}" \ -var "pub_key=${pub_key}" \ From 035a21f16a09aaab410da0951ca828a7f183de77 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 5 Mar 2021 15:44:24 +0100 Subject: [PATCH 004/217] fixes wrong ami id filter --- ods-devenv/packer/create_ods_box_image.sh | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 06632aff8..f3168c0dd 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -238,10 +238,18 @@ function create_ods_box_ami() { # instance_type ####################################### function create_ods_box_from_base_vm_ami() { + + echo "Running create_ods_box_from_base_vm_ami!" + + aws ec2 describe-images \ + --owners 275438041116 \ + --filters "Name=name,Values=Base VM Setup ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ + --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId' + local ami_id ami_id=$(aws ec2 describe-images \ --owners 275438041116 \ - --filters "Name=name,Values=Base VM Setup ${target_git_ref} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ + --filters "Name=name,Values=Base VM Setup ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') echo "ami-id=${ami_id}" @@ -249,11 +257,12 @@ function create_ods_box_from_base_vm_ami() { echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" echo "ods_branch=${ods_branch}" + echo "instance_type=${instance_type}" - if [[ -z ${ami_id:=""} ]] + if [[ "$ami_id" == "null" ]] then echo "No ami-id was found! [ami-id=${ami_id}]"; - exit 2 + exit 1 fi if [[ "${dryrun}" == "true" ]] @@ -313,6 +322,12 @@ function create_base_vm_ami() { echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" echo "ods_branch=${ods_branch}" + if [[ "$ami_id" == "null" ]] + then + echo "No ami-id was found! [ami-id=${ami_id}]"; + exit 1 + fi + if [[ "${dryrun}" == "true" ]] then echo -n "dryrun" From 75abf20af8f25b6a6bdd1dd9d2c6c984b106df8f Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 5 Mar 2021 15:49:30 +0100 Subject: [PATCH 005/217] removes installation of latest git for bootstrapt ods on base vm --- ods-devenv/scripts/bootstrap-ods-on-base-vm.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh b/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh index 069021f96..89496250a 100755 --- a/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh +++ b/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh @@ -14,11 +14,11 @@ ods_git_ref="${ods_git_ref:-master}" echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" # install modern git version as required by repos.sh -if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi -sudo yum update -y -sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm -sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm -sudo yum -y install git +# if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi +# sudo yum update -y +# sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm +# sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm +# sudo yum -y install git opendevstack_dir="${HOME}/opendevstack" mkdir -p "${opendevstack_dir}" From 030a59259e80b1abf0ce81ba6fe3d08bb183bd0c Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 5 Mar 2021 16:31:24 +0100 Subject: [PATCH 006/217] start atlassian stack before install ods box based on base vm --- ods-devenv/scripts/deploy.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 8a58cac4b..6754d592c 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1948,6 +1948,17 @@ function basic_vm_without_ods_setup() { function ods_on_basic_vm_setup() { + startup_and_follow_atlassian_mysql + # initialize_atlassian_jiradb + startup_atlassian_crowd + # currently nothing is waiting on Jira to become available, can just run in + # the background + startup_atlassian_jira & + # initialize_atlassian_bitbucketdb + startup_and_follow_bitbucket + + sudo systemctl restart dnsmasq + create_configuration push_ods_repositories set_shared_library_ref From 9a7e304a710c0c7ea3fdeb8f8e2ee5200cc3b0c9 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 9 Mar 2021 08:49:24 +0100 Subject: [PATCH 007/217] move oc installation to function ods_on_basic_vm_setup --- ods-devenv/packer/CentOS2ODSBox.json | 4 +-- ods-devenv/scripts/deploy.sh | 41 ++++++++++++++++++++-------- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index 76ef1b34b..e9588719c 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -19,9 +19,9 @@ "instance_type": "{{user `instance_type`}}", "ssh_username": "{{user `username`}}", "ssh_password": "{{user `password`}}", - "ami_name": "ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", + "ami_name": "NG-CI ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", "run_tags": { - "Name": "ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" + "Name": "NG-CI ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" }, "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 6754d592c..e09b9a408 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1792,6 +1792,28 @@ function run_smoke_tests() { oc delete project unitt-cd unitt-dev unitt-test } +function startup_atlassian_stack() { + # for machines derived from legacy images and login-shells that do not source .bashrc + export GOPROXY="https://goproxy.io,direct" + # for sonarqube + echo "Setting vm.max_map_count=262144" + sudo sysctl -w vm.max_map_count=262144 + + setup_dnsmasq + + # restart and follow mysql + restart_atlassian_mysql + printf "Waiting for mysqld to become available" + until [[ $(docker inspect --format '{{.State.Health.Status}}' ${atlassian_mysql_container_name}) == 'healthy' ]] + do + printf . + sleep 1 + done + echo "mysqld up and running." + + restart_atlassian_suite +} + function startup_ods() { # for machines derived from legacy images and login-shells that do not source .bashrc export GOPROXY="https://goproxy.io,direct" @@ -1918,9 +1940,9 @@ function basic_vm_without_ods_setup() { setup_vscode setup_google_chrome install_docker - setup_openshift_cluster - download_tailor - print_system_setup +# setup_openshift_cluster +# download_tailor +# print_system_setup # download atlassian stack backup files for unattented setup. # either use prepare_atlassian_stack # or @@ -1948,14 +1970,11 @@ function basic_vm_without_ods_setup() { function ods_on_basic_vm_setup() { - startup_and_follow_atlassian_mysql - # initialize_atlassian_jiradb - startup_atlassian_crowd - # currently nothing is waiting on Jira to become available, can just run in - # the background - startup_atlassian_jira & - # initialize_atlassian_bitbucketdb - startup_and_follow_bitbucket + time setup_openshift_cluster + time download_tailor + time print_system_setup + + time startup_atlassian_stack sudo systemctl restart dnsmasq From 9f2364d2e16cc83a3d20a9acee53ebc1f26f1bdf Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 9 Mar 2021 09:59:32 +0100 Subject: [PATCH 008/217] install ods before atlassian stack --- ods-devenv/packer/CentOS2BaseVM.json | 2 +- .../scripts/bootstrap-ods-on-base-vm.sh | 2 +- ...thout-ods.sh => bootstrap-plain-ods-vm.sh} | 2 +- ods-devenv/scripts/deploy.sh | 27 +++++++------------ 4 files changed, 12 insertions(+), 21 deletions(-) rename ods-devenv/scripts/{bootstrap-base-vm-without-ods.sh => bootstrap-plain-ods-vm.sh} (96%) diff --git a/ods-devenv/packer/CentOS2BaseVM.json b/ods-devenv/packer/CentOS2BaseVM.json index 3ac499a07..992e19365 100644 --- a/ods-devenv/packer/CentOS2BaseVM.json +++ b/ods-devenv/packer/CentOS2BaseVM.json @@ -55,7 +55,7 @@ }, { "type": "shell", - "script": "ods-devenv/scripts/bootstrap-base-vm-without-ods.sh", + "script": "ods-devenv/scripts/plain_ods_vm_setup.sh", "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" }, { diff --git a/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh b/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh index 89496250a..a449510b2 100755 --- a/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh +++ b/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh @@ -28,4 +28,4 @@ chmod u+x ./repos.sh ./repos.sh --git-ref "${ods_git_ref}" --verbose cd ods-core -time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target ods_on_basic_vm_setup +time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target atlassian_stack_on_ods_setup diff --git a/ods-devenv/scripts/bootstrap-base-vm-without-ods.sh b/ods-devenv/scripts/bootstrap-plain-ods-vm.sh similarity index 96% rename from ods-devenv/scripts/bootstrap-base-vm-without-ods.sh rename to ods-devenv/scripts/bootstrap-plain-ods-vm.sh index 5ac8ec20d..6d15d20a1 100755 --- a/ods-devenv/scripts/bootstrap-base-vm-without-ods.sh +++ b/ods-devenv/scripts/bootstrap-plain-ods-vm.sh @@ -28,4 +28,4 @@ chmod u+x ./repos.sh ./repos.sh --git-ref "${ods_git_ref}" --verbose cd ods-core -time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target basic_vm_without_ods_setup +time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target plain_ods_vm_setup diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index e09b9a408..231274dfd 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1932,7 +1932,7 @@ function basic_vm_setup() { echo "source /etc/bash_completion.d/oc" } -function basic_vm_without_ods_setup() { +function plain_ods_vm_setup() { check_system_setup setup_rdp setup_dnsmasq @@ -1940,9 +1940,13 @@ function basic_vm_without_ods_setup() { setup_vscode setup_google_chrome install_docker -# setup_openshift_cluster -# download_tailor -# print_system_setup + setup_openshift_cluster + download_tailor + print_system_setup +} + +function atlassian_stack_on_ods_setup() { + # download atlassian stack backup files for unattented setup. # either use prepare_atlassian_stack # or @@ -1960,24 +1964,10 @@ function basic_vm_without_ods_setup() { sudo systemctl restart dnsmasq configure_bitbucket2crowd - # TODO wait until BitBucket (and Jira) becomes available create_empty_ods_repositories configure_jira2crowd - # TODO: dump all variables in a file for later reuse -} - -function ods_on_basic_vm_setup() { - - time setup_openshift_cluster - time download_tailor - time print_system_setup - - time startup_atlassian_stack - - sudo systemctl restart dnsmasq - create_configuration push_ods_repositories set_shared_library_ref @@ -2010,6 +2000,7 @@ function ods_on_basic_vm_setup() { echo "source /etc/bash_completion.d/oc" } + while [[ "$#" -gt 0 ]]; do case $1 in From b312f010443bc1ef6a48de36c02bec0fd654505a Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 9 Mar 2021 10:01:23 +0100 Subject: [PATCH 009/217] fix wrong file name --- ods-devenv/packer/CentOS2BaseVM.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/packer/CentOS2BaseVM.json b/ods-devenv/packer/CentOS2BaseVM.json index 992e19365..22e4d2159 100644 --- a/ods-devenv/packer/CentOS2BaseVM.json +++ b/ods-devenv/packer/CentOS2BaseVM.json @@ -55,7 +55,7 @@ }, { "type": "shell", - "script": "ods-devenv/scripts/plain_ods_vm_setup.sh", + "script": "ods-devenv/scripts/bootstrap-plain-ods-vm-setup.sh", "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" }, { From e292d8b900d231e3a34c487f191f22c936ce8ded Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 9 Mar 2021 10:10:03 +0100 Subject: [PATCH 010/217] fix wrong file name again --- ods-devenv/packer/CentOS2BaseVM.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/packer/CentOS2BaseVM.json b/ods-devenv/packer/CentOS2BaseVM.json index 22e4d2159..0cd632948 100644 --- a/ods-devenv/packer/CentOS2BaseVM.json +++ b/ods-devenv/packer/CentOS2BaseVM.json @@ -55,7 +55,7 @@ }, { "type": "shell", - "script": "ods-devenv/scripts/bootstrap-plain-ods-vm-setup.sh", + "script": "ods-devenv/scripts/bootstrap-plain-ods-vm.sh", "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" }, { From 63e3a6dc3545535e2f6e4cab3fe8bbd01ccd7a34 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 9 Mar 2021 12:02:09 +0100 Subject: [PATCH 011/217] stops ods cluster after installation --- ods-devenv/packer/CentOS2BaseVM.json | 4 ---- ods-devenv/scripts/deploy.sh | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ods-devenv/packer/CentOS2BaseVM.json b/ods-devenv/packer/CentOS2BaseVM.json index 0cd632948..65fbf89de 100644 --- a/ods-devenv/packer/CentOS2BaseVM.json +++ b/ods-devenv/packer/CentOS2BaseVM.json @@ -58,10 +58,6 @@ "script": "ods-devenv/scripts/bootstrap-plain-ods-vm.sh", "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" }, - { - "type": "shell", - "script": "ods-devenv/packer/stop_ods.sh" - }, { "type": "shell", "script": "ods-devenv/packer/pwd_sudo.sh", diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 231274dfd..a72dfc8ea 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1943,6 +1943,9 @@ function plain_ods_vm_setup() { setup_openshift_cluster download_tailor print_system_setup + + echo "Stopping ods cluster" + oc cluster down } function atlassian_stack_on_ods_setup() { From 27e8ce25e5ad8d71dc44a91080fe5d589c833a5a Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 9 Mar 2021 15:51:56 +0100 Subject: [PATCH 012/217] start ods before installing atlassian stack --- ods-devenv/scripts/deploy.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index a72dfc8ea..528095d07 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1814,6 +1814,30 @@ function startup_atlassian_stack() { restart_atlassian_suite } +function startup_ods_only() { + # for machines derived from legacy images and login-shells that do not source .bashrc + export GOPROXY="https://goproxy.io,direct" + # for sonarqube + echo "Setting vm.max_map_count=262144" + sudo sysctl -w vm.max_map_count=262144 + + setup_dnsmasq + + echo "setting kubedns in ${HOME}/openshift.local.clusterup/kubedns/resolv.conf" + sed -i "s|^nameserver.*$|nameserver ${public_hostname}|" "${HOME}/openshift.local.clusterup/kubedns/resolv.conf" + if ! grep "nameserver ${public_hostname}" "${HOME}/openshift.local.clusterup/kubedns/resolv.conf" + then + echo "ERROR: could not update kubedns/resolv.con!" + return 1 + fi + + # allow for OpenShifts to be resolved within OpenShift network + sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT + startup_openshift_cluster + echo "set iptables" +} + + function startup_ods() { # for machines derived from legacy images and login-shells that do not source .bashrc export GOPROXY="https://goproxy.io,direct" @@ -1950,6 +1974,8 @@ function plain_ods_vm_setup() { function atlassian_stack_on_ods_setup() { + startup_ods_only + # download atlassian stack backup files for unattented setup. # either use prepare_atlassian_stack # or From caadd59bbdb88d49665aa4ad5c7e0921ff7ee020 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Wed, 10 Mar 2021 13:28:47 +0100 Subject: [PATCH 013/217] installs in base vm oc and atlassian and ods on top of base vm --- ods-devenv/scripts/bootstrap-ods-on-base-vm.sh | 2 +- ods-devenv/scripts/bootstrap-plain-ods-vm.sh | 2 +- ods-devenv/scripts/deploy.sh | 18 ++++++++---------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh b/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh index a449510b2..90157347f 100755 --- a/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh +++ b/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh @@ -28,4 +28,4 @@ chmod u+x ./repos.sh ./repos.sh --git-ref "${ods_git_ref}" --verbose cd ods-core -time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target atlassian_stack_on_ods_setup +time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target ods_setup diff --git a/ods-devenv/scripts/bootstrap-plain-ods-vm.sh b/ods-devenv/scripts/bootstrap-plain-ods-vm.sh index 6d15d20a1..8dd487960 100755 --- a/ods-devenv/scripts/bootstrap-plain-ods-vm.sh +++ b/ods-devenv/scripts/bootstrap-plain-ods-vm.sh @@ -28,4 +28,4 @@ chmod u+x ./repos.sh ./repos.sh --git-ref "${ods_git_ref}" --verbose cd ods-core -time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target plain_ods_vm_setup +time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target base_vm_setup diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 528095d07..02d8198eb 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1956,7 +1956,7 @@ function basic_vm_setup() { echo "source /etc/bash_completion.d/oc" } -function plain_ods_vm_setup() { +function base_vm_setup() { check_system_setup setup_rdp setup_dnsmasq @@ -1967,15 +1967,6 @@ function plain_ods_vm_setup() { setup_openshift_cluster download_tailor print_system_setup - - echo "Stopping ods cluster" - oc cluster down -} - -function atlassian_stack_on_ods_setup() { - - startup_ods_only - # download atlassian stack backup files for unattented setup. # either use prepare_atlassian_stack # or @@ -1992,6 +1983,13 @@ function atlassian_stack_on_ods_setup() { # TODO: push to function sudo systemctl restart dnsmasq + stop_ods +} + +function ods_setup() { + + startup_ods + configure_bitbucket2crowd # TODO wait until BitBucket (and Jira) becomes available create_empty_ods_repositories From c6cc832db4846851d6fa9a179e028a158df5efd8 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 11 Mar 2021 08:49:55 +0100 Subject: [PATCH 014/217] split ods smoke test from qs smoke test --- ods-devenv/packer/BaseVM2ODSBox.json | 4 +- ods-devenv/packer/CentOS2ODSBox.json | 4 +- ods-devenv/packer/create_ods_box_image.sh | 50 +++++++-------------- ods-devenv/scripts/deploy.sh | 55 ++++++++++++++++++++++- 4 files changed, 74 insertions(+), 39 deletions(-) diff --git a/ods-devenv/packer/BaseVM2ODSBox.json b/ods-devenv/packer/BaseVM2ODSBox.json index 0e845a02d..da8a2280f 100644 --- a/ods-devenv/packer/BaseVM2ODSBox.json +++ b/ods-devenv/packer/BaseVM2ODSBox.json @@ -19,9 +19,9 @@ "instance_type": "{{user `instance_type`}}", "ssh_username": "{{user `username`}}", "ssh_password": "{{user `password`}}", - "ami_name": "ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", + "ami_name": "NG-CI ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", "run_tags": { - "Name": "ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" + "Name": "NG-CI ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" }, "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index e9588719c..76ef1b34b 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -19,9 +19,9 @@ "instance_type": "{{user `instance_type`}}", "ssh_username": "{{user `username`}}", "ssh_password": "{{user `password`}}", - "ami_name": "NG-CI ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", + "ami_name": "ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", "run_tags": { - "Name": "NG-CI ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" + "Name": "ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" }, "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index f3168c0dd..edd12baf0 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -229,27 +229,11 @@ function create_ods_box_ami() { fi } -####################################### -# creates an ODS box image for AWS EC2 -# Globals: -# aws_access_key -# aws_secret_key -# ods_branch -# instance_type -####################################### -function create_ods_box_from_base_vm_ami() { - - echo "Running create_ods_box_from_base_vm_ami!" - - aws ec2 describe-images \ - --owners 275438041116 \ - --filters "Name=name,Values=Base VM Setup ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ - --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId' - +function create_base_vm_ami() { local ami_id ami_id=$(aws ec2 describe-images \ --owners 275438041116 \ - --filters "Name=name,Values=Base VM Setup ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ + --filters "Name=name,Values=import-ami-*" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=CentOS*" \ --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') echo "ami-id=${ami_id}" @@ -257,7 +241,6 @@ function create_ods_box_from_base_vm_ami() { echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" echo "ods_branch=${ods_branch}" - echo "instance_type=${instance_type}" if [[ "$ami_id" == "null" ]] then @@ -293,27 +276,27 @@ function create_ods_box_from_base_vm_ami() { -var "ami_id=${ami_id}" \ -var 'username=openshift' \ -var 'password=openshift' \ - -var "name_tag=ODS Box $(date)" \ + -var "name_tag=Base VM Box $(date)" \ -var "ods_branch=${ods_branch}" \ -var "instance_type=${instance_type}" \ -var "pub_key=${pub_key}" \ - ods-devenv/packer/BaseVM2ODSBox.json + ods-devenv/packer/CentOS2BaseVM.json fi } -####################################### -# creates an Base VM image for AWS EC2 -# Globals: -# aws_access_key -# aws_secret_key -# ods_branch -# instance_type -####################################### -function create_base_vm_ami() { +function create_ods_box_from_base_vm_ami() { + + echo "Running create_ods_box_from_base_vm_ami!" + + aws ec2 describe-images \ + --owners 275438041116 \ + --filters "Name=name,Values=Base VM Setup ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ + --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId' + local ami_id ami_id=$(aws ec2 describe-images \ --owners 275438041116 \ - --filters "Name=name,Values=import-ami-*" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=CentOS*" \ + --filters "Name=name,Values=Base VM Setup ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') echo "ami-id=${ami_id}" @@ -321,6 +304,7 @@ function create_base_vm_ami() { echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" echo "ods_branch=${ods_branch}" + echo "instance_type=${instance_type}" if [[ "$ami_id" == "null" ]] then @@ -356,11 +340,11 @@ function create_base_vm_ami() { -var "ami_id=${ami_id}" \ -var 'username=openshift' \ -var 'password=openshift' \ - -var "name_tag=Base VM Box $(date)" \ + -var "name_tag=NG-CI ODS Box $(date)" \ -var "ods_branch=${ods_branch}" \ -var "instance_type=${instance_type}" \ -var "pub_key=${pub_key}" \ - ods-devenv/packer/CentOS2BaseVM.json + ods-devenv/packer/BaseVM2ODSBox.json fi } diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 02d8198eb..79fe09b47 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1792,6 +1792,56 @@ function run_smoke_tests() { oc delete project unitt-cd unitt-dev unitt-test } +function run_ods_smoke_tests() { + + echo "Running ods smoke test..." + + oc get is -n "${NAMESPACE}" + export GITHUB_WORKSPACE="${HOME}/opendevstack" + + pushd tests + export PROVISION_API_HOST=https://prov-app-ods.ocp.odsbox.lan + time make test + popd + git reset --hard + + echo "...done with ods smoke test!" +} + +function run_qs_smoke_tests() { + + echo "Running qs smoke test..." + + oc get is -n "${NAMESPACE}" + export GITHUB_WORKSPACE="${HOME}/opendevstack" + + pushd tests + export PROVISION_API_HOST=https://prov-app-ods.ocp.odsbox.lan + popd + git reset --hard + + # buying extra time for the quickstarter tests + # restart_atlassian_suite + echo -n "Waiting for bitbucket to become available" + until [[ $(docker inspect --format '{{.State.Health.Status}}' ${atlassian_bitbucket_container_name}) == 'healthy' ]] + do + echo -n "." + sleep 1 + done + echo "bitbucket up and running." + + echo "running quickstarter tests" + pushd tests + time make test-quickstarter + popd + + # clean up after tests + oc delete project unitt-cd unitt-dev unitt-test + + echo "...done with qs smoke test!" + +} + function startup_atlassian_stack() { # for machines derived from legacy images and login-shells that do not source .bashrc export GOPROXY="https://goproxy.io,direct" @@ -2019,10 +2069,11 @@ function ods_setup() { setup_jenkins_agents - run_smoke_tests + run_ods_smoke_tests + setup_ods_crontab - echo "Installation completed." + echo "ODS Installation completed." echo "Now start a new terminal session or run:" echo "source /etc/bash_completion.d/oc" } From 6fb7a6a2c57552ea00cd95c13318b296e3e7d92d Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 11 Mar 2021 15:50:33 +0100 Subject: [PATCH 015/217] renames phase name of phases-based ci --- .../{BaseVM2ODSBox.json => BaseOCVM2ODSBox.json} | 2 +- .../{CentOS2BaseVM.json => CentOS2BaseOCVM.json} | 2 +- ods-devenv/packer/create_ods_box_image.sh | 8 ++++---- ...s-vm.sh => bootstrap-base-oc-atlassian-vm.sh} | 2 +- ...on-base-vm.sh => bootstrap-ods-on-base-oc.sh} | 0 ods-devenv/scripts/deploy.sh | 16 +++++++++++++--- 6 files changed, 20 insertions(+), 10 deletions(-) rename ods-devenv/packer/{BaseVM2ODSBox.json => BaseOCVM2ODSBox.json} (99%) rename ods-devenv/packer/{CentOS2BaseVM.json => CentOS2BaseOCVM.json} (96%) rename ods-devenv/scripts/{bootstrap-plain-ods-vm.sh => bootstrap-base-oc-atlassian-vm.sh} (96%) rename ods-devenv/scripts/{bootstrap-ods-on-base-vm.sh => bootstrap-ods-on-base-oc.sh} (100%) diff --git a/ods-devenv/packer/BaseVM2ODSBox.json b/ods-devenv/packer/BaseOCVM2ODSBox.json similarity index 99% rename from ods-devenv/packer/BaseVM2ODSBox.json rename to ods-devenv/packer/BaseOCVM2ODSBox.json index da8a2280f..1be704369 100644 --- a/ods-devenv/packer/BaseVM2ODSBox.json +++ b/ods-devenv/packer/BaseOCVM2ODSBox.json @@ -70,7 +70,7 @@ }, { "type": "shell", - "script": "ods-devenv/scripts/bootstrap-ods-on-base-vm.sh", + "script": "ods-devenv/scripts/bootstrap-ods-on-base-oc.sh", "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" }, { diff --git a/ods-devenv/packer/CentOS2BaseVM.json b/ods-devenv/packer/CentOS2BaseOCVM.json similarity index 96% rename from ods-devenv/packer/CentOS2BaseVM.json rename to ods-devenv/packer/CentOS2BaseOCVM.json index 65fbf89de..d884d0a47 100644 --- a/ods-devenv/packer/CentOS2BaseVM.json +++ b/ods-devenv/packer/CentOS2BaseOCVM.json @@ -55,7 +55,7 @@ }, { "type": "shell", - "script": "ods-devenv/scripts/bootstrap-plain-ods-vm.sh", + "script": "ods-devenv/scripts/bootstrap-base-oc-atlassian-vm.sh", "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" }, { diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index edd12baf0..2cc8bc686 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -229,7 +229,7 @@ function create_ods_box_ami() { fi } -function create_base_vm_ami() { +function create_base_oc_vm_ami() { local ami_id ami_id=$(aws ec2 describe-images \ --owners 275438041116 \ @@ -280,11 +280,11 @@ function create_base_vm_ami() { -var "ods_branch=${ods_branch}" \ -var "instance_type=${instance_type}" \ -var "pub_key=${pub_key}" \ - ods-devenv/packer/CentOS2BaseVM.json + ods-devenv/packer/CentOS2BaseOCVM.json fi } -function create_ods_box_from_base_vm_ami() { +function create_ods_box_from_base_oc_vm_ami() { echo "Running create_ods_box_from_base_vm_ami!" @@ -344,7 +344,7 @@ function create_ods_box_from_base_vm_ami() { -var "ods_branch=${ods_branch}" \ -var "instance_type=${instance_type}" \ -var "pub_key=${pub_key}" \ - ods-devenv/packer/BaseVM2ODSBox.json + ods-devenv/packer/BaseOCVM2ODSBox.json fi } diff --git a/ods-devenv/scripts/bootstrap-plain-ods-vm.sh b/ods-devenv/scripts/bootstrap-base-oc-atlassian-vm.sh similarity index 96% rename from ods-devenv/scripts/bootstrap-plain-ods-vm.sh rename to ods-devenv/scripts/bootstrap-base-oc-atlassian-vm.sh index 8dd487960..71f691bc2 100755 --- a/ods-devenv/scripts/bootstrap-plain-ods-vm.sh +++ b/ods-devenv/scripts/bootstrap-base-oc-atlassian-vm.sh @@ -28,4 +28,4 @@ chmod u+x ./repos.sh ./repos.sh --git-ref "${ods_git_ref}" --verbose cd ods-core -time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target base_vm_setup +time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target base_oc_atlasssian_vm_setup diff --git a/ods-devenv/scripts/bootstrap-ods-on-base-vm.sh b/ods-devenv/scripts/bootstrap-ods-on-base-oc.sh similarity index 100% rename from ods-devenv/scripts/bootstrap-ods-on-base-vm.sh rename to ods-devenv/scripts/bootstrap-ods-on-base-oc.sh diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 79fe09b47..d9a1cafd5 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1813,11 +1813,11 @@ function run_qs_smoke_tests() { echo "Running qs smoke test..." oc get is -n "${NAMESPACE}" + export GITHUB_WORKSPACE="${HOME}/opendevstack" - pushd tests export PROVISION_API_HOST=https://prov-app-ods.ocp.odsbox.lan - popd + git reset --hard # buying extra time for the quickstarter tests @@ -2006,7 +2006,7 @@ function basic_vm_setup() { echo "source /etc/bash_completion.d/oc" } -function base_vm_setup() { +function base_oc_atlasssian_vm_setup() { check_system_setup setup_rdp setup_dnsmasq @@ -2078,6 +2078,16 @@ function ods_setup() { echo "source /etc/bash_completion.d/oc" } +function ci_run_ods_smoke_tests() { + + echo "Running ci qs smoke test..." + + run_qs_smoke_tests + + echo "...done with ci qs smoke test!" + +} + while [[ "$#" -gt 0 ]]; do case $1 in From bf0df0a1425ff94fa3f529ae7257599ec17f0bd1 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 14 May 2021 15:25:33 +0200 Subject: [PATCH 016/217] adds CI stage that runs qs test --- ods-devenv/packer/ODSBox4QSTest.json | 56 ++++++++++++++++ ods-devenv/packer/create_ods_box_image.sh | 64 +++++++++++++++++++ .../scripts/bootstrap-ods-and-run-qs-test.sh | 31 +++++++++ ods-devenv/scripts/deploy.sh | 18 +++--- 4 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 ods-devenv/packer/ODSBox4QSTest.json create mode 100755 ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh diff --git a/ods-devenv/packer/ODSBox4QSTest.json b/ods-devenv/packer/ODSBox4QSTest.json new file mode 100644 index 000000000..3d636cecf --- /dev/null +++ b/ods-devenv/packer/ODSBox4QSTest.json @@ -0,0 +1,56 @@ +{ + "variables": { + "aws_access_key": "", + "aws_secret_key": "", + "pub_key": "" + }, + "builders": [ + { + "type": "amazon-ebs", + "access_key": "{{user `aws_access_key`}}", + "secret_key": "{{user `aws_secret_key`}}", + "region": "eu-west-1", + "source_ami_filter": { + "filters": { + "image-id": "{{user `ami_id`}}" + }, + "owners": "275438041116" + }, + "instance_type": "{{user `instance_type`}}", + "ssh_username": "{{user `username`}}", + "ssh_password": "{{user `password`}}", + "ami_name": "NG-CI ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", + "run_tags": { + "Name": "NG-CI ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" + }, + "tags": { + "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" + } + } + ], + "provisioners": [ + { + "type": "shell", + "script": "ods-devenv/packer/pwd_less_sudo.sh", + "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" + }, + { + "type": "shell", + "script": "startup_ods.sh" + }, + { + "type": "shell", + "script": "ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh", + "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" + }, + { + "type": "shell", + "script": "stop_ods.sh" + }, + { + "type": "shell", + "script": "ods-devenv/packer/pwd_sudo.sh", + "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" + } + ] +} diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 2cc8bc686..6052acef4 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -348,5 +348,69 @@ function create_ods_box_from_base_oc_vm_ami() { fi } +function create_ods_box_for_qs_test_ami() { + + echo "Running create_ods_box_for_qs_test_ami!" + + aws ec2 describe-images \ + --owners 275438041116 \ + --filters "Name=name,Values=NG-CI ODS Box ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ + --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId' + + local ami_id + ami_id=$(aws ec2 describe-images \ + --owners 275438041116 \ + --filters "Name=name,Values=NG-CI ODS Box ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ + --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') + + echo "ami-id=${ami_id}" + echo "PACKER_LOG=${PACKER_LOG}" + echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" + echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" + echo "ods_branch=${ods_branch}" + echo "instance_type=${instance_type}" + + if [[ "$ami_id" == "null" ]] + then + echo "No ami-id was found! [ami-id=${ami_id}]"; + exit 1 + fi + + if [[ "${dryrun}" == "true" ]] + then + echo -n "dryrun" + local counter=0 + while (( counter <= 10 )) + do + sleep 1 + counter=$((counter + 1)) + echo -n '.' + done + echo "done." + exit 0 + else + if [[ -z ${pub_key:=""} ]]; then + pub_key="not-valid.pub" + echo "A public key was not provided... creating not-valid.pub file ($pub_key) as placeholder!" + echo "#define the pub_key parameter to be able to include your public key" > $pub_key + pwd + cat $pub_key + echo "... done: created placeholder not-valid.pub file ($pub_key)!" + fi + + time packer build -on-error=ask \ + -var "aws_access_key=${aws_access_key}" \ + -var "aws_secret_key=${aws_secret_key}" \ + -var "ami_id=${ami_id}" \ + -var 'username=openshift' \ + -var 'password=openshift' \ + -var "name_tag=NG-CI QS-Tested ODS Box $(date)" \ + -var "ods_branch=${ods_branch}" \ + -var "instance_type=${instance_type}" \ + -var "pub_key=${pub_key}" \ + ods-devenv/packer/ODSBox4QSTest.json + fi +} + target="${target:-display_usage}" ${target} diff --git a/ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh b/ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh new file mode 100755 index 000000000..3a85f54aa --- /dev/null +++ b/ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +set -eux + +#ods_git_ref= +# +#while [[ "$#" -gt 0 ]]; do +# case $1 in +# +# --branch) ods_git_ref="$2"; shift;; +# +#esac; shift; done +# +#ods_git_ref="${ods_git_ref:-master}" +# echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" + +# install modern git version as required by repos.sh +# if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi +# sudo yum update -y +# sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm +# sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm +# sudo yum -y install git + +opendevstack_dir="${HOME}/opendevstack" +#mkdir -p "${opendevstack_dir}" +cd "${opendevstack_dir}" || return +# curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/${ods_git_ref}/scripts/repos.sh +# chmod u+x ./repos.sh +# ./repos.sh --git-ref "${ods_git_ref}" --verbose + +cd ods-core +time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target run_qs_smoke_tests diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index d9a1cafd5..0f4c4f404 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2078,15 +2078,15 @@ function ods_setup() { echo "source /etc/bash_completion.d/oc" } -function ci_run_ods_smoke_tests() { - - echo "Running ci qs smoke test..." - - run_qs_smoke_tests - - echo "...done with ci qs smoke test!" - -} +#function ci_run_ods_smoke_tests() { +# +# echo "Running ci qs smoke test..." +# +# run_qs_smoke_tests +# +# echo "...done with ci qs smoke test!" +# +#} while [[ "$#" -gt 0 ]]; do From 398d8cf8e26f96e9f7712806a6ef31e11542e292 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 14 May 2021 16:58:37 +0200 Subject: [PATCH 017/217] several fixes: start oc and wait, run qs test --- ods-devenv/packer/ODSBox4QSTest.json | 19 +++++++----------- ods-devenv/packer/create_ods_box_image.sh | 4 ++-- .../scripts/bootstrap-ods-and-run-qs-test.sh | 20 +++++++++---------- ods-devenv/scripts/deploy.sh | 16 +++++++-------- 4 files changed, 27 insertions(+), 32 deletions(-) diff --git a/ods-devenv/packer/ODSBox4QSTest.json b/ods-devenv/packer/ODSBox4QSTest.json index 3d636cecf..7d50e816c 100644 --- a/ods-devenv/packer/ODSBox4QSTest.json +++ b/ods-devenv/packer/ODSBox4QSTest.json @@ -31,12 +31,12 @@ "provisioners": [ { "type": "shell", - "script": "ods-devenv/packer/pwd_less_sudo.sh", - "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" - }, - { - "type": "shell", - "script": "startup_ods.sh" + "inline": [ + "echo 'Starting openshift'", + "ls -lart /home/openshift/tmp/*.*", + "ls -lart /usr/local/sbin/*.*", + "/usr/local/sbin/startup_ods.sh" + ] }, { "type": "shell", @@ -45,12 +45,7 @@ }, { "type": "shell", - "script": "stop_ods.sh" - }, - { - "type": "shell", - "script": "ods-devenv/packer/pwd_sudo.sh", - "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" + "script": "ods-devenv/packer/stop_ods.sh" } ] } diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 6052acef4..41ef56183 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -354,13 +354,13 @@ function create_ods_box_for_qs_test_ami() { aws ec2 describe-images \ --owners 275438041116 \ - --filters "Name=name,Values=NG-CI ODS Box ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ + --filters "Name=name,Values=NG-CI ODS iin a Box ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId' local ami_id ami_id=$(aws ec2 describe-images \ --owners 275438041116 \ - --filters "Name=name,Values=NG-CI ODS Box ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ + --filters "Name=name,Values=NG-CI ODS in a Box ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') echo "ami-id=${ami_id}" diff --git a/ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh b/ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh index 3a85f54aa..1a6017453 100755 --- a/ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh +++ b/ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh @@ -1,16 +1,16 @@ #!/usr/bin/env bash set -eux -#ods_git_ref= -# -#while [[ "$#" -gt 0 ]]; do -# case $1 in -# -# --branch) ods_git_ref="$2"; shift;; -# -#esac; shift; done -# -#ods_git_ref="${ods_git_ref:-master}" +ods_git_ref= + +while [[ "$#" -gt 0 ]]; do + case $1 in + + --branch) ods_git_ref="$2"; shift;; + +esac; shift; done + +ods_git_ref="${ods_git_ref:-master}" # echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" # install modern git version as required by repos.sh diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 0f4c4f404..6f99d0570 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1812,14 +1812,6 @@ function run_qs_smoke_tests() { echo "Running qs smoke test..." - oc get is -n "${NAMESPACE}" - - export GITHUB_WORKSPACE="${HOME}/opendevstack" - - export PROVISION_API_HOST=https://prov-app-ods.ocp.odsbox.lan - - git reset --hard - # buying extra time for the quickstarter tests # restart_atlassian_suite echo -n "Waiting for bitbucket to become available" @@ -1830,6 +1822,14 @@ function run_qs_smoke_tests() { done echo "bitbucket up and running." + oc get is -n "${NAMESPACE}" + + export GITHUB_WORKSPACE="${HOME}/opendevstack" + + export PROVISION_API_HOST=https://prov-app-ods.ocp.odsbox.lan + +# git reset --hard + echo "running quickstarter tests" pushd tests time make test-quickstarter From 342c5ce68ea8cd23914fb6eb4fd038cce334cc15 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 15 Jul 2021 08:52:34 +0200 Subject: [PATCH 018/217] install bitbucket after jira --- ods-devenv/scripts/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 6f99d0570..d80a4af0b 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1963,7 +1963,7 @@ function basic_vm_setup() { startup_atlassian_crowd # currently nothing is waiting on Jira to become available, can just run in # the background - startup_atlassian_jira & + startup_atlassian_jira # initialize_atlassian_bitbucketdb startup_and_follow_bitbucket # TODO: push to function From 84a307807a10acb5832e44d3840a0f9a1df289a9 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 15 Jul 2021 12:14:58 +0200 Subject: [PATCH 019/217] adjust permission to bitbucket_data folder to allow access to bitbucket docker container --- ods-devenv/scripts/deploy.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index d80a4af0b..768a1048e 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1152,6 +1152,10 @@ function startup_atlassian_bitbucket() { local + echo "Adding access to bitbucket_data folder" + sudo chmod 777 ${HOME}/bitbucket_data + + echo "Starting bitbucket docker container" docker container run \ --name ${atlassian_bitbucket_container_name} \ --health-cmd '[ -n "$(curl -X GET --user openshift:openshift http://localhost:7990/rest/api/1.0/projects)" ]' \ @@ -1164,13 +1168,23 @@ function startup_atlassian_bitbucket() { ods-bitbucket-docker:latest \ > "${HOME}/tmp/bitbucket_docker_download.log" 2>&1 # reduce noise in log output from docker image download + echo "Executing bash command in bitbucket container" docker container exec bitbucket bash -c "mkdir -p /var/atlassian/application-data/bitbucket/lib; chown bitbucket:bitbucket /var/atlassian/application-data/bitbucket/lib" + + echo "Copy file to bitbucket container" docker container cp "${download_dir}/${db_driver_file}" bitbucket:/var/atlassian/application-data/bitbucket/lib/mysql-connector-java-8.0.20.jar rm -rf "${download_dir}" + + echo "Inspect bitbucket ip" inspect_bitbucket_ip + echo "Atlassian BitBucket is listening on ${atlassian_bitbucket_host}, ${atlassian_bitbucket_ip}:${atlassian_bitbucket_port_internal} and ${public_hostname}:${atlassian_bitbucket_port}" echo -n "Configuring /etc/hosts with bitbucket ip by " register_dns "${atlassian_bitbucket_container_name}" "${atlassian_bitbucket_ip}" + + echo "Is bitbucket running..." + docker ps | grep bitbucket + } ####################################### From fac72bb61be17cedeb111b071643f376d4b2db42 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 15 Jul 2021 12:56:07 +0200 Subject: [PATCH 020/217] adds recursively access to bitbucket_data folder to bitbucket docker container --- ods-devenv/scripts/deploy.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 768a1048e..eb091e66e 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1153,7 +1153,7 @@ function startup_atlassian_bitbucket() { local echo "Adding access to bitbucket_data folder" - sudo chmod 777 ${HOME}/bitbucket_data + sudo chmod -R 777 ${HOME}/bitbucket_data echo "Starting bitbucket docker container" docker container run \ @@ -1977,9 +1977,9 @@ function basic_vm_setup() { startup_atlassian_crowd # currently nothing is waiting on Jira to become available, can just run in # the background - startup_atlassian_jira # initialize_atlassian_bitbucketdb startup_and_follow_bitbucket + startup_atlassian_jira # TODO: push to function sudo systemctl restart dnsmasq @@ -2041,9 +2041,9 @@ function base_oc_atlasssian_vm_setup() { startup_atlassian_crowd # currently nothing is waiting on Jira to become available, can just run in # the background - startup_atlassian_jira & # initialize_atlassian_bitbucketdb startup_and_follow_bitbucket + startup_atlassian_jira # TODO: push to function sudo systemctl restart dnsmasq From 861a41641d067d10ceea5583421ff2a29d2ed222 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 15 Jul 2021 13:36:48 +0200 Subject: [PATCH 021/217] adds more logging --- ods-devenv/scripts/deploy.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index eb091e66e..4993d9c86 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1154,6 +1154,7 @@ function startup_atlassian_bitbucket() { echo "Adding access to bitbucket_data folder" sudo chmod -R 777 ${HOME}/bitbucket_data + ls -la ${HOME}/bitbucket_data echo "Starting bitbucket docker container" docker container run \ @@ -1184,6 +1185,7 @@ function startup_atlassian_bitbucket() { echo "Is bitbucket running..." docker ps | grep bitbucket + ls -la ${HOME}/bitbucket_data } From 730339aeb4ab1b7bb67e41d19131926d018265e7 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 15 Jul 2021 14:57:58 +0200 Subject: [PATCH 022/217] setting bitbucket user as owner of bitbucket_data folder --- ods-devenv/scripts/deploy.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 4993d9c86..7b2c07a7f 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1153,7 +1153,10 @@ function startup_atlassian_bitbucket() { local echo "Adding access to bitbucket_data folder" - sudo chmod -R 777 ${HOME}/bitbucket_data + # 2003 is the user id of bitbucket + sudo chown -R 2003:2003 ${HOME}/bitbucket_data + # sudo chmod -R 777 ${HOME}/bitbucket_data + ls -la ${HOME}/bitbucket_data echo "Starting bitbucket docker container" From 94de764a10f574d72d11b72925a7ca59bb7212c8 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 15 Jul 2021 15:26:18 +0200 Subject: [PATCH 023/217] gives write access to openshift user to bitbucket_data folder --- ods-devenv/scripts/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 7b2c07a7f..2889a7910 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1155,7 +1155,7 @@ function startup_atlassian_bitbucket() { echo "Adding access to bitbucket_data folder" # 2003 is the user id of bitbucket sudo chown -R 2003:2003 ${HOME}/bitbucket_data - # sudo chmod -R 777 ${HOME}/bitbucket_data + sudo chmod -R 777 ${HOME}/bitbucket_data ls -la ${HOME}/bitbucket_data From ea01b2b9cf69baff6b7573f509fb15c01c41f161 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 15 Jul 2021 15:27:02 +0200 Subject: [PATCH 024/217] removes invalid ls command --- ods-devenv/scripts/deploy.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 2889a7910..695e37df4 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1155,9 +1155,7 @@ function startup_atlassian_bitbucket() { echo "Adding access to bitbucket_data folder" # 2003 is the user id of bitbucket sudo chown -R 2003:2003 ${HOME}/bitbucket_data - sudo chmod -R 777 ${HOME}/bitbucket_data - - ls -la ${HOME}/bitbucket_data + # sudo chmod -R 777 ${HOME}/bitbucket_data echo "Starting bitbucket docker container" docker container run \ @@ -1188,7 +1186,6 @@ function startup_atlassian_bitbucket() { echo "Is bitbucket running..." docker ps | grep bitbucket - ls -la ${HOME}/bitbucket_data } From aacb2f18bcdd1cb0cf82c0743d6ed66993f7599f Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 16 Jul 2021 14:18:04 +0200 Subject: [PATCH 025/217] adds permission to jira to the mapped jira data host folder --- ods-devenv/scripts/deploy.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 695e37df4..dc2a28f68 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -851,6 +851,10 @@ function startup_atlassian_jira() { docker image build --build-arg APP_DNS="docker-registry-default.ocp.odsbox.lan" -t ods-jira-docker:latest . popd + echo "Adding access to bitbucket_data folder" + # 2003 is the user id of bitbucket + sudo chown -R 2001:2001 ${HOME}/jira_data + docker container run \ --name ${atlassian_jira_container_name} \ -v "$HOME/jira_data:/var/atlassian/application-data/jira" \ From 4dd49f2e659c56f4322d61e6b8dbe3805849bdec Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Mon, 19 Jul 2021 11:03:36 +0200 Subject: [PATCH 026/217] adds jira availability check --- ods-devenv/scripts/deploy.sh | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index dc2a28f68..4e7601394 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -667,6 +667,17 @@ function startup_and_follow_bitbucket() { echo "bitbucket up and running." } +function startup_and_follow_jira() { + startup_atlassian_jira + echo -n "Waiting for jira to become available" + until [[ "$(docker inspect --format '{{.State.Health.Status}}' ${atlassian_jira_container_name})" == 'healthy' ]] + do + echo -n "." + sleep 1 + done + echo "jira up and running." +} + ####################################### # When Jira and Crowd both are up and running, this function can be used # to configure a Jira directory service against Crowd. @@ -851,8 +862,8 @@ function startup_atlassian_jira() { docker image build --build-arg APP_DNS="docker-registry-default.ocp.odsbox.lan" -t ods-jira-docker:latest . popd - echo "Adding access to bitbucket_data folder" - # 2003 is the user id of bitbucket + echo "Adding access to jira_data folder" + # 2001 is the user id of jira sudo chown -R 2001:2001 ${HOME}/jira_data docker container run \ @@ -2047,12 +2058,18 @@ function base_oc_atlasssian_vm_setup() { startup_atlassian_crowd # currently nothing is waiting on Jira to become available, can just run in # the background + startup_and_follow_jira + # startup_atlassian_jira # initialize_atlassian_bitbucketdb startup_and_follow_bitbucket - startup_atlassian_jira # TODO: push to function sudo systemctl restart dnsmasq + configure_bitbucket2crowd + # TODO wait until BitBucket (and Jira) becomes available + create_empty_ods_repositories + configure_jira2crowd + stop_ods } @@ -2060,10 +2077,10 @@ function ods_setup() { startup_ods - configure_bitbucket2crowd - # TODO wait until BitBucket (and Jira) becomes available - create_empty_ods_repositories - configure_jira2crowd +# configure_bitbucket2crowd +# # TODO wait until BitBucket (and Jira) becomes available +# create_empty_ods_repositories +# configure_jira2crowd create_configuration push_ods_repositories From 3a48831283a2ee89e35dcc1b63dc4537dc150a2b Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Mon, 19 Jul 2021 12:41:22 +0200 Subject: [PATCH 027/217] fixes status check of jira container --- ods-devenv/scripts/deploy.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 4e7601394..64676d1a9 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -669,12 +669,14 @@ function startup_and_follow_bitbucket() { function startup_and_follow_jira() { startup_atlassian_jira + echo echo -n "Waiting for jira to become available" - until [[ "$(docker inspect --format '{{.State.Health.Status}}' ${atlassian_jira_container_name})" == 'healthy' ]] + until [[ "$(docker inspect --format '{{.State.Status}}' ${atlassian_jira_container_name})" == 'running' ]] do echo -n "." sleep 1 done + echo echo "jira up and running." } @@ -866,6 +868,7 @@ function startup_atlassian_jira() { # 2001 is the user id of jira sudo chown -R 2001:2001 ${HOME}/jira_data + echo "Start jira container" docker container run \ --name ${atlassian_jira_container_name} \ -v "$HOME/jira_data:/var/atlassian/application-data/jira" \ From 7a1df3dd5f282b6574c30c15918c67b4f3e527e6 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Mon, 19 Jul 2021 13:05:21 +0200 Subject: [PATCH 028/217] startup and follow jira --- ods-devenv/scripts/deploy.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 64676d1a9..e0785eb42 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1993,13 +1993,11 @@ function basic_vm_setup() { # initialize_atlassian_jiradb and initialize_atlassian_bitbucketdb prepare_atlassian_stack startup_and_follow_atlassian_mysql - # initialize_atlassian_jiradb + startup_atlassian_crowd - # currently nothing is waiting on Jira to become available, can just run in - # the background - # initialize_atlassian_bitbucketdb + startup_and_follow_jira startup_and_follow_bitbucket - startup_atlassian_jira + # TODO: push to function sudo systemctl restart dnsmasq From 3430eda643aff49ffa90eb9780cef445448e2496 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 20 Jul 2021 16:57:21 +0200 Subject: [PATCH 029/217] adds cluster role namespace-labeler and assing it to ods jenkins serviceaccount --- ods-setup/setup-ods-project.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ods-setup/setup-ods-project.sh b/ods-setup/setup-ods-project.sh index 409e342e2..23e41a5a8 100755 --- a/ods-setup/setup-ods-project.sh +++ b/ods-setup/setup-ods-project.sh @@ -69,6 +69,10 @@ if ! oc adm policy add-cluster-role-to-user self-provisioner system:serviceaccou exit 1 fi +# Allow Jenkins serviceaccount to label namespaces +oc create clusterrole namespace-labeler --verb=patch --resource=namespace +oc adm policy add-cluster-role-to-user namespace-labeler system:serviceaccount:${NAMESPACE}:jenkins + # Create cd-user secret cd ${SCRIPT_DIR}/ocp-config/cd-user ${TAILOR} -n ${NAMESPACE} apply ${NON_INTERACTIVE} ${REVEAL_SECRETS} From 5d8bfc9ca965696128e1a6295d36679fc3792ee0 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 14 Sep 2021 12:35:18 +0200 Subject: [PATCH 030/217] PoC migration to jenkins: updates links to build status and log files --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f46ed89af..70bebe729 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ | `master` brach | Other branches | | ------------- | ------------- | -| ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | ![](https://9659ca82cc90.ngrok.io/images/buildStatus_4.x.svg) | -| ![](https://9659ca82cc90.ngrok.io/images/buildStatus_master.svg) | ![](https://9659ca82cc90.ngrok.io/images/buildStatus_3.x.svg) | -| - | ![](https://9659ca82cc90.ngrok.io/images/buildStatus_feature_ods-devenv.svg) +| ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | +| ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | +| - | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-feature_ods_devenv-branch&build=lastBuild) ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. @@ -49,9 +49,11 @@ b) inside the [tests](tests) directory.

The tests can be started with `make 1. [ODS Development Environment / ODS in a box](ods-devenv)
ODS also ships as Amazon AMI - ready to go. The scripts to create the AMI can be found in ods-devenv. These scripts can be used also be used to install a `developer` version of ODS on a plain linux vm. Simply execute [bootstrap.sh](ods-devenv/scripts/bootstrap.sh) -## Current AMI build log (master and 3.x) -[Master branch of current AMI build logs are available here.](https://9659ca82cc90.ngrok.io/images/current_log_master.tar.gz)
-[3.x branch of current AMI build logs are available here.](https://9659ca82cc90.ngrok.io/images/current_log_3.x.tar.gz) +## Current AMI build logs +[Master branch of current AMI build logs are available here.](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-master-branch/lastBuild/console)
+[3.x branch of current AMI build logs are available here.](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-3_x-branch/lastBuild/console) +[4.x branch of current AMI build logs are available here.](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-4_x-branch/lastBuild/console) +[feature/ods-devenv branch of current AMI build logs are available here.](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-feature_ods_devenv-branch/lastBuild/console) Since the log files contain color coding, they are best viewed using a tool supporting color coding, like tail. E.g.: From 64b753fecbf4aaaca0fd963c2f97d987a885220d Mon Sep 17 00:00:00 2001 From: Sebastian Titakis <1012854+stitakis@users.noreply.github.com> Date: Tue, 14 Sep 2021 12:46:03 +0200 Subject: [PATCH 031/217] updates build status table with links to jenkins job status --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 70bebe729..e5dc5e77f 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ # ODS core & infrastructure -| `master` brach | Other branches | +| Build | Status | | ------------- | ------------- | -| ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | -| ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | -| - | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-feature_ods_devenv-branch&build=lastBuild) +| Github CI | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | +| [Master](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-master-branch/lastBuild/console) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | +| [4.x](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-4_x-branch/lastBuild/console) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | +| [3.x](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-3_x-branch/lastBuild/console) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | +| [feature/ods-devenv](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-feature_ods_devenv-branch/lastBuild/console) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-feature_ods_devenv-branch&build=lastBuild) | ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. From 89dc9b0685344b00e4564b7e65cb10aecc57b7f0 Mon Sep 17 00:00:00 2001 From: Sebastian Titakis <1012854+stitakis@users.noreply.github.com> Date: Tue, 14 Sep 2021 15:48:05 +0200 Subject: [PATCH 032/217] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index e5dc5e77f..c53a60587 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,6 @@ | Github CI | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | | [Master](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-master-branch/lastBuild/console) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | | [4.x](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-4_x-branch/lastBuild/console) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | -| [3.x](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-3_x-branch/lastBuild/console) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | -| [feature/ods-devenv](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-feature_ods_devenv-branch/lastBuild/console) | ![](https://ods-ci.ngrok.io/buildStatus/icon?job=ods-ci%2Fods-build-feature_ods_devenv-branch&build=lastBuild) | ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. @@ -53,9 +51,7 @@ ODS also ships as Amazon AMI - ready to go. The scripts to create the AMI can be ## Current AMI build logs [Master branch of current AMI build logs are available here.](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-master-branch/lastBuild/console)
-[3.x branch of current AMI build logs are available here.](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-3_x-branch/lastBuild/console) [4.x branch of current AMI build logs are available here.](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-4_x-branch/lastBuild/console) -[feature/ods-devenv branch of current AMI build logs are available here.](https://ods-ci.ngrok.io/job/ods-ci/job/ods-build-feature_ods_devenv-branch/lastBuild/console) Since the log files contain color coding, they are best viewed using a tool supporting color coding, like tail. E.g.: From 9db999d6a625138dca394785a19dce0085f3b8d4 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Wed, 22 Sep 2021 16:17:45 +0200 Subject: [PATCH 033/217] removes log of wrong branch name, add assert for undefined var ods_git_ref --- ods-devenv/scripts/deploy.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 796e83844..52c86fc4d 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1424,6 +1424,7 @@ function delete_ods_repositories() { # None ####################################### function push_ods_repositories() { + exit_if_ods_git_ref_is_undefined pwd ./scripts/push-local-repos.sh --bitbucket-url "http://openshift:openshift@${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}" --bitbucket-ods-project OPENDEVSTACK --ods-git-ref "${ods_git_ref}" } @@ -1439,6 +1440,7 @@ function push_ods_repositories() { # None ####################################### function set_shared_library_ref() { + exit_if_ods_git_ref_is_undefined pwd ./scripts/set-shared-library-ref.sh --ods-git-ref "${ods_git_ref}" } @@ -1474,6 +1476,7 @@ function inspect_mysql_ip() { # None ####################################### function create_configuration() { + exit_if_ods_git_ref_is_undefined echo "create configuration" pwd ods-setup/config.sh --verbose --bitbucket "http://openshift:openshift@${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}" @@ -1953,6 +1956,13 @@ function basic_vm_setup() { echo "source /etc/bash_completion.d/oc" } +function exit_if_ods_git_ref_is_undefined() { + if [ -n "${ods_git_ref}" ]; then + echo "error: undefined variable 'ods_git_ref'!" + exit 1 + fi +} + while [[ "$#" -gt 0 ]]; do case $1 in @@ -1967,7 +1977,5 @@ esac; shift; done # bash deployments.sh install_docker # bash is used here to start a subshell in case there is an exit command in a function to not to # kill the parent shell from where the script is getting called. -ods_git_ref="${ods_git_ref:-feature/ods-devenv}" target="${target:-display_usage}" -echo "Will build ods box against git-ref ${ods_git_ref}" ${target} From 6e4f8958f2d5f66d1c3f3d6a922f8861d7ca571c Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 24 Sep 2021 09:54:31 +0200 Subject: [PATCH 034/217] fixes var empty check --- ods-devenv/scripts/deploy.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 52c86fc4d..6074d3654 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1957,8 +1957,8 @@ function basic_vm_setup() { } function exit_if_ods_git_ref_is_undefined() { - if [ -n "${ods_git_ref}" ]; then - echo "error: undefined variable 'ods_git_ref'!" + if [[ -z "${ods_git_ref}" ]]; then + echo "error: empty variable 'ods_git_ref' [ods_git_ref=${ods_git_ref}]!" exit 1 fi } From bdf43933143f0ba0cb3fd2c539c07cf28497e6ef Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 21 Oct 2021 16:00:37 +0200 Subject: [PATCH 035/217] installs specific chrome version --- ods-devenv/scripts/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 6074d3654..de1d04cb0 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -374,7 +374,7 @@ EOF function setup_google_chrome() { if [[ -z $(command -v google-chrome) ]] then - curl -LO https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm + curl -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-94.0.4606.81-1.x86_64.rpm sudo yum install -y ./google-chrome-stable_current_*.rpm rm ./google-chrome-stable_current_*.rpm fi From 4e4a8d9665c06acffa6dfdd2fe5e14f79b6fcaed Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 21 Oct 2021 18:39:20 +0200 Subject: [PATCH 036/217] fixes installation specific chrome version --- ods-devenv/scripts/deploy.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index de1d04cb0..9a918b990 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -374,9 +374,11 @@ EOF function setup_google_chrome() { if [[ -z $(command -v google-chrome) ]] then + echo "Download and installing chrome (google-chrome-stable-94.0.4606.81-1.x86_64.rpm)!" curl -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-94.0.4606.81-1.x86_64.rpm - sudo yum install -y ./google-chrome-stable_current_*.rpm + sudo yum install -y ./google-chrome-stable-94.0.4606.81-1.x86_64.rpm rm ./google-chrome-stable_current_*.rpm + echo "... chrome installation completed!" fi } From cfc9d9ef4a43e27aedcedfc9a099fb5a5897840a Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 21 Oct 2021 18:56:51 +0200 Subject: [PATCH 037/217] removes chrome package after installation --- ods-devenv/scripts/deploy.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 9a918b990..d4a4a456f 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -373,11 +373,14 @@ EOF ####################################### function setup_google_chrome() { if [[ -z $(command -v google-chrome) ]] + + chrome_version=94.0.4606.81 + then - echo "Download and installing chrome (google-chrome-stable-94.0.4606.81-1.x86_64.rpm)!" - curl -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-94.0.4606.81-1.x86_64.rpm - sudo yum install -y ./google-chrome-stable-94.0.4606.81-1.x86_64.rpm - rm ./google-chrome-stable_current_*.rpm + echo "Download and install chrome (google-chrome-stable-${chrome_version}-1.x86_64.rpm)!" + curl -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-${chrome_version}-1.x86_64.rpm + sudo yum install -y ./google-chrome-stable-${chrome_version}-1.x86_64.rpm + rm ./google-chrome-stable-${chrome_version}-1.x86_64.rpm echo "... chrome installation completed!" fi } From b7508e8ab639775f4be65c409261def280251c54 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 26 Oct 2021 15:34:49 +0200 Subject: [PATCH 038/217] points build status links to new url --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4565a98de..71dbabb08 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # ODS core & infrastructure -| `master` branch | other branches | +| `master` brach | Other branches | | ------------- | ------------- | -| ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | ![](https://9659ca82cc90.ngrok.io/images/buildStatus_4.x.svg)
[latest build logs](https://9659ca82cc90.ngrok.io/images/current_log_4.x.tar.gz) | -| ![](https://9659ca82cc90.ngrok.io/images/buildStatus_master.svg)
[latest build logs](https://9659ca82cc90.ngrok.io/images/current_log_master.tar.gz) | ![](https://9659ca82cc90.ngrok.io/images/buildStatus_3.x.svg)
[latest build logs](https://9659ca82cc90.ngrok.io/images/current_log_3.x.tar.gz)| -| - | ![](https://9659ca82cc90.ngrok.io/images/buildStatus_feature_ods-devenv.svg) +| ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | +| ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | +| - | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-feature_ods_devenv-branch&build=lastBuild) ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. From 73d7d2d877d16c257d1868258d1a25a8abc03deb Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 26 Oct 2021 16:33:06 +0200 Subject: [PATCH 039/217] updates table with CI build status --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 71dbabb08..86c221399 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # ODS core & infrastructure -| `master` brach | Other branches | +| branch | status | | ------------- | ------------- | -| ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | -| ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | -| - | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-feature_ods_devenv-branch&build=lastBuild) +| master | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | +| 4.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | +| 3.x | ![3.x](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. From 3ed510f7022722b172e5a0bc0daa612de1a73207 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 26 Oct 2021 16:34:15 +0200 Subject: [PATCH 040/217] updates table with CI build status --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 86c221399..28cebbf1a 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # ODS core & infrastructure -| branch | status | -| ------------- | ------------- | -| master | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | -| 4.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | -| 3.x | ![3.x](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | +| branch | E2E test status | CI test status | +| ------------- | ------------- | ------------- | +| master | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | +| 4.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | | +| 3.x | ![3.x](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | | ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. From 33a4216f4408646ebaec65228df8074970cc284c Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 26 Oct 2021 16:36:08 +0200 Subject: [PATCH 041/217] updates table with CI build status --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 28cebbf1a..4cfc702be 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ | branch | E2E test status | CI test status | | ------------- | ------------- | ------------- | | master | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | -| 4.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | | -| 3.x | ![3.x](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | | +| 4.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=4.x) | +| 3.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=3.x) | ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. From ec462ea63c3ee731ef49558c20f7fe238b873d3a Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 26 Oct 2021 17:54:49 +0200 Subject: [PATCH 042/217] improves link --- README.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/README.md b/README.md index 4cfc702be..ea7bb83b5 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ | branch | E2E test status | CI test status | | ------------- | ------------- | ------------- | -| master | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | +| master | ![https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | | 4.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=4.x) | | 3.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=3.x) | @@ -48,12 +48,3 @@ b) inside the [tests](tests) directory.

The tests can be started with `make 1. [ODS Development Environment / ODS in a box](ods-devenv)
ODS also ships as Amazon AMI - ready to go. The scripts to create the AMI can be found in ods-devenv. These scripts can be used also be used to install a `developer` version of ODS on a plain linux vm. Simply execute [bootstrap.sh](ods-devenv/scripts/bootstrap.sh) - -## Current AMI build logs -the log files contain color coding, they are best viewed using a tool supporting color coding, like tail. E.g.: - - -``` -# after untaring view the log file 'current' like so: -tail -fn +1 current -``` From 53c9c90758ca5789f28a8ffa8b996bc6d701f123 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 26 Oct 2021 18:00:36 +0200 Subject: [PATCH 043/217] add link to the log files --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ea7bb83b5..528f30d45 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ | branch | E2E test status | CI test status | | ------------- | ------------- | ------------- | -| master | ![https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | -| 4.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=4.x) | -| 3.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=3.x) | +| []| ![https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) [logs](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText) | +| 4.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=4.x) [logs]((https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText) [logs](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-4_x-branch/lastBuild/consoleText) | +| 3.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=3.x) [logs](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-3_x-branch/lastBuild/consoleText) | ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. From b33b7c2b21872aec8b544acf6c10f84344c4f7f4 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 26 Oct 2021 18:03:56 +0200 Subject: [PATCH 044/217] imporves link to the log files --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 528f30d45..08fcc0a59 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ | branch | E2E test status | CI test status | | ------------- | ------------- | ------------- | -| []| ![https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) [logs](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText) | -| 4.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=4.x) [logs]((https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText) [logs](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-4_x-branch/lastBuild/consoleText) | -| 3.x | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=3.x) [logs](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-3_x-branch/lastBuild/consoleText) | +| [master](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | +| [4.x](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-4_x-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=4.x) | +| [3.x](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-3_x-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=3.x) | ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. From 672edc678a0a0d622f250a305e82c4e8e0138877 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 5 Nov 2021 14:45:56 +0100 Subject: [PATCH 045/217] adds build commit and message to build status in README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 08fcc0a59..16ebdc790 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,10 @@ | branch | E2E test status | CI test status | | ------------- | ------------- | ------------- | -| [master](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | -| [4.x](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-4_x-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=4.x) | -| [3.x](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-3_x-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastBuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=3.x) | +| [master](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastCompleted&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | +| [4.x](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-4_x-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastCompleted&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=4.x) | +| [3.x](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-3_x-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastCompleted&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=3.x) | +| [feature/ods-devenv](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-feature_ods_devenv-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-feature_ods_devenv-branch&build=lastCompleted&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=feature/ods-devenv) | ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. From 89f0eca21a1e1e44917cb0fd38b7eb3db7b6a8c7 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Mon, 8 Nov 2021 09:54:14 +0100 Subject: [PATCH 046/217] shows status of last build and last successful build --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 16ebdc790..21f2a6a4d 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # ODS core & infrastructure -| branch | E2E test status | CI test status | -| ------------- | ------------- | ------------- | -| [master](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastCompleted&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | -| [4.x](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-4_x-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastCompleted&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=4.x) | -| [3.x](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-3_x-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastCompleted&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=3.x) | -| [feature/ods-devenv](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-feature_ods_devenv-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-feature_ods_devenv-branch&build=lastCompleted&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=feature/ods-devenv) | +| branch | Last E2E test status | Last Successful E2E test status | CI test status | +| ------------- | ------------- | -------------- | -------------- | +| [master](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-master-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastCompleted&config=odsbuild) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-master-branch&build=lastSuccessful&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=master) | +| [4.x](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-4_x-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastCompleted&config=odsbuild) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-4_x-branch&build=lastSuccessful&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=4.x) | +| [3.x](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-3_x-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastCompleted&config=odsbuild) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-3_x-branch&build=lastSuccessful&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=3.x) | +| [feature/ods-devenv](https://ods-ci.apps.bix-digital.com/job/ods-ci/job/ods-build-feature_ods_devenv-branch/lastBuild/consoleText) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-feature_ods_devenv-branch&build=lastCompletedSuccessful&config=odsbuild) | ![](https://ods-ci.apps.bix-digital.com/buildStatus/icon?job=ods-ci%2Fods-build-feature_ods_devenv-branch&build=lastSuccessful&config=odsbuild) | ![](https://github.com/opendevstack/ods-core/workflows/Continous%20Integration%20Tests/badge.svg?branch=feature/ods-devenv) | ## Introduction OpenDevStack (ODS) Core houses all the central infrastructure components. From 142337c3638fc7b0285cd6b13f17ce7b6152b03d Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Mon, 8 Nov 2021 11:54:47 +0100 Subject: [PATCH 047/217] removes public publishing of AMI --- ods-devenv/packer/CentOS2ODSBox.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index 495d849b8..76ef1b34b 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -20,9 +20,6 @@ "ssh_username": "{{user `username`}}", "ssh_password": "{{user `password`}}", "ami_name": "ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", - "ami_groups": [ - "all" - ], "run_tags": { "Name": "ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" }, From 22189a0cc9a5f4d87f7b7d6ce211fd5b9870f81e Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Mon, 15 Nov 2021 09:02:47 +0100 Subject: [PATCH 048/217] adds latest changes from master --- ods-devenv/scripts/deploy.sh | 72 +++++++++++++++++++++++++++++++----- 1 file changed, 63 insertions(+), 9 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 6f99d0570..5014824be 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -112,7 +112,8 @@ function check_system_setup() { sudo yum remove -y git* fi - sudo yum update -y + # remove full update /cut 20210901 + # sudo yum update -y sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm sudo yum -y install firewalld git2u-all glances golang jq tree go get github.com/ericchiang/pup @@ -367,10 +368,15 @@ EOF ####################################### function setup_google_chrome() { if [[ -z $(command -v google-chrome) ]] + + chrome_version=94.0.4606.81 + then - curl -LO https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm - sudo yum install -y ./google-chrome-stable_current_*.rpm - rm ./google-chrome-stable_current_*.rpm + echo "Download and install chrome (google-chrome-stable-${chrome_version}-1.x86_64.rpm)!" + curl -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-${chrome_version}-1.x86_64.rpm + sudo yum install -y ./google-chrome-stable-${chrome_version}-1.x86_64.rpm + rm ./google-chrome-stable-${chrome_version}-1.x86_64.rpm + echo "... chrome installation completed!" fi } @@ -667,6 +673,19 @@ function startup_and_follow_bitbucket() { echo "bitbucket up and running." } +function startup_and_follow_jira() { + startup_atlassian_jira + echo + echo -n "Waiting for jira to become available" + until [[ "$(docker inspect --format '{{.State.Status}}' ${atlassian_jira_container_name})" == 'running' ]] + do + echo -n "." + sleep 1 + done + echo + echo "jira up and running." +} + ####################################### # When Jira and Crowd both are up and running, this function can be used # to configure a Jira directory service against Crowd. @@ -851,6 +870,10 @@ function startup_atlassian_jira() { docker image build --build-arg APP_DNS="docker-registry-default.ocp.odsbox.lan" -t ods-jira-docker:latest . popd + echo "Assigning ownership of jira_data folder to jira user (id 2001)" + sudo chown -R 2001:2001 ${HOME}/jira_data + + echo "Start jira container" docker container run \ --name ${atlassian_jira_container_name} \ -v "$HOME/jira_data:/var/atlassian/application-data/jira" \ @@ -1152,6 +1175,10 @@ function startup_atlassian_bitbucket() { local + echo "Assigning ownership of bitbucket_data folder to bitbucket user (id 2003)" + sudo chown -R 2003:2003 ${HOME}/bitbucket_data + + echo "Starting bitbucket docker container" docker container run \ --name ${atlassian_bitbucket_container_name} \ --health-cmd '[ -n "$(curl -X GET --user openshift:openshift http://localhost:7990/rest/api/1.0/projects)" ]' \ @@ -1164,10 +1191,15 @@ function startup_atlassian_bitbucket() { ods-bitbucket-docker:latest \ > "${HOME}/tmp/bitbucket_docker_download.log" 2>&1 # reduce noise in log output from docker image download + echo "Executing bash command in bitbucket container" docker container exec bitbucket bash -c "mkdir -p /var/atlassian/application-data/bitbucket/lib; chown bitbucket:bitbucket /var/atlassian/application-data/bitbucket/lib" + + echo "Copy file to bitbucket container" docker container cp "${download_dir}/${db_driver_file}" bitbucket:/var/atlassian/application-data/bitbucket/lib/mysql-connector-java-8.0.20.jar rm -rf "${download_dir}" + inspect_bitbucket_ip + echo "Atlassian BitBucket is listening on ${atlassian_bitbucket_host}, ${atlassian_bitbucket_ip}:${atlassian_bitbucket_port_internal} and ${public_hostname}:${atlassian_bitbucket_port}" echo -n "Configuring /etc/hosts with bitbucket ip by " register_dns "${atlassian_bitbucket_container_name}" "${atlassian_bitbucket_ip}" @@ -1392,6 +1424,7 @@ function delete_ods_repositories() { # None ####################################### function push_ods_repositories() { + exit_if_ods_git_ref_is_undefined pwd ./scripts/push-local-repos.sh --bitbucket-url "http://openshift:openshift@${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}" --bitbucket-ods-project OPENDEVSTACK --ods-git-ref "${ods_git_ref}" } @@ -1407,6 +1440,7 @@ function push_ods_repositories() { # None ####################################### function set_shared_library_ref() { + exit_if_ods_git_ref_is_undefined pwd ./scripts/set-shared-library-ref.sh --ods-git-ref "${ods_git_ref}" } @@ -1442,6 +1476,7 @@ function inspect_mysql_ip() { # None ####################################### function create_configuration() { + exit_if_ods_git_ref_is_undefined echo "create configuration" pwd ods-setup/config.sh --verbose --bitbucket "http://openshift:openshift@${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}" @@ -1506,6 +1541,15 @@ function create_configuration() { sed -i "s|OPENSHIFT_CONSOLE_HOST=.*$|OPENSHIFT_CONSOLE_HOST=https://ocp.${odsbox_domain}:8443|" ods-core.env sed -i "s|OPENSHIFT_APPS_BASEDOMAIN=.*$|OPENSHIFT_APPS_BASEDOMAIN=.ocp.${odsbox_domain}|" ods-core.env + # Aqua + sed -i "s|AQUA_ENABLED=.*$|AQUA_ENABLED=false|" ods-core.env + sed -i "s|AQUA_REGISTRY=.*$|AQUA_REGISTRY=internal|" ods-core.env + sed -i "s|AQUA_URL=.*$|AQUA_URL=http://aqua-web.aqua.svc.cluster.local:8080|" ods-core.env + sed -i "s|AQUA_SECRET_NAME=.*$|AQUA_SECRET_NAME=aqua-user-with-password|" ods-core.env + sed -i "s|AQUA_ALERT_EMAILS=.*$|AQUA_ALERT_EMAILS=mail@test.com|" ods-core.env + sed -i "s|AQUA_NEXUS_REPOSITORY=.*$|AQUA_NEXUS_REPOSITORY=leva-documentation|" ods-core.env + + git add -- . git commit -m "updated config for EDP box" git push @@ -1932,6 +1976,9 @@ function stop_ods() { oc cluster down } +function setup_aqua() { + oc create configmap aqua --from-literal=registry=${aqua_registry} --from-literal=secretName=${aqua_secret_name} --from-literal=url=${aqua_url} --from-literal=nexusRepository=${aqua_nexus_repository} --from-literal=enabled=${aqua_enabled} -n ods +} ####################################### # this utility function will call some functions in a meaningful order # to prep a fresh CentOS box for EDP/ODS installation. @@ -1959,13 +2006,11 @@ function basic_vm_setup() { # initialize_atlassian_jiradb and initialize_atlassian_bitbucketdb prepare_atlassian_stack startup_and_follow_atlassian_mysql - # initialize_atlassian_jiradb + startup_atlassian_crowd - # currently nothing is waiting on Jira to become available, can just run in - # the background - startup_atlassian_jira & - # initialize_atlassian_bitbucketdb + startup_and_follow_jira startup_and_follow_bitbucket + # TODO: push to function sudo systemctl restart dnsmasq @@ -1998,6 +2043,7 @@ function basic_vm_setup() { setup_jenkins_agents + setup_aqua run_smoke_tests setup_ods_crontab @@ -2006,6 +2052,13 @@ function basic_vm_setup() { echo "source /etc/bash_completion.d/oc" } +function exit_if_ods_git_ref_is_undefined() { + if [[ -z "${ods_git_ref}" ]]; then + echo "error: empty variable 'ods_git_ref' [ods_git_ref=${ods_git_ref}]!" + exit 1 + fi +} + function base_oc_atlasssian_vm_setup() { check_system_setup setup_rdp @@ -2068,6 +2121,7 @@ function ods_setup() { done setup_jenkins_agents + setup_aqua run_ods_smoke_tests From 67070e6c7274f6635b34e338bfabf0fef6c6c799 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 16 Nov 2021 15:09:17 +0100 Subject: [PATCH 049/217] fixes typo --- ods-devenv/packer/create_ods_box_image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 41ef56183..b27950a6f 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -354,7 +354,7 @@ function create_ods_box_for_qs_test_ami() { aws ec2 describe-images \ --owners 275438041116 \ - --filters "Name=name,Values=NG-CI ODS iin a Box ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ + --filters "Name=name,Values=NG-CI ODS in a Box ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId' local ami_id From a943edc17c047bbfc18d2be219e9933e7afb8433 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 18 Nov 2021 16:15:19 +0100 Subject: [PATCH 050/217] disables encryption of odsbox ebs volume --- ods-devenv/packer/CentOS2ODSBox.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index 76ef1b34b..a243ab77d 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -25,7 +25,9 @@ }, "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" - } + }, + "encrypt_boot" : "false", + "encrypted " : "false" } ], "provisioners": [ From e2b55174389e4fd53b801abdc88c6862ca24c7fa Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 18 Nov 2021 16:38:19 +0100 Subject: [PATCH 051/217] fixes typo --- ods-devenv/packer/CentOS2ODSBox.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index a243ab77d..7ee758450 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -27,7 +27,7 @@ "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" }, "encrypt_boot" : "false", - "encrypted " : "false" + "encrypted" : "false" } ], "provisioners": [ From 796b59bb89192b1672925cd6b54fc08c6c7de865 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 18 Nov 2021 16:47:26 +0100 Subject: [PATCH 052/217] removes invalid packer configuration key --- ods-devenv/packer/CentOS2ODSBox.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index 7ee758450..a455d9537 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -26,8 +26,7 @@ "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" }, - "encrypt_boot" : "false", - "encrypted" : "false" + "encrypt_boot" : "false" } ], "provisioners": [ From ac93d92bdf0335fc01f2b8cbbe3bc738ac09f365 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Thu, 18 Nov 2021 17:20:36 +0100 Subject: [PATCH 053/217] disables encryption in ebs device --- ods-devenv/packer/CentOS2ODSBox.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index a455d9537..87a92de6f 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -26,7 +26,13 @@ "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" }, - "encrypt_boot" : "false" + "encrypt_boot" : "false", + "launch_block_device_mappings": [ + { + "device_name": "/dev/sda1", + "encrypted": false + } + ] } ], "provisioners": [ From b78905f8b02861bc685c732b0a9916a0fa53fa86 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 19 Nov 2021 15:21:31 +0100 Subject: [PATCH 054/217] disables encryption in base oc vm --- ods-devenv/packer/CentOS2BaseOCVM.json | 9 ++++++++- ods-devenv/packer/CentOS2ODSBox.json | 9 +-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ods-devenv/packer/CentOS2BaseOCVM.json b/ods-devenv/packer/CentOS2BaseOCVM.json index d884d0a47..4e7e88778 100644 --- a/ods-devenv/packer/CentOS2BaseOCVM.json +++ b/ods-devenv/packer/CentOS2BaseOCVM.json @@ -25,7 +25,14 @@ }, "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" - } + }, + "encrypt_boot" : "false", + "launch_block_device_mappings": [ + { + "device_name": "/dev/sda1", + "encrypted": false + } + ] } ], "provisioners": [ diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index 87a92de6f..76ef1b34b 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -25,14 +25,7 @@ }, "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" - }, - "encrypt_boot" : "false", - "launch_block_device_mappings": [ - { - "device_name": "/dev/sda1", - "encrypted": false - } - ] + } } ], "provisioners": [ From 1e6cb20368d6f207d1152f98973f5cb792d35426 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 19 Nov 2021 15:43:09 +0100 Subject: [PATCH 055/217] Revert "disables encryption in base oc vm" This reverts commit b78905f8b02861bc685c732b0a9916a0fa53fa86. --- ods-devenv/packer/CentOS2BaseOCVM.json | 9 +-------- ods-devenv/packer/CentOS2ODSBox.json | 9 ++++++++- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ods-devenv/packer/CentOS2BaseOCVM.json b/ods-devenv/packer/CentOS2BaseOCVM.json index 4e7e88778..d884d0a47 100644 --- a/ods-devenv/packer/CentOS2BaseOCVM.json +++ b/ods-devenv/packer/CentOS2BaseOCVM.json @@ -25,14 +25,7 @@ }, "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" - }, - "encrypt_boot" : "false", - "launch_block_device_mappings": [ - { - "device_name": "/dev/sda1", - "encrypted": false - } - ] + } } ], "provisioners": [ diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index 76ef1b34b..87a92de6f 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -25,7 +25,14 @@ }, "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" - } + }, + "encrypt_boot" : "false", + "launch_block_device_mappings": [ + { + "device_name": "/dev/sda1", + "encrypted": false + } + ] } ], "provisioners": [ From f1745382726bb62fabc02ef7224c7b8cf3fc6c14 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 19 Nov 2021 16:29:09 +0100 Subject: [PATCH 056/217] adds aws max attemps for long running packer build --- ods-devenv/packer/create_ods_box_image.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index b27950a6f..9b8b0e3c3 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -215,6 +215,8 @@ function create_ods_box_ami() { echo "... done: created placeholder not-valid.pub file ($pub_key)!" fi + export AWS_MAX_ATTEMPTS=180 + export AWS_POLL_DELAY_SECONDS=60 time packer build -on-error=ask \ -var "aws_access_key=${aws_access_key}" \ -var "aws_secret_key=${aws_secret_key}" \ From e7f3872f94923805d40bd9f5c216af35fbcc9803 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 19 Nov 2021 16:54:19 +0100 Subject: [PATCH 057/217] removes aws max attemps for long running packer build --- ods-devenv/packer/create_ods_box_image.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 9b8b0e3c3..b27950a6f 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -215,8 +215,6 @@ function create_ods_box_ami() { echo "... done: created placeholder not-valid.pub file ($pub_key)!" fi - export AWS_MAX_ATTEMPTS=180 - export AWS_POLL_DELAY_SECONDS=60 time packer build -on-error=ask \ -var "aws_access_key=${aws_access_key}" \ -var "aws_secret_key=${aws_secret_key}" \ From d5761f4f193fa049b8aa06852f77d5a0a416a3f2 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Fri, 19 Nov 2021 17:39:47 +0100 Subject: [PATCH 058/217] trying to fix curl problem --- ods-devenv/scripts/bootstrap-ods-on-base-oc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/bootstrap-ods-on-base-oc.sh b/ods-devenv/scripts/bootstrap-ods-on-base-oc.sh index 90157347f..cd9eb994f 100755 --- a/ods-devenv/scripts/bootstrap-ods-on-base-oc.sh +++ b/ods-devenv/scripts/bootstrap-ods-on-base-oc.sh @@ -23,7 +23,7 @@ echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" opendevstack_dir="${HOME}/opendevstack" mkdir -p "${opendevstack_dir}" cd "${opendevstack_dir}" || return -curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/${ods_git_ref}/scripts/repos.sh +curl -LO "https://raw.githubusercontent.com/opendevstack/ods-core/${ods_git_ref}/scripts/repos.sh" chmod u+x ./repos.sh ./repos.sh --git-ref "${ods_git_ref}" --verbose From 0172d1c7325eb230e4f04454069ce8857e113f6b Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Mon, 10 Jan 2022 09:31:17 +0100 Subject: [PATCH 059/217] fixes ods build: upgrades helm version to 3.5.3 --- jenkins/agent-base/Dockerfile.centos7 | 2 +- jenkins/agent-base/Dockerfile.ubi8 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index 9509dbb31..a3f9bf119 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -5,7 +5,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ CNES_REPORT_VERSION=3.2.2 \ TAILOR_VERSION=1.3.3 \ - HELM_VERSION=3.4.1 \ + HELM_VERSION=3.5.3 \ HELM_PLUGIN_DIFF_VERSION=3.1.3 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ GIT_LFS_VERSION=2.6.1 \ diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index 35b3cd726..f226bb7da 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -5,7 +5,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ CNES_REPORT_VERSION=3.2.2 \ TAILOR_VERSION=1.3.3 \ - HELM_VERSION=3.4.1 \ + HELM_VERSION=3.5.3 \ HELM_PLUGIN_DIFF_VERSION=3.1.3 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ GIT_LFS_VERSION=2.6.1 \ From 1e2415f8080a1e7aea3b54d7488582b579539f72 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Mon, 10 Jan 2022 10:17:39 +0100 Subject: [PATCH 060/217] fixes ods build: upgrade helm-diff to version 3.3.1 --- jenkins/agent-base/Dockerfile.centos7 | 3 ++- jenkins/agent-base/Dockerfile.ubi8 | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index a3f9bf119..3ff66a7d2 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -6,7 +6,7 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ CNES_REPORT_VERSION=3.2.2 \ TAILOR_VERSION=1.3.3 \ HELM_VERSION=3.5.3 \ - HELM_PLUGIN_DIFF_VERSION=3.1.3 \ + HELM_PLUGIN_DIFF_VERSION=3.3.1 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ GIT_LFS_VERSION=2.6.1 \ SKOPEO_VERSION=0.1.37-3 \ @@ -61,6 +61,7 @@ RUN cd /tmp \ && mv /tmp/helm/linux-amd64/helm /usr/local/bin/helm \ && chmod a+x /usr/local/bin/helm \ && helm version \ + && echo "version helm-diff=v${HELM_PLUGIN_DIFF_VERSION}" \ && helm plugin install https://github.com/databus23/helm-diff --version v${HELM_PLUGIN_DIFF_VERSION} \ && helm plugin install https://github.com/jkroepke/helm-secrets --version v${HELM_PLUGIN_SECRETS_VERSION} \ && sops --version \ diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index f226bb7da..513a2dfbe 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -6,7 +6,7 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ CNES_REPORT_VERSION=3.2.2 \ TAILOR_VERSION=1.3.3 \ HELM_VERSION=3.5.3 \ - HELM_PLUGIN_DIFF_VERSION=3.1.3 \ + HELM_PLUGIN_DIFF_VERSION=3.3.1 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ GIT_LFS_VERSION=2.6.1 \ SKOPEO_VERSION=1.2.2-10 \ From 778e7c76ee91093af0e7d341aba58d07c0a0c91b Mon Sep 17 00:00:00 2001 From: brais Date: Wed, 2 Feb 2022 18:09:55 +0100 Subject: [PATCH 061/217] Update mirror update from https://packages.endpoint.com to https://packages.endpointdev.com --- ods-devenv/scripts/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/bootstrap.sh b/ods-devenv/scripts/bootstrap.sh index b885c9761..07fdee696 100755 --- a/ods-devenv/scripts/bootstrap.sh +++ b/ods-devenv/scripts/bootstrap.sh @@ -17,7 +17,7 @@ echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi sudo yum update -y sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm -sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm +sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm sudo yum -y install git opendevstack_dir="${HOME}/opendevstack" From 3313c25bc8a76fd66f4e08dfaf7a528656322096 Mon Sep 17 00:00:00 2001 From: brais Date: Thu, 3 Feb 2022 12:00:27 +0100 Subject: [PATCH 062/217] list yum repos --- ods-devenv/scripts/bootstrap.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ods-devenv/scripts/bootstrap.sh b/ods-devenv/scripts/bootstrap.sh index 07fdee696..c365becf5 100755 --- a/ods-devenv/scripts/bootstrap.sh +++ b/ods-devenv/scripts/bootstrap.sh @@ -18,6 +18,7 @@ if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi sudo yum update -y sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm +sudo yum repolist all sudo yum -y install git opendevstack_dir="${HOME}/opendevstack" From 18f780c6fdaad21dd19499bfbffdc9e39f88e25a Mon Sep 17 00:00:00 2001 From: brais Date: Thu, 3 Feb 2022 12:19:27 +0100 Subject: [PATCH 063/217] update mirror packages.endpointdev to latest --- ods-devenv/scripts/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/bootstrap.sh b/ods-devenv/scripts/bootstrap.sh index c365becf5..16641c388 100755 --- a/ods-devenv/scripts/bootstrap.sh +++ b/ods-devenv/scripts/bootstrap.sh @@ -17,7 +17,7 @@ echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi sudo yum update -y sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm -sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm +sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm sudo yum repolist all sudo yum -y install git From 1378f6c5033c6424a028d6a7bee5473a243a8153 Mon Sep 17 00:00:00 2001 From: "Titakis,Sebastian (BI X) BIX-DE-I" Date: Tue, 8 Mar 2022 15:14:21 +0100 Subject: [PATCH 064/217] disables prov app openshift service by default --- configuration-sample/ods-core.env.sample | 2 +- ods-devenv/scripts/deploy.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configuration-sample/ods-core.env.sample b/configuration-sample/ods-core.env.sample index 7cacead70..a5ee7e3fe 100644 --- a/configuration-sample/ods-core.env.sample +++ b/configuration-sample/ods-core.env.sample @@ -364,7 +364,7 @@ JIRA_PROJECT_TEMPLATE_KEY_NAMES=${project.template.default.key},kanban DEFAULT_OPENSHIFT_PERMISSION_GROUPS= # Enable or disable the openshift service in the provisioning app (values: "true" or "false") -PROV_APP_OPENSHIFT_SERVICE_ENABLED=true +PROV_APP_OPENSHIFT_SERVICE_ENABLED=false # List of additional jira project template configuration # Note: multiline parameters replace is supported... if you need to add multiple lines add as separator "\n". diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index c3e7f47e8..cfe29f843 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1540,7 +1540,7 @@ function create_configuration() { sed -i "s|PROV_APP_CONFLUENCE_ADAPTER_ENABLED=.*$|PROV_APP_CONFLUENCE_ADAPTER_ENABLED=false|" ods-core.env sed -i "s|PROV_APP_AUTH_BASIC_AUTH_ENABLED=.*$|PROV_APP_AUTH_BASIC_AUTH_ENABLED=true|" ods-core.env sed -i "s|PROV_APP_PROVISION_CLEANUP_INCOMPLETE_PROJECTS_ENABLED=.*$|PROV_APP_PROVISION_CLEANUP_INCOMPLETE_PROJECTS_ENABLED=true|" ods-core.env - sed -i "s|PROV_APP_OPENSHIFT_SERVICE_ENABLED=.*$|PROV_APP_OPENSHIFT_SERVICE_ENABLED=true|" ods-core.env + sed -i "s|PROV_APP_OPENSHIFT_SERVICE_ENABLED=.*$|PROV_APP_OPENSHIFT_SERVICE_ENABLED=false|" ods-core.env sed -i "s|OPENSHIFT_API_URL=.*$|OPENSHIFT_API_URL=https://api.odsbox.lan:8443|" ods-core.env # OpenShift From 84492ca885fab267c3a6d29c1f3a2da8af39d31d Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 18 May 2022 11:24:43 +0200 Subject: [PATCH 065/217] Changes ported from task/upgrade-atlassian-stack. --- CHANGELOG.md | 1 + ods-devenv/packer/CentOS2ODSBox.json | 17 +- ods-devenv/packer/create_ods_box_image.sh | 196 +----- ods-devenv/scripts/bootstrap.sh | 26 +- ods-devenv/scripts/create-base-ami-image.sh | 81 +++ ods-devenv/scripts/deploy.sh | 626 +++++++++++--------- 6 files changed, 467 insertions(+), 480 deletions(-) create mode 100755 ods-devenv/scripts/create-base-ami-image.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d1617120..c6777b585 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - Add dependency to docker.service in ods systemd service definition ([1045](https://github.com/opendevstack/ods-core/pull/1045)) - Add support for ods-saas-service quickstarter ([#1033](https://github.com/opendevstack/ods-core/pull/1033)) - ODS AMI build failing due to broken helm diff package ([#1083](https://github.com/opendevstack/ods-core/pull/1083)) +- Needed changes to run CI again, ported from task/upgrade-atlassian-stack. ### Added diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index 87a92de6f..b95703966 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -19,23 +19,24 @@ "instance_type": "{{user `instance_type`}}", "ssh_username": "{{user `username`}}", "ssh_password": "{{user `password`}}", + "ssh_private_key_file": "{{user `ssh_private_key_file_path`}}", "ami_name": "ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", "run_tags": { "Name": "ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" }, "tags": { "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" - }, - "encrypt_boot" : "false", - "launch_block_device_mappings": [ - { - "device_name": "/dev/sda1", - "encrypted": false - } - ] + } } ], "provisioners": [ + { + "type": "shell", + "inline": [ + "echo 'Create folders structure needed ( ~/tmp, ~/bin, ... )... '", + "mkdir -pv ~/tmp ~/bin" + ] + }, { "type": "file", "source": "{{user `pub_key`}}", diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index b27950a6f..8988df020 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -181,6 +181,7 @@ EOF # instance_type ####################################### function create_ods_box_ami() { + echo "Retrieving from AWS latest image with name import-ami-*, root-device-type=ebs and tag Name=CentOS* " local ami_id ami_id=$(aws ec2 describe-images \ --owners 275438041116 \ @@ -207,12 +208,13 @@ function create_ods_box_ami() { exit 0 else if [[ -z ${pub_key:=""} ]]; then - pub_key="not-valid.pub" - echo "A public key was not provided... creating not-valid.pub file ($pub_key) as placeholder!" - echo "#define the pub_key parameter to be able to include your public key" > $pub_key + pub_key="ssh-tmp-key.pub" + ssh_private_key_file_path="./ssh-tmp-key" + echo "A public key was not provided... creating tmp ssh key ($pub_key)..." + ssh-keygen -t rsa -n "openshift@odsbox.lan" -C "openshift@odsbox.lan" -m PEM -P "" -f "${ssh_private_key_file_path}" pwd - cat $pub_key - echo "... done: created placeholder not-valid.pub file ($pub_key)!" + cat + cat ./ssh-tmp-key $pub_key fi time packer build -on-error=ask \ @@ -225,192 +227,10 @@ function create_ods_box_ami() { -var "ods_branch=${ods_branch}" \ -var "instance_type=${instance_type}" \ -var "pub_key=${pub_key}" \ + -var "ssh_private_key_file_path=${ssh_private_key_file_path}" \ ods-devenv/packer/CentOS2ODSBox.json fi } -function create_base_oc_vm_ami() { - local ami_id - ami_id=$(aws ec2 describe-images \ - --owners 275438041116 \ - --filters "Name=name,Values=import-ami-*" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=CentOS*" \ - --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') - - echo "ami-id=${ami_id}" - echo "PACKER_LOG=${PACKER_LOG}" - echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" - echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" - echo "ods_branch=${ods_branch}" - - if [[ "$ami_id" == "null" ]] - then - echo "No ami-id was found! [ami-id=${ami_id}]"; - exit 1 - fi - - if [[ "${dryrun}" == "true" ]] - then - echo -n "dryrun" - local counter=0 - while (( counter <= 10 )) - do - sleep 1 - counter=$((counter + 1)) - echo -n '.' - done - echo "done." - exit 0 - else - if [[ -z ${pub_key:=""} ]]; then - pub_key="not-valid.pub" - echo "A public key was not provided... creating not-valid.pub file ($pub_key) as placeholder!" - echo "#define the pub_key parameter to be able to include your public key" > $pub_key - pwd - cat $pub_key - echo "... done: created placeholder not-valid.pub file ($pub_key)!" - fi - - time packer build -on-error=ask \ - -var "aws_access_key=${aws_access_key}" \ - -var "aws_secret_key=${aws_secret_key}" \ - -var "ami_id=${ami_id}" \ - -var 'username=openshift' \ - -var 'password=openshift' \ - -var "name_tag=Base VM Box $(date)" \ - -var "ods_branch=${ods_branch}" \ - -var "instance_type=${instance_type}" \ - -var "pub_key=${pub_key}" \ - ods-devenv/packer/CentOS2BaseOCVM.json - fi -} - -function create_ods_box_from_base_oc_vm_ami() { - - echo "Running create_ods_box_from_base_vm_ami!" - - aws ec2 describe-images \ - --owners 275438041116 \ - --filters "Name=name,Values=Base VM Setup ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ - --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId' - - local ami_id - ami_id=$(aws ec2 describe-images \ - --owners 275438041116 \ - --filters "Name=name,Values=Base VM Setup ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ - --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') - - echo "ami-id=${ami_id}" - echo "PACKER_LOG=${PACKER_LOG}" - echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" - echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" - echo "ods_branch=${ods_branch}" - echo "instance_type=${instance_type}" - - if [[ "$ami_id" == "null" ]] - then - echo "No ami-id was found! [ami-id=${ami_id}]"; - exit 1 - fi - - if [[ "${dryrun}" == "true" ]] - then - echo -n "dryrun" - local counter=0 - while (( counter <= 10 )) - do - sleep 1 - counter=$((counter + 1)) - echo -n '.' - done - echo "done." - exit 0 - else - if [[ -z ${pub_key:=""} ]]; then - pub_key="not-valid.pub" - echo "A public key was not provided... creating not-valid.pub file ($pub_key) as placeholder!" - echo "#define the pub_key parameter to be able to include your public key" > $pub_key - pwd - cat $pub_key - echo "... done: created placeholder not-valid.pub file ($pub_key)!" - fi - - time packer build -on-error=ask \ - -var "aws_access_key=${aws_access_key}" \ - -var "aws_secret_key=${aws_secret_key}" \ - -var "ami_id=${ami_id}" \ - -var 'username=openshift' \ - -var 'password=openshift' \ - -var "name_tag=NG-CI ODS Box $(date)" \ - -var "ods_branch=${ods_branch}" \ - -var "instance_type=${instance_type}" \ - -var "pub_key=${pub_key}" \ - ods-devenv/packer/BaseOCVM2ODSBox.json - fi -} - -function create_ods_box_for_qs_test_ami() { - - echo "Running create_ods_box_for_qs_test_ami!" - - aws ec2 describe-images \ - --owners 275438041116 \ - --filters "Name=name,Values=NG-CI ODS in a Box ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ - --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId' - - local ami_id - ami_id=$(aws ec2 describe-images \ - --owners 275438041116 \ - --filters "Name=name,Values=NG-CI ODS in a Box ${ods_branch} *" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=${instance_type}*" \ - --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') - - echo "ami-id=${ami_id}" - echo "PACKER_LOG=${PACKER_LOG}" - echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" - echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" - echo "ods_branch=${ods_branch}" - echo "instance_type=${instance_type}" - - if [[ "$ami_id" == "null" ]] - then - echo "No ami-id was found! [ami-id=${ami_id}]"; - exit 1 - fi - - if [[ "${dryrun}" == "true" ]] - then - echo -n "dryrun" - local counter=0 - while (( counter <= 10 )) - do - sleep 1 - counter=$((counter + 1)) - echo -n '.' - done - echo "done." - exit 0 - else - if [[ -z ${pub_key:=""} ]]; then - pub_key="not-valid.pub" - echo "A public key was not provided... creating not-valid.pub file ($pub_key) as placeholder!" - echo "#define the pub_key parameter to be able to include your public key" > $pub_key - pwd - cat $pub_key - echo "... done: created placeholder not-valid.pub file ($pub_key)!" - fi - - time packer build -on-error=ask \ - -var "aws_access_key=${aws_access_key}" \ - -var "aws_secret_key=${aws_secret_key}" \ - -var "ami_id=${ami_id}" \ - -var 'username=openshift' \ - -var 'password=openshift' \ - -var "name_tag=NG-CI QS-Tested ODS Box $(date)" \ - -var "ods_branch=${ods_branch}" \ - -var "instance_type=${instance_type}" \ - -var "pub_key=${pub_key}" \ - ods-devenv/packer/ODSBox4QSTest.json - fi -} - target="${target:-display_usage}" ${target} diff --git a/ods-devenv/scripts/bootstrap.sh b/ods-devenv/scripts/bootstrap.sh index 2c15d208a..a1e0232e7 100755 --- a/ods-devenv/scripts/bootstrap.sh +++ b/ods-devenv/scripts/bootstrap.sh @@ -13,15 +13,31 @@ esac; shift; done ods_git_ref="${ods_git_ref:-master}" echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" +echo "Show current ssh passwords. We need them to connect and debug." +ls -1a ${HOME}/.ssh | grep -v "^\.\.*$" | while read -r file; do echo " "; echo ${file}; echo "----"; cat ${HOME}/.ssh/${file} || true; done + +needsKey=0 +grep -q "openshift@odsbox.lan" ~/.ssh/authorized_keys || needsKey=1 +if [ 1 -eq $needsKey ]; then + echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDXwKT01BaNoSUXaqzrmaM+mRFyx+ERrmVq7v+1Xgtiru+c07l6vaIK6/GE+E/GH4QESB7phl9dLMlmKOXZZqMixa1MD0V0eaFP4YXCaaTGEPyLaNRNhTXert0IihfAucOIzdFGWn1795IshJ7rj/GdQQ0qrAMVYguz4iC+hR1IznuTkJivIvDCuDo5LG+DksisJlGTLpdTZIeCCJgUUFpevJbtcZKwbUqzd6fo0tQiuk/J0TtO4SlXUvDge7mWGxMCIFPTM+e6AFSI6deviiiyhOHzcP9luJQPBpONBXzGcLXMqm1UsYaOl4OsKcyJSk5PgSKBM0KV4RX2Pm3i0vlz7gbvK65sJKQQlBZBm+W16mT3Ke8ytg9I1Kf9/kplKSvSwxOkmClgWCKzxIT7vsozLnSBuPSyTLZ98RuUFhjDvHMFvmGe0oTGaUB0/QQdhROzYRtw7+/CQOzWuZx32B0CtLpd55iyL8261StbY/92B8QDdIQXg9bzsfx6hXSNLlc= openshift@odsbox.lan" >> ${HOME}/.ssh/authorized_keys + sleep 5 + cat ${HOME}/.ssh/authorized_keys +else + echo "Key for openshift@odsbox.lan was previously in file ${HOME}/.ssh/authorized_keys " +fi +chmod -c 700 ${HOME}/.ssh +chmod -c 600 ${HOME}/.ssh/authorized_keys + + # install modern git version as required by repos.sh if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi -sudo yum update -y -sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm -sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm -sudo yum -y install git +sudo yum update -y || true +sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm || true +sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm || true +sudo yum -y install git gitk iproute || true opendevstack_dir="${HOME}/opendevstack" -mkdir -p "${opendevstack_dir}" +mkdir -pv "${opendevstack_dir}" cd "${opendevstack_dir}" || return curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/${ods_git_ref}/scripts/repos.sh chmod u+x ./repos.sh diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh new file mode 100755 index 000000000..5f854e4cf --- /dev/null +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -0,0 +1,81 @@ +#!/usr/bin/env bash + +set -eu + +echo "This script is in charge of configuring the base AMI image we use." +read -p "Continue (y/n) ? " yn +if [ -z "$yn" ] || [ "y" != "$yn" ]; then + echo "Exit" + exit 0 +fi + +sudo yum update -y +sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm +sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm +sudo yum -y install git gitk iproute lsof +curl -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-94.0.4606.81-1.x86_64.rpm +sudo yum install -y google-chrome-stable-94.0.4606.81-1.x86_64.rpm +sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm +sudo yum -y install xrdp tigervnc-server remmina +rm -f google-chrome-stable-94.0.4606.81-1.x86_64.rpm +sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo +sudo yum -y install docker-ce-3:19.03.14-3.el7.x86_64 +sudo yum install -y centos-release-openshift-origin311 +sudo yum install -y origin-clients +sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm + +sudo sed -i "s@.*PasswordAuthentication\ .*@PasswordAuthentication yes@g" /etc/ssh/sshd_config +sudo sed -i "s@.*ChallengeResponseAuthentication\ .*@ChallengeResponseAuthentication yes@g" /etc/ssh/sshd_config +sudo sed -i "s@.*GSSAPIAuthentication\ .*@GSSAPIAuthentication no@g" /etc/ssh/sshd_config +sudo sed -i "s@.*KerberosAuthentication\ .*@KerberosAuthentication no@g" /etc/ssh/sshd_config +sudo systemctl restart sshd +sudo systemctl status sshd + +sudo adduser openshift +echo -e "openshift\nopenshift" | sudo passwd openshift +sudo usermod -a -G wheel openshift +sed -i 's/%wheel\s*ALL=(ALL)\s*ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers + +sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm +sudo yum -y install firewalld git2u-all glances golang jq tree + +sudo usermod -a -G docker openshift + +# etckeeper +sudo yum install -y etckeeper +cd /etc/ +sudo etckeeper init +sudo etckeeper commit -m "Initial commit" + +# GUI: +sudo firewall-cmd --add-port=3389/tcp --permanent +sudo firewall-cmd --add-port=3350/tcp --permanent +sudo firewall-cmd --reload +sudo yum groupinstall -y "MATE Desktop" +sudo systemctl enable xrdp +sudo chcon --type=bin_t /usr/sbin/xrdp +sudo chcon --type=bin_t /usr/sbin/xrdp-sesman +sudo sed -i 's/^\s*ListenAddress=127.0.0.1\s*$/ListenAddress=0.0.0.0/g' /etc/xrdp/sesman.ini + +cat < /tmp/adoptopenjdk.repo +[AdoptOpenJDK] +name=AdoptOpenJDK +baseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/centos/7/$(uname -m) +enabled=1 +gpgcheck=1 +gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public +EOF + +sudo mv /tmp/adoptopenjdk.repo /etc/yum.repos.d/adoptopenjdk.repo + +sudo yum install adoptopenjdk-8-hotspot adoptopenjdk-11-hotspot adoptopenjdk-8-hotspot-jre adoptopenjdk-11-hotspot-jre + +sudo yum -y install firewalld git2u-all glances golang jq tree lsof + + +echo " " +echo " " +echo "Please remember after running all this scripts you need to reboot the AMI image, so users and group changes are loaded." +echo "To do it, run (for example) shutdown -r now " +echo " " +echo " " diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index cfe29f843..dd900dd14 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -9,6 +9,11 @@ atlassian_mysql_ip= atlassian_mysql_port=3306 atlassian_mysql_version=5.7 atlassian_mysql_sql_mode=ANSI_QUOTES + +atlassian_mysql_character_set="utf8mb4" +atlassian_mysql_collation="utf8mb4_bin" + + atlassian_crowd_software_version=3.7.0 atlassian_crowd_container_name=crowd atlassian_crowd_port=48080 @@ -21,7 +26,7 @@ atlassian_jira_host="jira.${odsbox_domain}" atlassian_jira_ip= atlassian_jira_port=18080 atlassian_jira_jdwp_port=15005 -atlassian_jira_software_version=8.5.8 +atlassian_jira_software_version=8.20.6 # docker network internal jira port atlassian_jira_port_internal=8080 atlassian_bitbucket_ip= @@ -58,19 +63,51 @@ log_folder="${HOME}/logs" NAMESPACE=ods function display_usage() { + ME="$(basename $0)" echo echo "This script provides functions to install and configure various parts of an EDP/ODS installation." echo "The first argument to this script must always be the ods git ref to build against, e.g. master or feature/ods-devenv." echo "Functions in this script can be called like in the sample calls below:" - echo "deploy.sh feature/ods-devenv display_usage" - echo "deploy.sh feature/ods-devenv install_docker" - echo "deploy.sh feature/ods-devenv startup_atlassian_bitbucket" + echo " " + echo "${ME} --branch feature/ods-devenv --target display_usage" + echo "${ME} --branch feature/ods-devenv --target install_docker" + echo "${ME} --branch feature/ods-devenv --target startup_atlassian_bitbucket" + echo "${ME} --branch task/upgrade-atlassian-stack --target atlassian_stack_reset" echo echo "Since several of the functions will require that other functions have prepared the system first," echo "the script provides utility functions like basic_vm_setup which will call functions in this" echo "setup script in a proper sequence." } +function configure_sshd_server() { + echo "Configuring sshd server..." + sudo sed -i "s@.*PasswordAuthentication\ .*@PasswordAuthentication yes@g" /etc/ssh/sshd_config + sudo sed -i "s@.*ChallengeResponseAuthentication\ .*@ChallengeResponseAuthentication yes@g" /etc/ssh/sshd_config + sudo sed -i "s@.*GSSAPIAuthentication\ .*@GSSAPIAuthentication no@g" /etc/ssh/sshd_config + sudo sed -i "s@.*KerberosAuthentication\ .*@KerberosAuthentication no@g" /etc/ssh/sshd_config + sudo systemctl restart sshd + sudo systemctl status sshd + sleep 5 + sudo cat /etc/ssh/sshd_config +} + +function configure_sshd_openshift_keys() { + echo "Show current ssh passwords. We need them to connect and debug." + ls -1a ${HOME}/.ssh | grep -v "^\.\.*$" | while read -r file; do echo " "; echo ${file}; echo "----"; cat ${HOME}/.ssh/${file} || true; done + local needsKey + needsKey=0 + grep -q "openshift@odsbox.lan" ~/.ssh/authorized_keys || needsKey=1 + if [ 1 -eq $needsKey ]; then + echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDXwKT01BaNoSUXaqzrmaM+mRFyx+ERrmVq7v+1Xgtiru+c07l6vaIK6/GE+E/GH4QESB7phl9dLMlmKOXZZqMixa1MD0V0eaFP4YXCaaTGEPyLaNRNhTXert0IihfAucOIzdFGWn1795IshJ7rj/GdQQ0qrAMVYguz4iC+hR1IznuTkJivIvDCuDo5LG+DksisJlGTLpdTZIeCCJgUUFpevJbtcZKwbUqzd6fo0tQiuk/J0TtO4SlXUvDge7mWGxMCIFPTM+e6AFSI6deviiiyhOHzcP9luJQPBpONBXzGcLXMqm1UsYaOl4OsKcyJSk5PgSKBM0KV4RX2Pm3i0vlz7gbvK65sJKQQlBZBm+W16mT3Ke8ytg9I1Kf9/kplKSvSwxOkmClgWCKzxIT7vsozLnSBuPSyTLZ98RuUFhjDvHMFvmGe0oTGaUB0/QQdhROzYRtw7+/CQOzWuZx32B0CtLpd55iyL8261StbY/92B8QDdIQXg9bzsfx6hXSNLlc= openshift@odsbox.lan" >> ${HOME}/.ssh/authorized_keys + sleep 5 + cat ${HOME}/.ssh/authorized_keys + else + echo "Key for openshift@odsbox.lan was previously in file ${HOME}/.ssh/authorized_keys " + fi + chmod -c 600 ${HOME}/.ssh/authorized_keys + +} + ####################################### # Fix the CentOS 7 setup before starting Openshift / ODS setup. # - Install modern git version. @@ -113,14 +150,15 @@ function check_system_setup() { sudo chattr +i /etc/sudoers # remove obsolete version of git - if [[ -n $(command -v git) ]] - then - sudo yum remove -y git* - fi + # if [[ -n $(command -v git) ]] + # then + # sudo yum remove -y git* + # fi - sudo yum update -y - sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm - sudo yum -y install firewalld git2u-all glances golang jq tree + # remove full update /cut 20210901 + install_packages_yum_utils_epel_release + + sudo yum -y install firewalld git2u-all glances golang jq tree lsof || true go get github.com/ericchiang/pup mv "${HOME}/go/bin/pup" "${HOME}/bin/" @@ -372,19 +410,36 @@ EOF # None ####################################### function setup_google_chrome() { - if [[ -z $(command -v google-chrome) ]] + if ! sudo yum list installed 2>&1 | grep -iq google-chrome ; then + echo "Google chrome is installed. Not installing it. " + return 0 + fi chrome_version=94.0.4606.81 - + if command -v google-chrome ; then + echo "Not installing google chrome because binary found." + else echo "Download and install chrome (google-chrome-stable-${chrome_version}-1.x86_64.rpm)!" - curl -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-${chrome_version}-1.x86_64.rpm - sudo yum install -y ./google-chrome-stable-${chrome_version}-1.x86_64.rpm + curl -sS -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-${chrome_version}-1.x86_64.rpm + sudo yum install -y ./google-chrome-stable-${chrome_version}-1.x86_64.rpm || true rm ./google-chrome-stable-${chrome_version}-1.x86_64.rpm echo "... chrome installation completed!" fi } +function install_packages_yum_utils_epel_release() { + local already_installed="y" + sudo yum list installed 2>&1 | grep -iq 'yum-utils' || already_installed="n" + sudo yum list installed 2>&1 | grep -iq 'epel-release' || already_installed="n" + + if [ "y" != "$already_installed" ] ; then + sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm + else + echo "Packages yum-utils epel-release already installed " + fi +} + ####################################### # Install remote desktop protocol. # Connect to the openshift user session using MS Remote Desktop. @@ -396,17 +451,32 @@ function setup_google_chrome() { # None ####################################### function setup_rdp() { - sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm - sudo yum -y install xrdp - sudo systemctl start xrdp - sudo netstat -antup | grep xrdp - sudo systemctl enable xrdp + install_packages_yum_utils_epel_release + + if ! sudo yum list installed 2>&1 | grep -iq xrdp ; then + sudo yum -y install xrdp || true + else + echo "Not installing xrdp because it was installed before." + fi + sudo systemctl start xrdp || sudo systemctl status xrdp || echo "Error starting xrdp service..." + sudo netstat -antup | grep xrdp || echo "Error checking if xrdp ports are listening for connections..." + sudo systemctl enable xrdp || echo "No need to enable xrdp service in systemctl. " sudo chcon --type=bin_t /usr/sbin/xrdp sudo chcon --type=bin_t /usr/sbin/xrdp-sesman sudo lsof +c 15 -nP -iTCP -sTCP:LISTEN sudo firewall-cmd --zone=public --permanent --add-port=3389/tcp sudo firewall-cmd --zone=public --permanent --add-port=3350/tcp sudo firewall-cmd --reload + + echo "exec /usr/bin/mate-session" > ${HOME}/.xinitrc + echo "exec /usr/bin/mate-session" > ${HOME}/startwm.sh + echo "exec /usr/bin/mate-session" > ${HOME}/.Xclients + chmod +x ${HOME}/.xinitrc ${HOME}/startwm.sh ${HOME}/.Xclients + +} + +function install_extra_utils() { + sudo yum -y install iproute || true } ####################################### @@ -419,11 +489,16 @@ function setup_rdp() { # None ####################################### function install_docker() { - sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - echo "installing docker-ce packages" - sudo yum -y install docker-ce-3:19.03.14-3.el7.x86_64 + if ! sudo yum list installed 2>&1 | grep -iq docker-ce ; then + sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo + echo "installing docker-ce packages" + sudo yum -y install docker-ce-3:19.03.14-3.el7.x86_64 || true + else + echo "Docker ce does not need to be installed." + fi + echo "enabling docker in systemctl" - sudo systemctl enable --now docker + sudo systemctl enable --now docker || sudo systemctl status docker echo "updating docker insecure registries" cat < ~/.my.cnf ; echo 'user=root' >> ~/.my.cnf ; \ + echo \"password=${atlassian_mysql_root_password}\" >> ~/.my.cnf ; cat ~/.my.cnf" + else + echo "Not setting mysql pwd in .my.cnf because it has a wrong value." + fi + + local test_mysql_is_up=1 + while [ 0 -ne ${test_mysql_is_up} ]; + do + sleep 5 + echo " " + echo "Testing if mysqld is up..." + if docker exec -i atlassian_mysql bash -c "mysql -e 'SHOW DATABASES'" ; then + test_mysql_is_up=0 + else + echo "Trying again because mysqld seems to be down..." + fi + done + + docker exec -i atlassian_mysql bash -c "mysql -sN -e \"ALTER DATABASE jiradb \ + CHARACTER SET ${atlassian_mysql_character_set} COLLATE ${atlassian_mysql_collation};\"" + + docker exec -i atlassian_mysql bash -c "echo 'SET FOREIGN_KEY_CHECKS=0;' > /tmp/atlassian_mysql_fixes.txt " + docker exec -i atlassian_mysql bash -c "echo 'USE jiradb;' > /tmp/atlassian_mysql_fixes.txt " + + docker exec -i atlassian_mysql bash -c "mysql -sN -e \ + \"SELECT CONCAT('ALTER TABLE \\\`', table_name, \ + '\\\` CHARACTER SET ${atlassian_mysql_character_set} COLLATE ${atlassian_mysql_collation};') \ + FROM information_schema.TABLES AS T, \ + information_schema.\\\`COLLATION_CHARACTER_SET_APPLICABILITY\\\` AS C \ + WHERE C.collation_name = T.table_collation AND T.table_schema = 'jiradb' \ + AND ( C.CHARACTER_SET_NAME != '${atlassian_mysql_character_set}' OR \ + C.COLLATION_NAME != '${atlassian_mysql_collation}' );\" \ + | tee -a /tmp/atlassian_mysql_fixes.txt " >> /tmp/atlassian_mysql_fixes.txt + + docker exec -i atlassian_mysql bash -c "mysql -sN -e \ + \"SELECT CONCAT('ALTER TABLE \\\`', table_name, '\\\` MODIFY \\\`', column_name, '\\\` ', \ + DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH, ') \ + CHARACTER SET ${atlassian_mysql_character_set} COLLATE ${atlassian_mysql_collation}', \ + (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';') \ + FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'jiradb' AND DATA_TYPE = 'varchar' AND \ + ( CHARACTER_SET_NAME != '${atlassian_mysql_character_set}' OR \ + COLLATION_NAME != '${atlassian_mysql_collation}');\" \ + | tee -a /tmp/atlassian_mysql_fixes.txt " >> /tmp/atlassian_mysql_fixes.txt + + docker exec -i atlassian_mysql bash -c "mysql -sN -e \ + \"SELECT CONCAT('ALTER TABLE \\\`', table_name, '\\\` MODIFY \\\`', column_name, '\\\` ', \ + DATA_TYPE, ' CHARACTER SET ${atlassian_mysql_character_set} COLLATE ${atlassian_mysql_collation}', \ + (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';') \ + FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'jiradb' AND DATA_TYPE != 'varchar' AND \ + ( CHARACTER_SET_NAME != '${atlassian_mysql_character_set}' OR \ + COLLATION_NAME != '${atlassian_mysql_collation}' );\" \ + | tee -a /tmp/atlassian_mysql_fixes.txt " >> /tmp/atlassian_mysql_fixes.txt + + docker exec -i atlassian_mysql bash -c "echo 'SET FOREIGN_KEY_CHECKS=1;' >> /tmp/atlassian_mysql_fixes.txt " + + echo "Loading script to fix the database. Amount of lines in script: " + docker exec -i atlassian_mysql bash -c \ + "wc -l /tmp/atlassian_mysql_fixes.txt; mysql -sN -e \"source /tmp/atlassian_mysql_fixes.txt\"" + + local remaining_lines=$( wc -l /tmp/atlassian_mysql_fixes.txt | cut -d ' ' -f 1 ) + if [ "0" != "${remaining_lines}" ]; then + echo "Calling again to check that database has all the fixes it needs... " + echo "Lines processed this iteration: ${remaining_lines}" + fix_atlassian_mysql_loaded_data "${atlassian_mysql_root_password}" + fi + + echo "fix_atlassian_mysql_loaded_data ended." + date +%H%M%S_%s + fix_atlassian_mysql_loaded_data_checks +} + +function fix_atlassian_mysql_loaded_data_checks() { + echo " " + echo "fix_atlassian_mysql_loaded_data_checks STARTS" + echo " " + docker exec -i atlassian_mysql bash -c "mysql -sN -e \ + \"SELECT @@character_set_database, @@collation_database; \ + SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES; \ + SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS;\"" \ + > /tmp/fix_atlassian_mysql_loaded_data_checks.txt + + grep -i jiradb /tmp/fix_atlassian_mysql_loaded_data_checks.txt + + echo " " + echo "fix_atlassian_mysql_loaded_data_checks ENDS" + echo " " +} + ####################################### # Will use startup_atlassian_mysql to start a mysql database in a docker # container and hold execution until mysql becomes available und client @@ -705,27 +931,69 @@ function startup_and_follow_jira() { function configure_jira2crowd() { local cookie_jar_path cookie_jar_path="${HOME}/tmp/jira_cookie_jar.txt" + + local errors_file + errors_file="/tmp/errors_jira2crowd.txt" + rm -fv ${errors_file} + + jira_login_reply="/tmp/atl_token-`date +%Y%m%d_%H%M%S`.log" echo "Configure Jira against Crowd directory ..." # login to Jira - curl 'http://172.17.0.1:18080/login.jsp' \ + curl -sS 'http://172.17.0.1:18080/login.jsp' \ -b "${cookie_jar_path}" \ -c "${cookie_jar_path}" \ --data 'os_username=openshift&os_password=openshift&os_destination=&user_role=&atl_token=&login=Log+In' \ --compressed \ - --insecure --silent --location -o /dev/null + --insecure --silent --location --output ${jira_login_reply} + ls -lah ${jira_login_reply} echo "Logged into Jira" + # free -h || echo "Problem getting memory usage !! " + # ps -AfH + # docker logs --details jira || echo "Problem getting docker logs of jira container !! " + + login_page_fn="/tmp/login-page-`date +%Y%m%d_%H%M%S`.log" + curl -sS --insecure --location --connect-timeout 30 --max-time 120 --retry-delay 5 --retry 5 --verbose \ + 'http://172.17.0.1:18080/' -u "openshift:openshift" --output ${login_page_fn} + if [ ! -f ${login_page_fn} ]; then + echo "WARNING: File with login page (${login_page_fn}) is EMPTY or does NOT exist !!! " + fi + # setting atl_token - atl_token=$(curl 'http://172.17.0.1:18080/plugins/servlet/embedded-crowd/configure/new/' \ - -b "${cookie_jar_path}" \ - -c "${cookie_jar_path}" \ - --data "newDirectoryType=CROWD&next=Next" \ - --compressed \ - --insecure --location --silent | pup 'input[name="atl_token"] attr{value}') + atl_token_fn="/tmp/atl_token-`date +%Y%m%d_%H%M%S`.log" + echo "Retrieving Jira xsrf atl_token to file ${atl_token_fn} ..." + curl -sS --connect-timeout 30 --max-time 120 --retry-delay 5 --retry 5 --verbose \ + 'http://172.17.0.1:18080/plugins/servlet/embedded-crowd/configure/new/' \ + -u "openshift:openshift" \ + -b "${cookie_jar_path}" \ + -c "${cookie_jar_path}" \ + --data "newDirectoryType=CROWD&next=Next" \ + --compressed \ + --insecure --location --silent --output ${atl_token_fn} --stderr ${errors_file} + sleep 5 + echo "Results from curl setting atl token: " + cat ${atl_token_fn} || echo "File with Jira xsrf atl_token (${atl_token_fn}) is EMPTY or does NOT exist !!! " + cat ${errors_file} + sleep 5 + + if grep -iq "HTTP/1.1 503" ${errors_file} ; then + # docker logs --details jira || echo "Problem getting docker logs of jira container !! " + + fix_atlassian_mysql_loaded_data_checks + + echo " " + echo "Server sleeps 14400 secs (4h) for debugging purposes !! " + echo " " + sleep 14400 + else + echo "No error 503 configuring Jira. Perfect !!! " + fi + + atl_token=$(cat ${atl_token_fn} | pup 'input[name="atl_token"] attr{value}') echo "Retrieved Jira xsrf atl_token ${atl_token}." # WebSudo authentication - sign in as admin - curl 'http://172.17.0.1:18080/secure/admin/WebSudoAuthenticate.jspa' \ + curl -sS 'http://172.17.0.1:18080/secure/admin/WebSudoAuthenticate.jspa' \ -b "${cookie_jar_path}" \ -c "${cookie_jar_path}" \ --data "webSudoPassword=openshift&webSudoDestination=%2Fsecure%2Fadmin%2FViewApplicationProperties.jspa&webSudoIsPost=false&atl_token=${atl_token}" \ @@ -806,7 +1074,7 @@ function configure_bitbucket2crowd() { echo "Configured Crowd directory on BitBucket, got crowd directory id ${crowd_directory_id}." # sync bitbucket with crowd directory - curl "http://172.17.0.1:${atlassian_bitbucket_port}/plugins/servlet/embedded-crowd/directories/sync?directoryId=${crowd_directory_id}&atl_token=${atl_token}" \ + curl -sS "http://172.17.0.1:${atlassian_bitbucket_port}/plugins/servlet/embedded-crowd/directories/sync?directoryId=${crowd_directory_id}&atl_token=${atl_token}" \ -b "${cookie_jar_path}" \ -c "${cookie_jar_path}" \ --compressed \ @@ -817,27 +1085,27 @@ function configure_bitbucket2crowd() { sleep 10 # adding after sync groups to global permissions to enable users in the following groups to be able to login - curl "http://172.17.0.1:${atlassian_bitbucket_port}/rest/api/1.0/admin/permissions/groups?permission=PROJECT_CREATE&name=bitbucket-users" \ + curl -sS "http://172.17.0.1:${atlassian_bitbucket_port}/rest/api/1.0/admin/permissions/groups?permission=PROJECT_CREATE&name=bitbucket-users" \ -X 'PUT' \ -H 'Authorization: Basic b3BlbnNoaWZ0Om9wZW5zaGlmdA==' \ -H 'Accept: application/json' - curl "http://172.17.0.1:${atlassian_bitbucket_port}/rest/api/1.0/admin/permissions/groups?permission=ADMIN&name=bitbucket-administrators" \ + curl -sS "http://172.17.0.1:${atlassian_bitbucket_port}/rest/api/1.0/admin/permissions/groups?permission=ADMIN&name=bitbucket-administrators" \ -X 'PUT' \ -H 'Authorization: Basic b3BlbnNoaWZ0Om9wZW5zaGlmdA==' \ -H 'Accept: application/json' - curl "http://172.17.0.1:${atlassian_bitbucket_port}/rest/api/1.0/admin/permissions/groups?permission=PROJECT_CREATE&name=project-admins" \ + curl -sS "http://172.17.0.1:${atlassian_bitbucket_port}/rest/api/1.0/admin/permissions/groups?permission=PROJECT_CREATE&name=project-admins" \ -X 'PUT' \ -H 'Authorization: Basic b3BlbnNoaWZ0Om9wZW5zaGlmdA==' \ -H 'Accept: application/json' - curl "http://172.17.0.1:${atlassian_bitbucket_port}/rest/api/1.0/admin/permissions/groups?permission=PROJECT_CREATE&name=project-team-members" \ + curl -sS "http://172.17.0.1:${atlassian_bitbucket_port}/rest/api/1.0/admin/permissions/groups?permission=PROJECT_CREATE&name=project-team-members" \ -X 'PUT' \ -H 'Authorization: Basic b3BlbnNoaWZ0Om9wZW5zaGlmdA==' \ -H 'Accept: application/json' - curl "http://172.17.0.1:${atlassian_bitbucket_port}/rest/api/1.0/admin/permissions/groups?permission=LICENSED_USER&name=project-readonly-users" \ + curl -sS "http://172.17.0.1:${atlassian_bitbucket_port}/rest/api/1.0/admin/permissions/groups?permission=LICENSED_USER&name=project-readonly-users" \ -X 'PUT' \ -H 'Authorization: Basic b3BlbnNoaWZ0Om9wZW5zaGlmdA==' \ -H 'Accept: application/json' @@ -865,8 +1133,12 @@ function startup_atlassian_jira() { echo "Downloading mysql-connector-java" local download_dir="downloads_jira" - local download_url="https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.20/mysql-connector-java-8.0.20.jar" - local db_driver_file="mysql-connector-java-8.0.20.jar" + # local download_url="https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.20/mysql-connector-java-8.0.20.jar" + local download_url="https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.29/mysql-connector-java-8.0.29.jar" + local download_url="https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar" + # local db_driver_file="mysql-connector-java-8.0.20.jar" + # local db_driver_file="mysql-connector-java-8.0.29.jar" + local db_driver_file="mysql-connector-java-8.0.28.jar" download_file_to_folder "${download_url}" "${download_dir}" pushd ods-devenv/jira-docker @@ -891,12 +1163,13 @@ function startup_atlassian_jira() { -e ATL_DB_DRIVER=com.mysql.jdbc.Driver \ -e ATL_DB_TYPE=mysql \ -e ATL_DB_SCHEMA_NAME= \ + -e JVM_MAXIMUM_MEMORY=4096m \ -e JVM_SUPPORT_RECOMMENDED_ARGS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 \ ods-jira-docker:latest \ > "${HOME}/tmp/jira_docker_download.log" 2>&1 # reduce noise in log output from docker image download echo -n "Preparing jira container for connection to local mysql database." - prepare_jira_container "${download_dir}" + prepare_jira_container "${download_dir}" "${db_driver_file}" while ! (docker container exec -i jira bash -c "grep -q ${atlassian_mysql_container_name}.${odsbox_domain} dbconfig.xml") do # this race condition of the container getting ready and writing to dbconfig.xml @@ -904,10 +1177,13 @@ function startup_atlassian_jira() { # Alternative approach: start container, stop container, cp driver, restart container ... sleep 1 echo -n "." - prepare_jira_container "${download_dir}" + prepare_jira_container "${download_dir}" "${db_driver_file}" done echo "done" + # This is necessary because jira reloads using worng character set and collation. + # fix_atlassian_mysql_loaded_data + rm -rf "${download_dir}" inspect_jira_ip echo "Atlassian jira-software is listening on ${atlassian_jira_host}, ${atlassian_jira_ip}:${atlassian_jira_port_internal} and ${public_hostname}:${atlassian_jira_port}" @@ -917,7 +1193,8 @@ function startup_atlassian_jira() { function prepare_jira_container() { local download_dir="${1:?null}" - docker container cp "${download_dir}/mysql-connector-java-8.0.20.jar" jira:/opt/atlassian/jira/lib/ + local db_driver_file="${2:?null}" + docker container cp "${download_dir}/${db_driver_file}" jira:/opt/atlassian/jira/lib/ docker container exec -i jira bash -c "sed -i \"s|172.17.0.6|${atlassian_mysql_container_name}.${odsbox_domain}|\" dbconfig.xml" } @@ -1090,29 +1367,6 @@ function crowd_echo_backup_cmd() { echo "3. and run the command" } -####################################### -# Initialize Jira database. Requires database service to be running. -# Is to be used mutually exclusively with prepare_atlassian_stack. -# Globals: -# atlassian_jira_db_name -# atlassian_mysql_container_name -# atlassian_mysql_port -# atlassian_mysql_version -# Arguments: -# n/a -# Returns: -# None -####################################### -function initialize_atlassian_jiradb() { - local mysql_ip - mysql_ip=$(docker inspect -f '{{.NetworkSettings.IPAddress}}' ${atlassian_mysql_container_name}) - echo "Setting up jiradb on ${mysql_ip}:${atlassian_mysql_port}." - echo "jiradbrpwd" | docker container run -i --rm mysql:${atlassian_mysql_version} mysql -h "${mysql_ip}" -u root -p -e \ - "create database ${atlassian_jira_db_name} character set utf8 collate utf8_bin; \ - GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,REFERENCES,ALTER,INDEX,CREATE TEMPORARY TABLES on jiradb.* TO 'jira_user'@'%' IDENTIFIED BY 'jira_password'; \ - flush privileges;" -} - ####################################### # Will download the file specified by the url in the 1st argument # and save it to the download directory specified @@ -1135,7 +1389,7 @@ function download_file_to_folder() { pushd "${download_dir}" local counter=0 local wait_interval=5 - while ! curl -LO "${download_url}" && [[ counter -lt 10 ]] + while ! curl -sS -LO "${download_url}" && [[ counter -lt 10 ]] do if [[ counter -eq 9 ]] then @@ -1179,8 +1433,6 @@ function startup_atlassian_bitbucket() { docker image build --build-arg APP_DNS="docker-registry-default.ocp.odsbox.lan" -t ods-bitbucket-docker:latest . popd - local - echo "Assigning ownership of bitbucket_data folder to bitbucket user (id 2003)" sudo chown -R 2003:2003 ${HOME}/bitbucket_data @@ -1353,8 +1605,7 @@ function register_dns() { fi done - - sudo systemctl restart dnsmasq.service + sudo systemctl restart dnsmasq.service || sudo systemctl status dnsmasq.service } ####################################### @@ -1430,7 +1681,6 @@ function delete_ods_repositories() { # None ####################################### function push_ods_repositories() { - exit_if_ods_git_ref_is_undefined pwd ./scripts/push-local-repos.sh --bitbucket-url "http://openshift:openshift@${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}" --bitbucket-ods-project OPENDEVSTACK --ods-git-ref "${ods_git_ref}" } @@ -1446,7 +1696,6 @@ function push_ods_repositories() { # None ####################################### function set_shared_library_ref() { - exit_if_ods_git_ref_is_undefined pwd ./scripts/set-shared-library-ref.sh --ods-git-ref "${ods_git_ref}" } @@ -1482,7 +1731,6 @@ function inspect_mysql_ip() { # None ####################################### function create_configuration() { - exit_if_ods_git_ref_is_undefined echo "create configuration" pwd ods-setup/config.sh --verbose --bitbucket "http://openshift:openshift@${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}" @@ -1769,7 +2017,8 @@ function setup_jenkins_agents() { popd done - local return_value=0 + local return_value + return_value=0 for job in $(jobs -p) do echo "Waiting for openshift build configuration ${job} to be created." @@ -1820,7 +2069,7 @@ function run_smoke_tests() { pushd tests export PROVISION_API_HOST=https://prov-app-ods.ocp.odsbox.lan - time make test + make test popd git reset --hard @@ -1835,109 +2084,13 @@ function run_smoke_tests() { echo "bitbucket up and running." pushd tests - time make test-quickstarter - popd - - # clean up after tests - oc delete project unitt-cd unitt-dev unitt-test -} - -function run_ods_smoke_tests() { - - echo "Running ods smoke test..." - - oc get is -n "${NAMESPACE}" - export GITHUB_WORKSPACE="${HOME}/opendevstack" - - pushd tests - export PROVISION_API_HOST=https://prov-app-ods.ocp.odsbox.lan - time make test - popd - git reset --hard - - echo "...done with ods smoke test!" -} - -function run_qs_smoke_tests() { - - echo "Running qs smoke test..." - - # buying extra time for the quickstarter tests - # restart_atlassian_suite - echo -n "Waiting for bitbucket to become available" - until [[ $(docker inspect --format '{{.State.Health.Status}}' ${atlassian_bitbucket_container_name}) == 'healthy' ]] - do - echo -n "." - sleep 1 - done - echo "bitbucket up and running." - - oc get is -n "${NAMESPACE}" - - export GITHUB_WORKSPACE="${HOME}/opendevstack" - - export PROVISION_API_HOST=https://prov-app-ods.ocp.odsbox.lan - -# git reset --hard - - echo "running quickstarter tests" - pushd tests - time make test-quickstarter + make test-quickstarter popd # clean up after tests oc delete project unitt-cd unitt-dev unitt-test - - echo "...done with qs smoke test!" - -} - -function startup_atlassian_stack() { - # for machines derived from legacy images and login-shells that do not source .bashrc - export GOPROXY="https://goproxy.io,direct" - # for sonarqube - echo "Setting vm.max_map_count=262144" - sudo sysctl -w vm.max_map_count=262144 - - setup_dnsmasq - - # restart and follow mysql - restart_atlassian_mysql - printf "Waiting for mysqld to become available" - until [[ $(docker inspect --format '{{.State.Health.Status}}' ${atlassian_mysql_container_name}) == 'healthy' ]] - do - printf . - sleep 1 - done - echo "mysqld up and running." - - restart_atlassian_suite } -function startup_ods_only() { - # for machines derived from legacy images and login-shells that do not source .bashrc - export GOPROXY="https://goproxy.io,direct" - # for sonarqube - echo "Setting vm.max_map_count=262144" - sudo sysctl -w vm.max_map_count=262144 - - setup_dnsmasq - - echo "setting kubedns in ${HOME}/openshift.local.clusterup/kubedns/resolv.conf" - sed -i "s|^nameserver.*$|nameserver ${public_hostname}|" "${HOME}/openshift.local.clusterup/kubedns/resolv.conf" - if ! grep "nameserver ${public_hostname}" "${HOME}/openshift.local.clusterup/kubedns/resolv.conf" - then - echo "ERROR: could not update kubedns/resolv.con!" - return 1 - fi - - # allow for OpenShifts to be resolved within OpenShift network - sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT - startup_openshift_cluster - echo "set iptables" -} - - function startup_ods() { # for machines derived from legacy images and login-shells that do not source .bashrc export GOPROXY="https://goproxy.io,direct" @@ -1996,11 +2149,15 @@ function setup_aqua() { # None ####################################### function basic_vm_setup() { + configure_sshd_openshift_keys + configure_sshd_server check_system_setup setup_rdp + install_extra_utils setup_dnsmasq + configure_sshd_server # optional - setup_vscode + # setup_vscode setup_google_chrome install_docker setup_openshift_cluster @@ -2009,7 +2166,6 @@ function basic_vm_setup() { # download atlassian stack backup files for unattented setup. # either use prepare_atlassian_stack # or - # initialize_atlassian_jiradb and initialize_atlassian_bitbucketdb prepare_atlassian_stack startup_and_follow_atlassian_mysql @@ -2058,97 +2214,6 @@ function basic_vm_setup() { echo "source /etc/bash_completion.d/oc" } -function exit_if_ods_git_ref_is_undefined() { - if [[ -z "${ods_git_ref}" ]]; then - echo "error: empty variable 'ods_git_ref' [ods_git_ref=${ods_git_ref}]!" - exit 1 - fi -} - -function base_oc_atlasssian_vm_setup() { - check_system_setup - setup_rdp - setup_dnsmasq - # optional - setup_vscode - setup_google_chrome - install_docker - setup_openshift_cluster - download_tailor - print_system_setup - # download atlassian stack backup files for unattented setup. - # either use prepare_atlassian_stack - # or - # initialize_atlassian_jiradb and initialize_atlassian_bitbucketdb - prepare_atlassian_stack - startup_and_follow_atlassian_mysql - # initialize_atlassian_jiradb - startup_atlassian_crowd - # currently nothing is waiting on Jira to become available, can just run in - # the background - startup_atlassian_jira & - # initialize_atlassian_bitbucketdb - startup_and_follow_bitbucket - # TODO: push to function - sudo systemctl restart dnsmasq - - stop_ods -} - -function ods_setup() { - - startup_ods - - configure_bitbucket2crowd - # TODO wait until BitBucket (and Jira) becomes available - create_empty_ods_repositories - configure_jira2crowd - - create_configuration - push_ods_repositories - set_shared_library_ref - - install_ods_project - # Install components in OpenShift - setup_nexus | tee "${log_folder}"/nexus_setup.log - setup_sonarqube | tee "${log_folder}"/sonarqube_setup.log - setup_jenkins | tee "${log_folder}"/jenkins_setup.log - setup_provisioning_app | tee "${log_folder}"/provapp_setup.log - setup_docgen | tee "${log_folder}"/docgen_setup.log - - local fail_count - fail_count=0 - for job in $(jobs -p) - do - echo "Waiting for openshift build ${job} to complete." - wait "${job}" || fail_count=$((fail_count + 1)) - echo "build job ${job} returned. Number of failed jobs is ${fail_count}" - # TODO fail if any job fails - done - - setup_jenkins_agents - setup_aqua - - run_ods_smoke_tests - - setup_ods_crontab - - echo "ODS Installation completed." - echo "Now start a new terminal session or run:" - echo "source /etc/bash_completion.d/oc" -} - -#function ci_run_ods_smoke_tests() { -# -# echo "Running ci qs smoke test..." -# -# run_qs_smoke_tests -# -# echo "...done with ci qs smoke test!" -# -#} - - while [[ "$#" -gt 0 ]]; do case $1 in @@ -2166,4 +2231,7 @@ esac; shift; done ods_git_ref="${ods_git_ref:-feature/ods-devenv}" target="${target:-display_usage}" echo "Will build ods box against git-ref ${ods_git_ref}" +echo "Target: ${target} " + ${target} + From 3fe6fbe316c78848709fc4524f5adb89fbf3db52 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 18 May 2022 12:08:43 +0200 Subject: [PATCH 066/217] gofmt -w tools.go --- tests/tools.go | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/tools.go b/tests/tools.go index 91d741595..66ba64988 100644 --- a/tests/tools.go +++ b/tests/tools.go @@ -1,3 +1,4 @@ +//go:build tools // +build tools package tools From dae4857f4a374dded403597905db6e4a4b902f99 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 18 May 2022 12:12:20 +0200 Subject: [PATCH 067/217] github workflow upgrades from task/upgrade-atlassian-stack --- .../continuous-integration-workflow.yml | 20 ++++++++++--------- jenkins/webhook-proxy/Dockerfile | 3 ++- jenkins/webhook-proxy/Makefile | 3 ++- jenkins/webhook-proxy/go.mod | 2 +- tests/Makefile | 3 ++- tests/tools.go | 1 - 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.github/workflows/continuous-integration-workflow.yml b/.github/workflows/continuous-integration-workflow.yml index 0254cefc9..55bb203d8 100644 --- a/.github/workflows/continuous-integration-workflow.yml +++ b/.github/workflows/continuous-integration-workflow.yml @@ -107,20 +107,20 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2.0.0 + uses: actions/checkout@v3 - - name: Setup Go 1.12 - uses: actions/setup-go@v2 + name: Setup Go 1.18 + uses: actions/setup-go@v3 with: - go-version: 1.12 + go-version: 1.18 - name: Download goimports run: | - go get golang.org/x/tools/cmd/goimports + go install golang.org/x/tools/cmd/goimports@latest - name: Download golangci-lint run: | - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.17.1 + curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.45.2 - name: Run linter working-directory: jenkins/webhook-proxy @@ -181,7 +181,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2.0.0 + uses: actions/checkout@v3 - name: Verify all Go files are formatted with gofmt working-directory: tests @@ -190,14 +190,16 @@ jobs: [ -z "$unformatted" ] && exit 0 echo >&2 "Go files must be formatted with gofmt. Please run:" for fn in $unformatted; do + echo >&2 "Differences found:" + gofmt -d $fn echo >&2 " gofmt -w $fn" done exit 1 - name: Verify all Go tests pass linting - uses: golangci/golangci-lint-action@v2 + uses: golangci/golangci-lint-action@v3 with: - version: v1.29 + version: v1.45.2 working-directory: tests - name: Verify all Go tests can be compiled diff --git a/jenkins/webhook-proxy/Dockerfile b/jenkins/webhook-proxy/Dockerfile index ba0340a0f..8dd80316a 100644 --- a/jenkins/webhook-proxy/Dockerfile +++ b/jenkins/webhook-proxy/Dockerfile @@ -1,7 +1,7 @@ # Ideally we would us a very small image like plain alpine and just copy the # pre-built binary into it, but due to e.g. multistage builds not available in # OpenShift yet, for now the easiest is to build the binary in this image. -FROM golang:1.12-alpine +FROM golang:1.18-alpine # Set default ALLOWED_EXTERNAL_PROJECTS env var ARG allowedExternalProjects=opendevstack @@ -13,6 +13,7 @@ RUN apk add --no-cache ca-certificates && \ chmod g+w /home/webhook-proxy COPY main.go /home/webhook-proxy/main.go +COPY go.mod /home/webhook-proxy/go.mod COPY pipeline.json.tmpl /home/webhook-proxy/pipeline.json.tmpl WORKDIR /home/webhook-proxy diff --git a/jenkins/webhook-proxy/Makefile b/jenkins/webhook-proxy/Makefile index 2420f4a70..dca27bcb7 100644 --- a/jenkins/webhook-proxy/Makefile +++ b/jenkins/webhook-proxy/Makefile @@ -7,7 +7,8 @@ fmt: @(gofmt -w .) lint: - golangci-lint run + golangci-lint --version + golangci-lint run --go=1.18 build: build-linux build-darwin build-windows diff --git a/jenkins/webhook-proxy/go.mod b/jenkins/webhook-proxy/go.mod index 7a1458b5a..281b2e28e 100644 --- a/jenkins/webhook-proxy/go.mod +++ b/jenkins/webhook-proxy/go.mod @@ -1,3 +1,3 @@ module github.com/opendevstack/ods-core/jenkins/webhook-proxy -go 1.12 +go 1.18 diff --git a/tests/Makefile b/tests/Makefile index af04c60c6..56fa45058 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -46,7 +46,8 @@ prep-tools: ## Lint lint: echo "Checking code ..." - golangci-lint run + golangci-lint --version + golangci-lint run --go=1.18 .PHONY: lint ### HELP diff --git a/tests/tools.go b/tests/tools.go index 66ba64988..cf781c14f 100644 --- a/tests/tools.go +++ b/tests/tools.go @@ -1,5 +1,4 @@ //go:build tools -// +build tools package tools From 3c9458a07b77227047253798a61cc50b30afd579 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 18 May 2022 17:38:03 +0200 Subject: [PATCH 068/217] Parallelism building quickstarters. --- ods-devenv/scripts/deploy.sh | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index dd900dd14..7ec903136 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2032,14 +2032,46 @@ function setup_jenkins_agents() { echo "build configuration job ${job} returned." done + local technologies + local technologies_index + + technologies_index=0 for technology in $(ls -d -- */) do technology=${technology%/*} - echo "Starting build of jenkins-agent for technology ${technology}." - oc start-build -n "${NAMESPACE}" "jenkins-agent-${technology}" --follow | tee "${log_folder}/${technology}_build.log" + technologies[${technologies_index}]=${technology} + + echo "Starting (in background) build of jenkins-agent for technology ${technology}. Logs to ${log_folder}/${technology}_build.log " + oc start-build -n "${NAMESPACE}" "jenkins-agent-${technology}" --follow --wait > "${log_folder}/${technology}_build.log" 2>$1 & + pids[${technologies_index}]=$! + done popd + # for pid in ${[*]}; do + # wait $pid + # return_value=$? + # done + + local foundErrorInTechnologies=0 + for technologies_index_aux in ${!technologies[@]}; + technology=${technologies[$technologies_index_aux]} + echo "Waiting for the result of building jenkins-agent for technology ${technology}" + wait ${pids[$technologies_index_aux]} + return_value=$? + cat ${log_folder}/${technology}_build.log + if [ 0 -ne ${return_value} ]; then + echo "Failed building jenkins-agent for technology ${technology}" + foundErrorInTechnologies=1 + fi + done + + if [ 0 -ne ${foundErrorInTechnologies} ]; then + echo "Look for the line 'Failed building jenkins-agent for technology' above." + echo "Exiting because we have errors building a jenkins-agent. " + exit 1 + fi + for job in $(jobs -p) do echo "Waiting for jenkins-agent builds ${job} to complete." From d943bfa740bbe197ae7696e2ba138f3d62aa3957 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 18 May 2022 18:10:41 +0200 Subject: [PATCH 069/217] typo --- ods-devenv/scripts/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 7ec903136..4162b8c8a 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2054,7 +2054,7 @@ function setup_jenkins_agents() { # done local foundErrorInTechnologies=0 - for technologies_index_aux in ${!technologies[@]}; + for technologies_index_aux in ${!technologies[@]}; do technology=${technologies[$technologies_index_aux]} echo "Waiting for the result of building jenkins-agent for technology ${technology}" wait ${pids[$technologies_index_aux]} From 1876d06735ff46ca4f05e9f5170841b909874419 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 18 May 2022 18:20:22 +0200 Subject: [PATCH 070/217] changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6777b585..a636d76b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ - Add dependency to docker.service in ods systemd service definition ([1045](https://github.com/opendevstack/ods-core/pull/1045)) - Add support for ods-saas-service quickstarter ([#1033](https://github.com/opendevstack/ods-core/pull/1033)) - ODS AMI build failing due to broken helm diff package ([#1083](https://github.com/opendevstack/ods-core/pull/1083)) -- Needed changes to run CI again, ported from task/upgrade-atlassian-stack. +- Needed changes to run CI again, ported from task/upgrade-atlassian-stack. Run quickstarters in parallel. ### Added From f15827c712903f518ca5954139a444ed3a3cafb6 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 18 May 2022 20:14:56 +0200 Subject: [PATCH 071/217] typo --- ods-devenv/scripts/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 4162b8c8a..126d568cb 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2042,7 +2042,7 @@ function setup_jenkins_agents() { technologies[${technologies_index}]=${technology} echo "Starting (in background) build of jenkins-agent for technology ${technology}. Logs to ${log_folder}/${technology}_build.log " - oc start-build -n "${NAMESPACE}" "jenkins-agent-${technology}" --follow --wait > "${log_folder}/${technology}_build.log" 2>$1 & + oc start-build -n "${NAMESPACE}" "jenkins-agent-${technology}" --follow --wait > "${log_folder}/${technology}_build.log" 2>&1 & pids[${technologies_index}]=$! done From d1527b6c6d6c70193770c452f09e1202a1af9c7b Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 18 May 2022 20:16:14 +0200 Subject: [PATCH 072/217] changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a636d76b3..1e4814559 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ - Add dependency to docker.service in ods systemd service definition ([1045](https://github.com/opendevstack/ods-core/pull/1045)) - Add support for ods-saas-service quickstarter ([#1033](https://github.com/opendevstack/ods-core/pull/1033)) - ODS AMI build failing due to broken helm diff package ([#1083](https://github.com/opendevstack/ods-core/pull/1083)) -- Needed changes to run CI again, ported from task/upgrade-atlassian-stack. Run quickstarters in parallel. +- Needed changes to run CI again, ported from task/upgrade-atlassian-stack. Run quickstarters in parallel, typos. ### Added From 848d20b119c96c31aa0d1e600321f56965249480 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 19 May 2022 16:50:38 +0200 Subject: [PATCH 073/217] continuous-integration-workflow backported --- .github/workflows/continuous-integration-workflow.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/continuous-integration-workflow.yml b/.github/workflows/continuous-integration-workflow.yml index 55bb203d8..cee6edfd9 100644 --- a/.github/workflows/continuous-integration-workflow.yml +++ b/.github/workflows/continuous-integration-workflow.yml @@ -120,7 +120,8 @@ jobs: - name: Download golangci-lint run: | - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.45.2 + curl -sSfL --output /tmp/golangci-lint.sh https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh + cat /tmp/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.46.2 - name: Run linter working-directory: jenkins/webhook-proxy @@ -199,7 +200,7 @@ jobs: name: Verify all Go tests pass linting uses: golangci/golangci-lint-action@v3 with: - version: v1.45.2 + version: v1.46.2 working-directory: tests - name: Verify all Go tests can be compiled From 2a43bebfc366e0a1a29d6a80d235d0c0b99bcec3 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 27 May 2022 09:02:19 +0200 Subject: [PATCH 074/217] git checkout task/upgrade-atlassian-stack -- .github/workflows/continuous-integration-workflow.yml nexus/test.sh ods-devenv/create-base-ami-image/etc_xrdp/sesman.ini ods-devenv/packer/CentOS2ODSBox.json ods-devenv/packer/create_ods_box_image.sh ods-devenv/scripts/bootstrap.sh ods-devenv/scripts/create-base-ami-image.sh ods-devenv/scripts/deploy.sh ods-devenv/scripts/run-on-aws.sh scripts/repos.sh tests/go.mod tests/go.sum tests/quickstarter-test.sh tests/quickstarter/quickstarter_test.go tests/scripts/free-unused-resources.sh tests/scripts/print-jenkins-log.sh tests/smoke-test.sh tests/utils/jenkins.go --- nexus/test.sh | 2 +- .../create-base-ami-image/etc_xrdp/sesman.ini | 172 ++++++++++++ ods-devenv/packer/CentOS2ODSBox.json | 6 + ods-devenv/scripts/bootstrap.sh | 28 +- ods-devenv/scripts/create-base-ami-image.sh | 24 +- ods-devenv/scripts/deploy.sh | 245 +++++++++++++----- ods-devenv/scripts/run-on-aws.sh | 2 +- scripts/repos.sh | 5 +- tests/go.mod | 5 + tests/go.sum | 24 ++ tests/quickstarter-test.sh | 25 +- tests/quickstarter/quickstarter_test.go | 18 +- tests/scripts/free-unused-resources.sh | 15 ++ tests/scripts/print-jenkins-log.sh | 3 + tests/smoke-test.sh | 14 +- tests/utils/jenkins.go | 3 +- 16 files changed, 482 insertions(+), 109 deletions(-) create mode 100644 ods-devenv/create-base-ami-image/etc_xrdp/sesman.ini create mode 100755 tests/scripts/free-unused-resources.sh diff --git a/nexus/test.sh b/nexus/test.sh index 99a323f7c..31d529f6e 100755 --- a/nexus/test.sh +++ b/nexus/test.sh @@ -197,7 +197,7 @@ else echo "Developer access possible" fi -artifact_url="${NEXUS_URL}/repository/jcenter/org/springframework/boot/spring-boot/2.3.0.RELEASE/spring-boot-2.3.0.RELEASE.pom" +artifact_url="${NEXUS_URL}/repository/maven-public/org/springframework/boot/spring-boot/2.3.0.RELEASE/spring-boot-2.3.0.RELEASE.pom" echo "Downloading sample artifact: $artifact_url" # retrieves an xml doc. diff --git a/ods-devenv/create-base-ami-image/etc_xrdp/sesman.ini b/ods-devenv/create-base-ami-image/etc_xrdp/sesman.ini new file mode 100644 index 000000000..833710259 --- /dev/null +++ b/ods-devenv/create-base-ami-image/etc_xrdp/sesman.ini @@ -0,0 +1,172 @@ +;; See `man 5 sesman.ini` for details + +[Globals] +ListenAddress=0.0.0.0 +ListenPort=3350 +EnableUserWindowManager=true +; Give in relative path to user's home directory +UserWindowManager=startwm.sh +; Give in full path or relative path to /etc/xrdp +DefaultWindowManager=startwm-bash.sh +; Give in full path or relative path to /etc/xrdp +ReconnectScript=reconnectwm.sh + +[Security] +AllowRootLogin=true +MaxLoginRetry=4 +TerminalServerUsers=tsusers +TerminalServerAdmins=tsadmins +; When AlwaysGroupCheck=false access will be permitted +; if the group TerminalServerUsers is not defined. +AlwaysGroupCheck=false +; When RestrictOutboundClipboard=all clipboard from the +; server is not pushed to the client. +; In addition, you can control text/file/image transfer restrictions +; respectively. It also accepts comma separated list such as text,file,image. +; To keep compatibility, some aliases are also available: +; true: an alias of all +; false: an alias of none +; yes: an alias of all +RestrictOutboundClipboard=none +; When RestrictInboundClipboard=all clipboard from the +; client is not pushed to the server. +; In addition, you can control text/file/image transfer restrictions +; respectively. It also accepts comma separated list such as text,file,image. +; To keep compatibility, some aliases are also available: +; true: an alias of all +; false: an alias of none +; yes: an alias of all +RestrictInboundClipboard=none + +[Sessions] +;; X11DisplayOffset - x11 display number offset +; Type: integer +; Default: 10 +X11DisplayOffset=10 + +;; MaxSessions - maximum number of connections to an xrdp server +; Type: integer +; Default: 0 +MaxSessions=50 + +;; KillDisconnected - kill disconnected sessions +; Type: boolean +; Default: false +; if 1, true, or yes, every session will be killed within DisconnectedTimeLimit +; seconds after the user disconnects +KillDisconnected=false + +;; DisconnectedTimeLimit (seconds) - wait before kill disconnected sessions +; Type: integer +; Default: 0 +; if KillDisconnected is set to false, this value is ignored +DisconnectedTimeLimit=0 + +;; IdleTimeLimit (seconds) - wait before disconnect idle sessions +; Type: integer +; Default: 0 +; Set to 0 to disable idle disconnection. +IdleTimeLimit=0 + +;; Policy - session allocation policy +; Type: enum [ "Default" | "UBD" | "UBI" | "UBC" | "UBDI" | "UBDC" ] +; "Default" session per +; "UBD" session per +; "UBI" session per +; "UBC" session per +; "UBDI" session per +; "UBDC" session per +Policy=Default + +[Logging] +; Note: Log levels can be any of: core, error, warning, info, debug, or trace +LogFile=xrdp-sesman.log +LogLevel=debug +EnableSyslog=true +#SyslogLevel=INFO +#EnableConsole=false +#ConsoleLevel=INFO +#EnableProcessId=false + +[LoggingPerLogger] +; Note: per logger configuration is only used if xrdp is built with +; --enable-devel-logging +#sesman.c=INFO +#main()=INFO + +; +; Session definitions - startup command-line parameters for each session type +; + +[Xorg] +; Specify the path of non-suid Xorg executable. It might differ depending +; on your distribution and version. Find out the appropreate path for your +; environment. The typical path is known as follows: +; +; Fedora 26 or later : param=/usr/libexec/Xorg +; Debian 9 or later : param=/usr/lib/xorg/Xorg +; Ubuntu 16.04 or later : param=/usr/lib/xorg/Xorg +; Arch Linux : param=/usr/lib/Xorg +; CentOS 7 : param=/usr/bin/Xorg or param=Xorg +; CentOS 8 : param=/usr/libexec/Xorg +; +param=Xorg +; Leave the rest paramaters as-is unless you understand what will happen. +param=-config +param=xrdp/xorg.conf +param=-noreset +param=-nolisten +param=tcp +param=-logfile +param=.xorgxrdp.%s.log + +[Xvnc] +param=Xvnc +param=-bs +param=-nolisten +param=tcp +param=-localhost +param=-dpi +param=96 +param=-SecurityTypes +param=None +param=-depth +param=24 + +[Chansrv] +; drive redirection +; See sesman.ini(5) for the format of this parameter +#FuseMountName=/run/user/%u/thinclient_drives +#FuseMountName=/media/thinclient_drives/%U/thinclient_drives +FuseMountName=thinclient_drives +; this value allows only the user to acess their own mapped drives. +; Make this more permissive (e.g. 022) if required. +FileUmask=077 +; Can be used to disable FUSE functionality - see sesman.ini(5) +#EnableFuseMount=false +; Uncomment this line only if you are using GNOME 3 versions 3.29.92 +; and up, and you wish to cut-paste files between Nautilus and Windows. Do +; not use this setting for GNOME 4, or other file managers +#UseNautilus3FlistFormat=true + +[ChansrvLogging] +; Note: one log file is created per display and the LogFile config value +; is ignored. The channel server log file names follow the naming convention: +; xrdp-chansrv.${DISPLAY}.log +; +; Note: Log levels can be any of: core, error, warning, info, debug, or trace +LogLevel=INFO +EnableSyslog=true +#SyslogLevel=INFO +#EnableConsole=false +#ConsoleLevel=INFO +#EnableProcessId=false + +[ChansrvLoggingPerLogger] +; Note: per logger configuration is only used if xrdp is built with +; --enable-devel-logging +#chansrv.c=INFO +#main()=INFO + +[SessionVariables] +PULSE_SCRIPT=/etc/xrdp/pulse/default.pa diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index b95703966..ccd066999 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -42,6 +42,11 @@ "source": "{{user `pub_key`}}", "destination": "~/tmp/odsbox.pub" }, + { + "type": "file", + "source": "{{user `ssh_private_key_file_path`}}", + "destination": "~/tmp/odsbox" + }, { "type": "shell", "inline": [ @@ -49,6 +54,7 @@ "mkdir -p ~/.ssh", "chmod go-xrw ~/.ssh", "mv ~/tmp/odsbox.pub ~/.ssh/odsbox.pub", + "mv ~/tmp/odsbox ~/.ssh/odsbox", "touch ~/.ssh/authorized_keys", "cat ~/.ssh/odsbox.pub >> ~/.ssh/authorized_keys", "chmod go-xrw ~/.ssh/*", diff --git a/ods-devenv/scripts/bootstrap.sh b/ods-devenv/scripts/bootstrap.sh index a1e0232e7..0ffbebd57 100755 --- a/ods-devenv/scripts/bootstrap.sh +++ b/ods-devenv/scripts/bootstrap.sh @@ -13,28 +13,24 @@ esac; shift; done ods_git_ref="${ods_git_ref:-master}" echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" +echo " " +echo "--------------------------------------------------------------" echo "Show current ssh passwords. We need them to connect and debug." -ls -1a ${HOME}/.ssh | grep -v "^\.\.*$" | while read -r file; do echo " "; echo ${file}; echo "----"; cat ${HOME}/.ssh/${file} || true; done - -needsKey=0 -grep -q "openshift@odsbox.lan" ~/.ssh/authorized_keys || needsKey=1 -if [ 1 -eq $needsKey ]; then - echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDXwKT01BaNoSUXaqzrmaM+mRFyx+ERrmVq7v+1Xgtiru+c07l6vaIK6/GE+E/GH4QESB7phl9dLMlmKOXZZqMixa1MD0V0eaFP4YXCaaTGEPyLaNRNhTXert0IihfAucOIzdFGWn1795IshJ7rj/GdQQ0qrAMVYguz4iC+hR1IznuTkJivIvDCuDo5LG+DksisJlGTLpdTZIeCCJgUUFpevJbtcZKwbUqzd6fo0tQiuk/J0TtO4SlXUvDge7mWGxMCIFPTM+e6AFSI6deviiiyhOHzcP9luJQPBpONBXzGcLXMqm1UsYaOl4OsKcyJSk5PgSKBM0KV4RX2Pm3i0vlz7gbvK65sJKQQlBZBm+W16mT3Ke8ytg9I1Kf9/kplKSvSwxOkmClgWCKzxIT7vsozLnSBuPSyTLZ98RuUFhjDvHMFvmGe0oTGaUB0/QQdhROzYRtw7+/CQOzWuZx32B0CtLpd55iyL8261StbY/92B8QDdIQXg9bzsfx6hXSNLlc= openshift@odsbox.lan" >> ${HOME}/.ssh/authorized_keys - sleep 5 - cat ${HOME}/.ssh/authorized_keys -else - echo "Key for openshift@odsbox.lan was previously in file ${HOME}/.ssh/authorized_keys " -fi -chmod -c 700 ${HOME}/.ssh -chmod -c 600 ${HOME}/.ssh/authorized_keys - +echo "--------------------------------------------------------------" +ls -1a ${HOME}/.ssh | grep -v "^\.\.*$" | \ + while read -r file; do echo " "; echo ${file}; echo "------------"; cat ${HOME}/.ssh/${file} || true; done +echo " " +echo "--------------------------------------------------------------" +echo " " # install modern git version as required by repos.sh -if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi sudo yum update -y || true sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm || true sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm || true -sudo yum -y install git gitk iproute || true +sudo yum -y install git gitk iproute lsof xrdp tigervnc-server remmina firewalld git2u-all glances golang jq tree \ + etckeeper unzip \ + adoptopenjdk-8-hotspot adoptopenjdk-11-hotspot adoptopenjdk-8-hotspot-jre adoptopenjdk-11-hotspot-jre \ + || true opendevstack_dir="${HOME}/opendevstack" mkdir -pv "${opendevstack_dir}" diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index 5f854e4cf..f0d285418 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -12,12 +12,12 @@ fi sudo yum update -y sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm -sudo yum -y install git gitk iproute lsof +sudo yum -y install git gitk iproute lsof xrdp tigervnc-server remmina firewalld git2u-all glances golang jq tree htop etckeeper + curl -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-94.0.4606.81-1.x86_64.rpm sudo yum install -y google-chrome-stable-94.0.4606.81-1.x86_64.rpm -sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm -sudo yum -y install xrdp tigervnc-server remmina rm -f google-chrome-stable-94.0.4606.81-1.x86_64.rpm + sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum -y install docker-ce-3:19.03.14-3.el7.x86_64 sudo yum install -y centos-release-openshift-origin311 @@ -34,29 +34,29 @@ sudo systemctl status sshd sudo adduser openshift echo -e "openshift\nopenshift" | sudo passwd openshift sudo usermod -a -G wheel openshift -sed -i 's/%wheel\s*ALL=(ALL)\s*ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers - -sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm -sudo yum -y install firewalld git2u-all glances golang jq tree +sudo sed -i 's/%wheel\s*ALL=(ALL)\s*ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers sudo usermod -a -G docker openshift # etckeeper -sudo yum install -y etckeeper cd /etc/ sudo etckeeper init sudo etckeeper commit -m "Initial commit" # GUI: +sudo yum groupinstall -y "MATE Desktop" +sudo yum groups -y install "GNOME Desktop" + +# GUI access via XRDP sudo firewall-cmd --add-port=3389/tcp --permanent sudo firewall-cmd --add-port=3350/tcp --permanent sudo firewall-cmd --reload -sudo yum groupinstall -y "MATE Desktop" sudo systemctl enable xrdp sudo chcon --type=bin_t /usr/sbin/xrdp sudo chcon --type=bin_t /usr/sbin/xrdp-sesman sudo sed -i 's/^\s*ListenAddress=127.0.0.1\s*$/ListenAddress=0.0.0.0/g' /etc/xrdp/sesman.ini +# JDK cat < /tmp/adoptopenjdk.repo [AdoptOpenJDK] name=AdoptOpenJDK @@ -68,9 +68,11 @@ EOF sudo mv /tmp/adoptopenjdk.repo /etc/yum.repos.d/adoptopenjdk.repo -sudo yum install adoptopenjdk-8-hotspot adoptopenjdk-11-hotspot adoptopenjdk-8-hotspot-jre adoptopenjdk-11-hotspot-jre +sudo yum -y install adoptopenjdk-8-hotspot adoptopenjdk-11-hotspot adoptopenjdk-8-hotspot-jre adoptopenjdk-11-hotspot-jre -sudo yum -y install firewalld git2u-all glances golang jq tree lsof +sudo sed -i 's/.*crypt_level=.*/crypt_level=none/g' /etc/xrdp/xrdp.ini +sudo sed -i 's/.*max_bpp=.*/max_bpp=24/g' /etc/xrdp/xrdp.ini +sudo sed -i 's/.*xserverbpp=.*/xserverbpp=24/g' /etc/xrdp/xrdp.ini echo " " diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 126d568cb..8c7399ad8 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -88,24 +88,15 @@ function configure_sshd_server() { sudo systemctl restart sshd sudo systemctl status sshd sleep 5 - sudo cat /etc/ssh/sshd_config + echo "Showing sshd_config important settings: " + sudo cat /etc/ssh/sshd_config | grep -v '\(^\s*#.*$\|^\s*$\)' } function configure_sshd_openshift_keys() { + sleep 5 echo "Show current ssh passwords. We need them to connect and debug." ls -1a ${HOME}/.ssh | grep -v "^\.\.*$" | while read -r file; do echo " "; echo ${file}; echo "----"; cat ${HOME}/.ssh/${file} || true; done - local needsKey - needsKey=0 - grep -q "openshift@odsbox.lan" ~/.ssh/authorized_keys || needsKey=1 - if [ 1 -eq $needsKey ]; then - echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDXwKT01BaNoSUXaqzrmaM+mRFyx+ERrmVq7v+1Xgtiru+c07l6vaIK6/GE+E/GH4QESB7phl9dLMlmKOXZZqMixa1MD0V0eaFP4YXCaaTGEPyLaNRNhTXert0IihfAucOIzdFGWn1795IshJ7rj/GdQQ0qrAMVYguz4iC+hR1IznuTkJivIvDCuDo5LG+DksisJlGTLpdTZIeCCJgUUFpevJbtcZKwbUqzd6fo0tQiuk/J0TtO4SlXUvDge7mWGxMCIFPTM+e6AFSI6deviiiyhOHzcP9luJQPBpONBXzGcLXMqm1UsYaOl4OsKcyJSk5PgSKBM0KV4RX2Pm3i0vlz7gbvK65sJKQQlBZBm+W16mT3Ke8ytg9I1Kf9/kplKSvSwxOkmClgWCKzxIT7vsozLnSBuPSyTLZ98RuUFhjDvHMFvmGe0oTGaUB0/QQdhROzYRtw7+/CQOzWuZx32B0CtLpd55iyL8261StbY/92B8QDdIQXg9bzsfx6hXSNLlc= openshift@odsbox.lan" >> ${HOME}/.ssh/authorized_keys - sleep 5 - cat ${HOME}/.ssh/authorized_keys - else - echo "Key for openshift@odsbox.lan was previously in file ${HOME}/.ssh/authorized_keys " - fi - chmod -c 600 ${HOME}/.ssh/authorized_keys - + sleep 1 } ####################################### @@ -158,10 +149,29 @@ function check_system_setup() { # remove full update /cut 20210901 install_packages_yum_utils_epel_release - sudo yum -y install firewalld git2u-all glances golang jq tree lsof || true - go get github.com/ericchiang/pup - mv "${HOME}/go/bin/pup" "${HOME}/bin/" + sudo yum -y install firewalld git2u-all glances golang jq tree lsof iproute || true + + sleep 1 + echo " " + echo "Installing go dependencies... " + echo -n "Working directory: " + pwd + echo "go get github.com/ericchiang/pup" + go get -u -x github.com/ericchiang/pup + cp -vf "${HOME}/go/bin/pup" "${HOME}/bin/" + + echo "Installing 'tests' folder go dependencies... " + pushd tests + echo "go install github.com/jstemmer/go-junit-report" + which go-junit-report || go install github.com/jstemmer/go-junit-report + + go mod download | true + go get ./... | true + go list -f '{{ join .Imports "\n" }}' | true + go get -u -v -f all | true + popd + echo " " if ! systemctl status firewalld | grep -i running; then systemctl start firewalld fi @@ -468,10 +478,11 @@ function setup_rdp() { sudo firewall-cmd --zone=public --permanent --add-port=3350/tcp sudo firewall-cmd --reload - echo "exec /usr/bin/mate-session" > ${HOME}/.xinitrc - echo "exec /usr/bin/mate-session" > ${HOME}/startwm.sh - echo "exec /usr/bin/mate-session" > ${HOME}/.Xclients - chmod +x ${HOME}/.xinitrc ${HOME}/startwm.sh ${HOME}/.Xclients + # Recommended, but not mandatory. + # echo "exec /usr/bin/mate-session" > ${HOME}/.xinitrc + # echo "exec /usr/bin/mate-session" > ${HOME}/startwm.sh + # echo "exec /usr/bin/mate-session" > ${HOME}/.Xclients + # chmod +x ${HOME}/.xinitrc ${HOME}/startwm.sh ${HOME}/.Xclients } @@ -650,6 +661,13 @@ function download_tailor() { # None ####################################### function print_system_setup() { + echo " " + yum whatprovides *bin/ip || true + sudo yum -y install iproute || true + echo " " + echo "-------------------" + echo "-- System setup: --" + echo "-------------------" echo "network interfaces: $(ip a)" echo "tailor version: $(tailor version)" echo "oc version: $(oc version)" @@ -657,6 +675,8 @@ function print_system_setup() { echo "go version: $(go version)" echo "git version: $(git --version)" echo "docker version: $(docker --version)" + echo "-------------------" + echo " " } ###### @@ -666,6 +686,7 @@ function print_system_setup() { function atlassian_stack_reset() { echo "atlassian_stack_reset: " + echo "IMPORTANT: remove from /etc/hosts lines with references to jira and bitbucket before run this method" docker ps -a | grep -i "\(jira\|atlass\|bitbucket\)" | sed 's@[[:space:]]\+@ @g' | cut -d' ' -f1 | while read -r container_id ; do @@ -673,24 +694,11 @@ function atlassian_stack_reset() { docker rm $container_id done - echo "Folders that need to be removed manually: ~/bitbucket_data ~/jira_data ~/mysql_data" - for data_file in bitbucket_data jira_data mysql_data - do - if [ -d "${HOME}/$data_file" ]; then - echo "Removing ${HOME}/$data_file ... " - sudo rm -fR ${HOME}/$data_file - fi - done - - prepare_atlassian_stack startup_and_follow_atlassian_mysql startup_atlassian_crowd startup_and_follow_jira startup_and_follow_bitbucket - - stop_ods - startup_ods } @@ -970,11 +978,18 @@ function configure_jira2crowd() { --data "newDirectoryType=CROWD&next=Next" \ --compressed \ --insecure --location --silent --output ${atl_token_fn} --stderr ${errors_file} - sleep 5 - echo "Results from curl setting atl token: " - cat ${atl_token_fn} || echo "File with Jira xsrf atl_token (${atl_token_fn}) is EMPTY or does NOT exist !!! " - cat ${errors_file} - sleep 5 + + echo "Evaluating results from curl setting atl token: " + if [ ! -f ${atl_token_fn} ]; then + echo "File with Jira xsrf atl_token (${atl_token_fn}) is EMPTY or does NOT exist !!! " + fi + if [ -f ${errors_file} ]; then + sleep 5 + cat ${errors_file} + sleep 5 + else + echo " " >> ${errors_file} + fi if grep -iq "HTTP/1.1 503" ${errors_file} ; then # docker logs --details jira || echo "Problem getting docker logs of jira container !! " @@ -1003,9 +1018,9 @@ function configure_jira2crowd() { # send crowd config data local crowd_service_name crowd_service_name="crowd.odsbox.lan" - echo "Assuming crowd service to listen at ${crowd_service_name}:8095" + echo "Assuming crowd service listens at ${crowd_service_name}:8095" local crowd_directory_id - crowd_directory_id=$(curl 'http://172.17.0.1:18080/plugins/servlet/embedded-crowd/configure/crowd/' \ + crowd_directory_id=$(curl -sS 'http://172.17.0.1:18080/plugins/servlet/embedded-crowd/configure/crowd/' \ -b "${cookie_jar_path}" \ -c "${cookie_jar_path}" \ --data "name=Crowd+Server&crowdServerUrl=http%3A%2F%2F${crowd_service_name}%3A8095%2Fcrowd%2F&applicationName=jira&applicationPassword=openshift&httpTimeout=&httpMaxConnections=&httpProxyHost=&httpProxyPort=&httpProxyUsername=&httpProxyPassword=&crowdPermissionOption=READ_ONLY&_nestedGroupsEnabled=visible&incrementalSyncEnabled=true&_incrementalSyncEnabled=visible&groupSyncOnAuthMode=ALWAYS&crowdServerSynchroniseIntervalInMin=60&save=Save+and+Test&atl_token=${atl_token}&directoryId=0" \ @@ -1014,9 +1029,10 @@ function configure_jira2crowd() { --location \ | pup 'table#directory-list tbody tr:nth-child(even) td.id-column text{}' \ | tr -d "[:space:]") + echo "Crowd directory id: ${crowd_directory_id}" # sync bitbucket with crowd directory - curl "http://172.17.0.1:18080/plugins/servlet/embedded-crowd/directories/sync?directoryId=${crowd_directory_id}&atl_token=${atl_token}" \ + curl -sS "http://172.17.0.1:18080/plugins/servlet/embedded-crowd/directories/sync?directoryId=${crowd_directory_id}&atl_token=${atl_token}" \ -b "${cookie_jar_path}" \ -c "${cookie_jar_path}" \ --compressed \ @@ -1585,6 +1601,10 @@ function register_dns() { local ip ip=$2 + echo "Checking if ip or service name entries are in /etc/hosts ... " + # remove previous entries if is needed + grep -i "\(${ip}\|${service_name}\)" /etc/hosts || true + # register new ip with /etc/hosts echo -n "Configuring /etc/hosts with ${service_name} with ip ${ip} by " @@ -1681,6 +1701,8 @@ function delete_ods_repositories() { # None ####################################### function push_ods_repositories() { + echo " " + echo "Pushing ODS repositories..." pwd ./scripts/push-local-repos.sh --bitbucket-url "http://openshift:openshift@${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}" --bitbucket-ods-project OPENDEVSTACK --ods-git-ref "${ods_git_ref}" } @@ -1696,6 +1718,8 @@ function push_ods_repositories() { # None ####################################### function set_shared_library_ref() { + echo " " + echo "Setting shared library reference to ${ods_git_ref}" pwd ./scripts/set-shared-library-ref.sh --ods-git-ref "${ods_git_ref}" } @@ -1731,7 +1755,8 @@ function inspect_mysql_ip() { # None ####################################### function create_configuration() { - echo "create configuration" + echo " " + echo "Create the environment configuration and upload it to Bitbucket ods-configuration repository..." pwd ods-setup/config.sh --verbose --bitbucket "http://openshift:openshift@${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}" pushd ../ods-configuration @@ -1811,6 +1836,8 @@ function create_configuration() { } function install_ods_project() { + echo " " + echo "Installing ods project..." ods-setup/setup-ods-project.sh --namespace ods --reveal-secrets --verbose --non-interactive } @@ -1990,6 +2017,15 @@ function setup_docgen() { # None ####################################### function setup_jenkins_agents() { + + # Wait for logs so they do not get mixed with logs of the following part. + sleep 5 + echo " " + echo "----------------------------------------------------------------------------------" + echo "--------- Setting up jenkins agents. Creating build configurations... ------------" + echo "----------------------------------------------------------------------------------" + echo " " + # to be save login as developer again oc login -u developer -p anypwd @@ -2006,9 +2042,10 @@ function setup_jenkins_agents() { fi pushd "${quickstarters_jenkins_agents_dir}" - # create build configurations in parallel for technology in $(ls -d -- */) do + echo " " + echo " " technology=${technology%/*} echo "Current user $(oc whoami)" pushd "${technology}/${ocp_config_folder}" @@ -2032,19 +2069,44 @@ function setup_jenkins_agents() { echo "build configuration job ${job} returned." done - local technologies - local technologies_index + # Wait for logs so they do not get mixed with logs of the following part. + sleep 5 + echo " " + echo "----------------------------------------------------------------------------------" + echo "--------- Setting up jenkins agents. Building from configurations... -------------" + echo "----------------------------------------------------------------------------------" + echo " " + - technologies_index=0 + # We tried to run tasks in parallel, but logs get combined and you cannot read them anymore. + # Besides, there is no real improvement with respect to time spent in pipeline. + + # local technologies + # local technologies_index + + # technologies_index=0 for technology in $(ls -d -- */) do technology=${technology%/*} - technologies[${technologies_index}]=${technology} + # technologies[${technologies_index}]=${technology} + + sleep 5 + echo " " + echo " " + echo "----------------------------------------------------------------------------------------------------------- " + echo "Starting build of jenkins-agent for technology ${technology}. Logs to ${log_folder}/${technology}_build.log " + echo "----------------------------------------------------------------------------------------------------------- " + echo " " - echo "Starting (in background) build of jenkins-agent for technology ${technology}. Logs to ${log_folder}/${technology}_build.log " - oc start-build -n "${NAMESPACE}" "jenkins-agent-${technology}" --follow --wait > "${log_folder}/${technology}_build.log" 2>&1 & - pids[${technologies_index}]=$! + # oc start-build -n "${NAMESPACE}" "jenkins-agent-${technology}" --follow --wait > "${log_folder}/${technology}_build.log" 2>&1 & + # pids[${technologies_index}]=$! + oc start-build -n "${NAMESPACE}" "jenkins-agent-${technology}" --follow --wait | tee "${log_folder}/${technology}_build.log" + if [ 0 -ne ${PIPESTATUS[0]} ]; then + echo " " + echo "ERROR: Could not build jenkins-agent for technology ${technology}" + echo " " + fi done popd @@ -2053,37 +2115,46 @@ function setup_jenkins_agents() { # return_value=$? # done - local foundErrorInTechnologies=0 - for technologies_index_aux in ${!technologies[@]}; do - technology=${technologies[$technologies_index_aux]} - echo "Waiting for the result of building jenkins-agent for technology ${technology}" - wait ${pids[$technologies_index_aux]} - return_value=$? - cat ${log_folder}/${technology}_build.log - if [ 0 -ne ${return_value} ]; then - echo "Failed building jenkins-agent for technology ${technology}" - foundErrorInTechnologies=1 - fi - done + # local foundErrorInTechnologies=0 + # for technologies_index_aux in ${!technologies[@]}; do + # technology=${technologies[$technologies_index_aux]} + # echo "Waiting for the result of building jenkins-agent for technology ${technology}" + # wait ${pids[$technologies_index_aux]} + # return_value=$? + # cat ${log_folder}/${technology}_build.log + # if [ 0 -ne ${return_value} ]; then + # echo "Failed building jenkins-agent for technology ${technology}" + # foundErrorInTechnologies=1 + # fi + # done - if [ 0 -ne ${foundErrorInTechnologies} ]; then - echo "Look for the line 'Failed building jenkins-agent for technology' above." - echo "Exiting because we have errors building a jenkins-agent. " - exit 1 - fi + # if [ 0 -ne ${foundErrorInTechnologies} ]; then + # echo "Look for the line 'Failed building jenkins-agent for technology' above." + # echo "Exiting because we have errors building a jenkins-agent. " + # exit 1 + # fi for job in $(jobs -p) do - echo "Waiting for jenkins-agent builds ${job} to complete." + echo "Waiting for jenkins-agent build job ${job} to complete." wait "${job}" return_value=$? if [[ "${return_value}" != 0 ]] then - echo "Jenkins agent setup failed." + echo " " + echo "ERROR: Jenkins agent setup failed." + echo " " exit 1 fi echo "build job ${job} returned." done + + sleep 5 + echo " " + echo "-------------------------------------------------------" + echo "-------- ENDED Setting up jenkins agents ... ----------" + echo "-------------------------------------------------------" + echo " " } ####################################### @@ -2096,15 +2167,28 @@ function setup_jenkins_agents() { # None ####################################### function run_smoke_tests() { + sleep 5 + echo " " + echo "---------------------------------------------------------" + echo "-------- STARTING execution of SMOKE TESTS ... ----------" + echo "---------------------------------------------------------" + echo " " + oc get is -n "${NAMESPACE}" export GITHUB_WORKSPACE="${HOME}/opendevstack" pushd tests export PROVISION_API_HOST=https://prov-app-ods.ocp.odsbox.lan + pwd + echo "make test" make test popd git reset --hard + if [ -x ./tests/scripts/free-unused-resources.sh ]; then + ./tests/scripts/free-unused-resources.sh + fi + # buying extra time for the quickstarter tests restart_atlassian_suite echo -n "Waiting for bitbucket to become available" @@ -2115,12 +2199,33 @@ function run_smoke_tests() { done echo "bitbucket up and running." + sleep 5 + echo " " + echo "-----------------------------------------------------------------" + echo "-------- STARTING execution of QUICKSTARTERS TESTS ... ----------" + echo "-----------------------------------------------------------------" + echo " " + pushd tests - make test-quickstarter + pwd + echo "make test-quickstarter" + make test-quickstarter popd # clean up after tests oc delete project unitt-cd unitt-dev unitt-test + + sleep 5 + echo " " + echo "--------------------------------------------------------------" + echo "-------- ENDED execution of QUICKSTARTERS TESTS ... ----------" + echo "--------------------------------------------------------------" + echo " " + + if [ -x ./tests/scripts/free-unused-resources.sh ]; then + ./tests/scripts/free-unused-resources.sh + fi + } function startup_ods() { diff --git a/ods-devenv/scripts/run-on-aws.sh b/ods-devenv/scripts/run-on-aws.sh index 62673764f..e567263df 100755 --- a/ods-devenv/scripts/run-on-aws.sh +++ b/ods-devenv/scripts/run-on-aws.sh @@ -163,7 +163,7 @@ if [[ -z "${host}" ]]; then echo "Created instance with ID=${instance_id}, waiting for it to be running ..." aws ec2 wait instance-running --instance-ids "$instance_id" echo "Instance with ID=${instance_id} running" - + aws ec2 create-tags --resources "${instance_id}" --tags "Key=Name,Value=${ec2_instance_name}" echo "Started new EC2 instance with name \"${ec2_instance_name}\"" diff --git a/scripts/repos.sh b/scripts/repos.sh index a751f4a94..c63fe7a90 100755 --- a/scripts/repos.sh +++ b/scripts/repos.sh @@ -158,7 +158,10 @@ for REPO in ${REPOS//,/ }; do fi fi else - echo_info "Creating new branch based on '${REMOTE_NAME}/${CHECKOUT_REF}'." + echo_info "Creating new branch based on '${REMOTE_NAME}/${CHECKOUT_REF}': show remotes && fetch all && check branch exists && checkout" + git remote -v + git fetch --all + git branch -a | grep -i "${CHECKOUT_REF}" git checkout -b "${CHECKOUT_REF}" "${REMOTE_NAME}/${CHECKOUT_REF}" --no-track fi fi diff --git a/tests/go.mod b/tests/go.mod index 8cd0735e4..08a646846 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -3,6 +3,8 @@ module github.com/opendevstack/ods-core/tests go 1.13 require ( + github.com/ericchiang/pup v0.4.0 // indirect + github.com/fatih/color v1.13.0 // indirect github.com/ghodss/yaml v1.0.0 github.com/gogo/protobuf v1.3.1 // indirect github.com/golang/protobuf v1.4.2 // indirect @@ -14,13 +16,16 @@ require ( github.com/json-iterator/go v1.1.8 // indirect github.com/jstemmer/go-junit-report v0.9.1 github.com/kr/pretty v0.2.1 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect github.com/modern-go/reflect2 v1.0.1 // indirect github.com/openshift/api v0.0.0-20180801171038-322a19404e37 github.com/openshift/client-go v3.9.0+incompatible github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/spf13/pflag v1.0.5 // indirect golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 // indirect + golang.org/x/net v0.0.0-20220524220425-1d687d428aca // indirect golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 // indirect + golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index c1bec416a..95eec52f4 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -3,6 +3,10 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/ericchiang/pup v0.4.0 h1:h9ahJXbHA3V8MFfAmasxi8DCx0Gu+aLAAEtb8Q3KCOo= +github.com/ericchiang/pup v0.4.0/go.mod h1:PpPzKkuAB7ypCQf9+wxC5MzaGaIDdgjtlpvc/0NaTJc= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= @@ -46,6 +50,12 @@ github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -72,16 +82,30 @@ golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20220524220425-1d687d428aca h1:xTaFYiPROfpPhqrfTIDXj0ri1SpfueYT951s4bAuDO8= +golang.org/x/net v0.0.0-20220524220425-1d687d428aca/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/tests/quickstarter-test.sh b/tests/quickstarter-test.sh index 08da9543a..ffcd91997 100755 --- a/tests/quickstarter-test.sh +++ b/tests/quickstarter-test.sh @@ -3,6 +3,8 @@ set -eu set -o pipefail export CGO_ENABLED=0 +THIS_SCRIPT="$(basename $0)" + # By default we run all quickstarter tests, otherwise just the quickstarter # passed as the first argument to this script. QUICKSTARTER=${1-"ods-quickstarters/..."} @@ -12,7 +14,8 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ODS_CORE_DIR=${SCRIPT_DIR%/*} if ! oc whoami &> /dev/null; then - echo "You need to login to OpenShift to run the tests" + echo "${THIS_SCRIPT}: You need to login to OpenShift to run the tests" + echo "${THIS_SCRIPT}: Returning with exit code 1" exit 1 fi @@ -31,11 +34,27 @@ CD_USER_PWD_B64=$(${ODS_CORE_DIR}/scripts/get-config-param.sh CD_USER_PWD_B64) --password=$(base64 -d - <<< ${CD_USER_PWD_B64}) \ --project=${BITBUCKET_TEST_PROJECT} -echo "Running tests (${QUICKSTARTER}). Output will take a while to arrive ..." +echo " " +echo "${THIS_SCRIPT}: Cleaning a little bit the host machine to not suffer from limitated resources... " +echo " " +if [ -f ./scripts/free-unused-resources.sh ]; then + chmod +x ./scripts/free-unused-resources.sh + ./scripts/free-unused-resources.sh || true +else + echo "Not found script ./scripts/free-unused-resources.sh " +fi + +echo " " +echo "${THIS_SCRIPT}: Running tests (${QUICKSTARTER}). Output will take a while to arrive ..." +echo " " -go test -v -count=1 -timeout 3h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER} | tee test-quickstarter-results.txt 2>&1 +# Should fix error " panic: test timed out after " +echo "${THIS_SCRIPT}: go test -v -count=1 -timeout 5h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER}" +go test -v -count=1 -timeout 5h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER} | tee test-quickstarter-results.txt 2>&1 exitcode="${PIPESTATUS[0]}" if [ -f test-quickstarter-results.txt ]; then go-junit-report < test-quickstarter-results.txt > test-quickstarter-report.xml fi + +echo "${THIS_SCRIPT}: Returning with exit code ${exitcode}" exit $exitcode diff --git a/tests/quickstarter/quickstarter_test.go b/tests/quickstarter/quickstarter_test.go index 7269af38e..ad1420887 100644 --- a/tests/quickstarter/quickstarter_test.go +++ b/tests/quickstarter/quickstarter_test.go @@ -61,15 +61,29 @@ func TestQuickstarter(t *testing.T) { t.Fatalf("Error decoding cd_user password: %s", err) } - fmt.Printf("Running test steps found in following directories:\n") + fmt.Printf("\n\nRunning test steps found in the following directories:\n") for _, quickstarterPath := range quickstarterPaths { fmt.Printf("- %s\n", quickstarterPath) } + fmt.Printf("\n\n") + for _, quickstarterPath := range quickstarterPaths { testdataPath := fmt.Sprintf("%s/testdata", quickstarterPath) quickstarterRepo := filepath.Base(filepath.Dir(quickstarterPath)) quickstarterName := filepath.Base(quickstarterPath) + // Run cleanup operations to ensure we always have enough resources. + stdout, stderr, err := utils.RunScriptFromBaseDir( + "tests/scripts/free-unused-resources.sh", + []string{}, []string{}, + ) + + if err != nil { + t.Fatalf("Error cleaning up : \nStdOut: %s\nStdErr: %s\nErr: %s\n", stdout, stderr, err) + } else { + fmt.Printf("Cleaned cluster state.\n") + } + // Run each quickstarter test in a subtest to avoid exiting early // when t.Fatal is used. t.Run(quickstarterName, func(t *testing.T) { @@ -85,7 +99,7 @@ func TestQuickstarter(t *testing.T) { step.ComponentID = s.ComponentID } fmt.Printf( - "Run step #%d (%s) of quickstarter %s/%s ... %s\n", + "\n\nRun step #%d (%s) of quickstarter %s/%s ... %s\n", (i + 1), step.Type, quickstarterRepo, diff --git a/tests/scripts/free-unused-resources.sh b/tests/scripts/free-unused-resources.sh new file mode 100755 index 000000000..847b938a7 --- /dev/null +++ b/tests/scripts/free-unused-resources.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +echo " " +echo "Freeing unused resources... " + +if docker ps -a | grep -q 'Exited .* ago' ; then + docker ps -a | grep 'Exited .* ago' | sed 's/\s\+/ /g' | cut -d ' ' -f 1 | while read id; do echo "docker rm $id"; docker rm $id; done +else + echo "No docker containers to remove. " +fi + +oc adm prune images --keep-tag-revisions=1 --keep-younger-than=30m --confirm || true + +echo " " +exit 0 diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index 4b7a88455..e4a7fd52d 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -5,6 +5,9 @@ set -o pipefail PROJECT=$1 BUILD_NAME=$2 LOG_URL=$(oc -n ${PROJECT} get build ${BUILD_NAME} -o jsonpath='{.metadata.annotations.openshift\.io/jenkins-log-url}') +echo " " +echo "Jenkins log url: ${LOG_URL}" +echo " " TOKEN=$(oc -n ${PROJECT} get sa/jenkins --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc -n ${PROJECT} get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -d -) curl --insecure -sS --header "Authorization: Bearer ${TOKEN}" ${LOG_URL} diff --git a/tests/smoke-test.sh b/tests/smoke-test.sh index 5156a70af..5ed7db5e0 100755 --- a/tests/smoke-test.sh +++ b/tests/smoke-test.sh @@ -4,6 +4,7 @@ set +e set -o pipefail export CGO_ENABLED=0 +THIS_SCRIPT="$(basename ${0})" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ODS_CORE_DIR=${SCRIPT_DIR%/*} @@ -13,17 +14,24 @@ export PROVISION_API_HOST=https://prov-app-${ODS_NAMESPACE}${OPENSHIFT_APPS_BASE echo "PROVISION_API_HOST = ${PROVISION_API_HOST}" if ! oc whoami &> /dev/null; then - echo "You need to login to OpenShift to run the tests" + echo "${THIS_SCRIPT}: You need to login to OpenShift to run the tests" exit 1 fi if [ -f test-smoketest-results.txt ]; then rm test-smoketest-results.txt fi + +sleep 5 +echo " " +echo "${THIS_SCRIPT}: go test -v -count=1 -timeout 140m github.com/opendevstack/ods-core/tests/smoketest " go test -v -count=1 -timeout 140m github.com/opendevstack/ods-core/tests/smoketest | tee test-smoketest-results.txt 2>&1 -exitcode=$? +exit_code=$? +echo "${THIS_SCRIPT}: return value: ${exit_code}" + if [ -f test-smoketest-results.txt ]; then set -e go-junit-report < test-smoketest-results.txt > test-smoketest-report.xml fi -exit $exitcode + +exit $exit_code diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index 58f96c5ee..76f22b103 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -125,7 +125,8 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin } } } else { - fmt.Printf("Waiting for build to complete: %s. Current status: %s\n", buildName, build.Status.Phase) + fmt.Printf("Waiting (%d/%d) for build to complete: %s. Current status: %s\n", count, max, buildName, build.Status.Phase) + fmt.Printf("To get more info, use print-jenkins-log.sh %s %s \n", jenkinsNamespace, buildName) } count++ } From 5594ebe34f199183318c05326e6df94f1d13dd8b Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Tue, 31 May 2022 09:40:46 +0200 Subject: [PATCH 075/217] git checkout task/upgrade-atlassian-stack -- ods-devenv/scripts/deploy.sh --- ods-devenv/scripts/deploy.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 8c7399ad8..de686c3ff 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -165,7 +165,7 @@ function check_system_setup() { echo "go install github.com/jstemmer/go-junit-report" which go-junit-report || go install github.com/jstemmer/go-junit-report - go mod download | true + go mod download | true go get ./... | true go list -f '{{ join .Imports "\n" }}' | true go get -u -v -f all | true @@ -2085,6 +2085,7 @@ function setup_jenkins_agents() { # local technologies_index # technologies_index=0 + local errors_building_jenkins_agent=0 for technology in $(ls -d -- */) do technology=${technology%/*} @@ -2106,10 +2107,20 @@ function setup_jenkins_agents() { echo " " echo "ERROR: Could not build jenkins-agent for technology ${technology}" echo " " + errors_building_jenkins_agent=$((errors_building_jenkins_agent++)) fi done popd + if [ 0 -ne ${errors_building_jenkins_agent} ]; then + echo " " + echo "ERROR: We could not build jenkins agent for some technology. We'll abort pipeline." + echo "ERROR: Problem building the jenkins agent for ${errors_building_jenkins_agent} technologies." + echo "TIP: To get more deatils, look for the string 'Could not build jenkins-agent for technology'" + echo " " + exit 1 + fi + # for pid in ${[*]}; do # wait $pid # return_value=$? From ef0530031c5ae091e767ec47665ac0a10e17b493 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 3 Jun 2022 09:39:49 +0200 Subject: [PATCH 076/217] Updated deprecated go dependencies. --- tests/go.mod | 64 +++-- tests/go.sum | 790 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 834 insertions(+), 20 deletions(-) diff --git a/tests/go.mod b/tests/go.mod index 08a646846..966712e2b 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -3,36 +3,64 @@ module github.com/opendevstack/ods-core/tests go 1.13 require ( + dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 // indirect + github.com/cncf/xds/go v0.0.0-20220520190051-1e77728a1eaa // indirect + github.com/emicklei/go-restful v2.15.0+incompatible // indirect github.com/ericchiang/pup v0.4.0 // indirect github.com/fatih/color v1.13.0 // indirect github.com/ghodss/yaml v1.0.0 - github.com/gogo/protobuf v1.3.1 // indirect - github.com/golang/protobuf v1.4.2 // indirect - github.com/google/btree v1.0.0 // indirect - github.com/google/go-cmp v0.5.1 - github.com/googleapis/gnostic v0.4.0 // indirect + github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 // indirect + github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/go-openapi/jsonreference v0.20.0 // indirect + github.com/go-openapi/swag v0.21.1 // indirect + github.com/golang/glog v1.0.0 // indirect + github.com/golang/mock v1.6.0 // indirect + github.com/google/gnostic v0.6.9 // indirect + github.com/google/go-cmp v0.5.8 + github.com/google/gofuzz v1.2.0 // indirect + github.com/google/martian/v3 v3.2.1 // indirect + github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect + github.com/googleapis/go-type-adapters v1.0.0 // indirect github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect - github.com/imdario/mergo v0.3.8 // indirect - github.com/json-iterator/go v1.1.8 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.0-beta.4 // indirect + github.com/imdario/mergo v0.3.13 // indirect github.com/jstemmer/go-junit-report v0.9.1 github.com/kr/pretty v0.2.1 // indirect + github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.12 // indirect - github.com/modern-go/reflect2 v1.0.1 // indirect github.com/openshift/api v0.0.0-20180801171038-322a19404e37 github.com/openshift/client-go v3.9.0+incompatible github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 // indirect - golang.org/x/net v0.0.0-20220524220425-1d687d428aca // indirect - golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 // indirect + go.opencensus.io v0.23.0 // indirect + go.opentelemetry.io/proto/otlp v0.12.0 // indirect + golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect + golang.org/x/image v0.0.0-20220601225756-64ec528b34cd // indirect + golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect + golang.org/x/mobile v0.0.0-20220518205345-8578da9835fd // indirect + golang.org/x/mod v0.6.0-dev // indirect + golang.org/x/net v0.0.0-20220531201128-c960675eff93 // indirect + golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 // indirect golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect - golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect - gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect + golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect + golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect + golang.org/x/tools v0.1.9 // indirect + golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8 // indirect + google.golang.org/grpc v1.47.0 // indirect + google.golang.org/protobuf v1.28.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v2 v2.2.7 // indirect - k8s.io/api v0.0.0-20190222213804-5cb15d344471 - k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628 - k8s.io/client-go v0.0.0-20190228174230-b40b2a5939e4 + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + honnef.co/go/tools v0.0.1-2020.1.4 // indirect + k8s.io/api v0.24.1 + k8s.io/apimachinery v0.24.1 + k8s.io/client-go v0.24.1 k8s.io/klog v1.0.0 // indirect - sigs.k8s.io/yaml v1.1.0 // indirect + k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6 // indirect + rsc.io/quote/v3 v3.1.0 // indirect + sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/tests/go.sum b/tests/go.sum index 95eec52f4..025882a62 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -1,138 +1,924 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0 h1:DAq3r8y4mDgyB/ZPJ9v/5VJNqjgJAxTn6ZYLlUywOu8= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220520190051-1e77728a1eaa h1:B/lvg4tQ5hfFZd4V2hcSfFVfUvAK6GSFKxIIzwnkv8g= +github.com/cncf/xds/go v0.0.0-20220520190051-1e77728a1eaa/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.15.0+incompatible h1:8KpYO/Xl/ZudZs5RNOEhWMBY4hmzlZhhRd9cu+jrZP4= +github.com/emicklei/go-restful v2.15.0+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ericchiang/pup v0.4.0 h1:h9ahJXbHA3V8MFfAmasxi8DCx0Gu+aLAAEtb8Q3KCOo= github.com/ericchiang/pup v0.4.0/go.mod h1:PpPzKkuAB7ypCQf9+wxC5MzaGaIDdgjtlpvc/0NaTJc= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU= +github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= +github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/googleapis/gnostic v0.4.0 h1:BXDUo8p/DaxC+4FJY/SSx3gvnx9C1VdHNgaUkiEL5mk= -github.com/googleapis/gnostic v0.4.0/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.0-beta.4/go.mod h1:s6Y2jFmY4W++kYQudXl97XtztCcIhvEp869VVvHFpfs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/openshift/api v0.0.0-20180801171038-322a19404e37 h1:05irGU4HK4IauGGDbsk+ZHrm1wOzMLYjMlfaiqMrBYc= github.com/openshift/api v0.0.0-20180801171038-322a19404e37/go.mod h1:dh9o4Fs58gpFXGSYfnVxGR9PnV53I8TW84pQaJDdGiY= github.com/openshift/client-go v3.9.0+incompatible h1:13k3Ok0B7TA2hA3bQW2aFqn6y04JaJWdk7ITTyg+Ek0= github.com/openshift/client-go v3.9.0+incompatible/go.mod h1:6rzn+JTr7+WYS2E1TExP4gByoABxMznR6y2SnUIkmxk= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.12.0 h1:CMJ/3Wp7iOWES+CYLfnBv+DVmPbB+kmy9PJ92XvlR6c= +go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= +go.opentelemetry.io/proto/otlp v0.16.0 h1:WHzDWdXUvbc5bG2ObdrGfaNpQz7ft7QN9HHmJlbiB1E= +go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56 h1:estk1glOnSVeJ9tdEZZc5mAMDZk5lNJNyJ6DvrBkTEU= +golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20220602145555-4a0574d9293f h1:KK6mxegmt5hGJRcAnEDjSNLxIRhZxDcgwMbcO/lMCRM= +golang.org/x/exp v0.0.0-20220602145555-4a0574d9293f/go.mod h1:yh0Ynu2b5ZUe3MQfp2nM0ecK7wsgouWTDN0FNeJuIys= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20220601225756-64ec528b34cd h1:9NbNcTg//wfC5JskFW4Z3sqwVnjmJKHxLAol1bW2qgw= +golang.org/x/image v0.0.0-20220601225756-64ec528b34cd/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mobile v0.0.0-20220518205345-8578da9835fd h1:x1GptNaTtxPAlTVIAJk61fuXg0y17h09DTxyb+VNC/k= +golang.org/x/mobile v0.0.0-20220518205345-8578da9835fd/go.mod h1:pe2sM7Uk+2Su1y7u/6Z8KJ24D7lepUjFZbhFOrmDfuQ= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220524220425-1d687d428aca h1:xTaFYiPROfpPhqrfTIDXj0ri1SpfueYT951s4bAuDO8= golang.org/x/net v0.0.0-20220524220425-1d687d428aca/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220531201128-c960675eff93 h1:MYimHLfoXEpOhqd/zgoA/uoXzHB86AEky4LAx5ij9xA= +golang.org/x/net v0.0.0-20220531201128-c960675eff93/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 h1:zwrSfklXn0gxyLRX/aR+q6cgHbV/ItVyzbPlbA+dkAw= +golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 h1:CBpWXWQpIRjzmkkA+M7q9Fqnwd2mZr3AFqexg8YTfoM= +golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w= +golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200808173500-a06252235341/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8 h1:qRu95HZ148xXw+XeZ3dvqe85PxH4X8+jIo0iRPKcEnM= +google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200527211525-6c9e30c09db2/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.0.0-20190222213804-5cb15d344471 h1:MzQGt8qWQCR+39kbYRd0uQqsvSidpYqJLFeWiJ9l4OE= k8s.io/api v0.0.0-20190222213804-5cb15d344471/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= +k8s.io/api v0.24.1 h1:BjCMRDcyEYz03joa3K1+rbshwh1Ay6oB53+iUx2H8UY= +k8s.io/api v0.24.1/go.mod h1:JhoOvNiLXKTPQ60zh2g0ewpA+bnEYf5q44Flhquh4vQ= k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628 h1:UYfHH+KEF88OTg+GojQUwFTNxbxwmoktLwutUzR0GPg= k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= +k8s.io/apimachinery v0.24.1 h1:ShD4aDxTQKN5zNf8K1RQ2u98ELLdIW7jEnlO9uAMX/I= +k8s.io/apimachinery v0.24.1/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/client-go v0.0.0-20190228174230-b40b2a5939e4 h1:aE8wOCKuoRs2aU0OP/Rz8SXiAB0FTTku3VtGhhrkSmc= k8s.io/client-go v0.0.0-20190228174230-b40b2a5939e4/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= +k8s.io/client-go v0.24.1 h1:w1hNdI9PFrzu3OlovVeTnf4oHDt+FJLd9Ndluvnb42E= +k8s.io/client-go v0.24.1/go.mod h1:f1kIDqcEYmwXS/vTbbhopMUbhKp2JhOeVTfxgaCIlF8= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= +k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= +k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6 h1:nBQrWPlrNIiw0BsX6a6MKr1itkm0ZS0Nl97kNLitFfI= +k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6/go.mod h1:daOouuuwd9JXpv1L7Y34iV3yf6nxzipkKMWWlqlvK9M= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124 h1:2sgAQQcY0dEW2SsQwTXhQV4vO6+rSslYx8K3XmM5hqQ= +sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y= +sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From 01e218336368b227bf0a4a6a0c3fa8ef4f4a5ef6 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 3 Jun 2022 10:20:00 +0200 Subject: [PATCH 077/217] Allow pipe to upgrade golang dependencies to avoid deprecated dependencies. --- ods-devenv/scripts/deploy.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index de686c3ff..49e0518de 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -160,16 +160,22 @@ function check_system_setup() { go get -u -x github.com/ericchiang/pup cp -vf "${HOME}/go/bin/pup" "${HOME}/bin/" - echo "Installing 'tests' folder go dependencies... " + echo " " + echo "INFO: Installing 'tests' folder go dependencies to fail early if they are not available" + echo " " pushd tests echo "go install github.com/jstemmer/go-junit-report" which go-junit-report || go install github.com/jstemmer/go-junit-report - go mod download | true - go get ./... | true - go list -f '{{ join .Imports "\n" }}' | true - go get -u -v -f all | true + # Try to get dependencies, but do not fail if not available at this point. + go mod download || echo "ERROR: Failed to execute go mod download " + go get -x -u ./... || echo "ERROR: Failed to execute go get -x -u ./... " + go list -f '{{ join .Imports "\n" }}' || echo "ERROR: Failed to execute go list -f '{{ join .Imports "\n" }}' " + go get -u -v -f all || echo "ERROR: Failed to execute go get -u -v -f all " + go list -u -m all || echo "ERROR: Failed to execute go list -u -m all " popd + echo " " + echo " " echo " " if ! systemctl status firewalld | grep -i running; then From fe1b05eeca4031eda86c8d7b8fe0ea357b3cb3ec Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 3 Jun 2022 10:24:54 +0200 Subject: [PATCH 078/217] Removes not needed cmds. --- ods-devenv/scripts/deploy.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 49e0518de..91f852974 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -170,8 +170,6 @@ function check_system_setup() { # Try to get dependencies, but do not fail if not available at this point. go mod download || echo "ERROR: Failed to execute go mod download " go get -x -u ./... || echo "ERROR: Failed to execute go get -x -u ./... " - go list -f '{{ join .Imports "\n" }}' || echo "ERROR: Failed to execute go list -f '{{ join .Imports "\n" }}' " - go get -u -v -f all || echo "ERROR: Failed to execute go get -u -v -f all " go list -u -m all || echo "ERROR: Failed to execute go list -u -m all " popd echo " " From 49ce2addf86fc59da08b58623489c2abe60ca75e Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 3 Jun 2022 15:31:09 +0200 Subject: [PATCH 079/217] Do not upgrade automatically. --- ods-devenv/scripts/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 91f852974..8d16ad3f8 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -169,7 +169,7 @@ function check_system_setup() { # Try to get dependencies, but do not fail if not available at this point. go mod download || echo "ERROR: Failed to execute go mod download " - go get -x -u ./... || echo "ERROR: Failed to execute go get -x -u ./... " + go get -x ./... || echo "ERROR: Failed to execute go get -x -u ./... " go list -u -m all || echo "ERROR: Failed to execute go list -u -m all " popd echo " " From 93787dbe7e3f0c395297edb90f6b926818b4cb0b Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 3 Jun 2022 15:36:06 +0200 Subject: [PATCH 080/217] git checkout upgrade-golang-dependencies -- tests/go.mod tests/go.sum --- tests/go.mod | 66 ++--- tests/go.sum | 792 +-------------------------------------------------- 2 files changed, 24 insertions(+), 834 deletions(-) diff --git a/tests/go.mod b/tests/go.mod index 966712e2b..6096438b9 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -3,64 +3,38 @@ module github.com/opendevstack/ods-core/tests go 1.13 require ( - dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 // indirect - github.com/cncf/xds/go v0.0.0-20220520190051-1e77728a1eaa // indirect - github.com/emicklei/go-restful v2.15.0+incompatible // indirect github.com/ericchiang/pup v0.4.0 // indirect github.com/fatih/color v1.13.0 // indirect github.com/ghodss/yaml v1.0.0 - github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 // indirect - github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/go-openapi/jsonreference v0.20.0 // indirect - github.com/go-openapi/swag v0.21.1 // indirect - github.com/golang/glog v1.0.0 // indirect - github.com/golang/mock v1.6.0 // indirect - github.com/google/gnostic v0.6.9 // indirect - github.com/google/go-cmp v0.5.8 - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/martian/v3 v3.2.1 // indirect - github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect - github.com/googleapis/go-type-adapters v1.0.0 // indirect + github.com/gogo/protobuf v1.3.1 // indirect + github.com/golang/protobuf v1.4.2 // indirect + github.com/google/btree v1.0.0 // indirect + github.com/google/go-cmp v0.5.1 + github.com/googleapis/gnostic v0.4.0 // indirect github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.0-beta.4 // indirect - github.com/imdario/mergo v0.3.13 // indirect + github.com/imdario/mergo v0.3.8 // indirect + github.com/json-iterator/go v1.1.8 // indirect github.com/jstemmer/go-junit-report v0.9.1 github.com/kr/pretty v0.2.1 // indirect - github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.12 // indirect + github.com/modern-go/reflect2 v1.0.1 // indirect github.com/openshift/api v0.0.0-20180801171038-322a19404e37 github.com/openshift/client-go v3.9.0+incompatible github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/spf13/pflag v1.0.5 // indirect - go.opencensus.io v0.23.0 // indirect - go.opentelemetry.io/proto/otlp v0.12.0 // indirect - golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect - golang.org/x/image v0.0.0-20220601225756-64ec528b34cd // indirect - golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mobile v0.0.0-20220518205345-8578da9835fd // indirect - golang.org/x/mod v0.6.0-dev // indirect - golang.org/x/net v0.0.0-20220531201128-c960675eff93 // indirect - golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 // indirect + golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 // indirect + golang.org/x/net v0.0.0-20220524220425-1d687d428aca // indirect + golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 // indirect golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect - golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect - golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect - golang.org/x/tools v0.1.9 // indirect - golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8 // indirect - google.golang.org/grpc v1.47.0 // indirect - google.golang.org/protobuf v1.28.0 // indirect + golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect + gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - honnef.co/go/tools v0.0.1-2020.1.4 // indirect - k8s.io/api v0.24.1 - k8s.io/apimachinery v0.24.1 - k8s.io/client-go v0.24.1 + gopkg.in/yaml.v2 v2.2.7 // indirect + k8s.io/api v0.0.0-20190222213804-5cb15d344471 + k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628 + k8s.io/client-go v0.0.0-20190228174230-b40b2a5939e4 k8s.io/klog v1.0.0 // indirect - k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6 // indirect - rsc.io/quote/v3 v3.1.0 // indirect - sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect + sigs.k8s.io/yaml v1.1.0 // indirect ) + +replace github.com/googleapis/gnostic => github.com/google/gnostic v0.4.0 diff --git a/tests/go.sum b/tests/go.sum index 025882a62..32a856f7b 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -1,924 +1,140 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0 h1:DAq3r8y4mDgyB/ZPJ9v/5VJNqjgJAxTn6ZYLlUywOu8= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20220520190051-1e77728a1eaa h1:B/lvg4tQ5hfFZd4V2hcSfFVfUvAK6GSFKxIIzwnkv8g= -github.com/cncf/xds/go v0.0.0-20220520190051-1e77728a1eaa/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.15.0+incompatible h1:8KpYO/Xl/ZudZs5RNOEhWMBY4hmzlZhhRd9cu+jrZP4= -github.com/emicklei/go-restful v2.15.0+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ericchiang/pup v0.4.0 h1:h9ahJXbHA3V8MFfAmasxi8DCx0Gu+aLAAEtb8Q3KCOo= github.com/ericchiang/pup v0.4.0/go.mod h1:PpPzKkuAB7ypCQf9+wxC5MzaGaIDdgjtlpvc/0NaTJc= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU= -github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= -github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= -github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/gnostic v0.4.0 h1:9iS1H6UOaLpeNN1XLeRcR9qdtmGabUmQaBsrDONz6D4= +github.com/google/gnostic v0.4.0/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/googleapis/gnostic v0.4.0 h1:BXDUo8p/DaxC+4FJY/SSx3gvnx9C1VdHNgaUkiEL5mk= +github.com/googleapis/gnostic v0.4.0/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.0-beta.4/go.mod h1:s6Y2jFmY4W++kYQudXl97XtztCcIhvEp869VVvHFpfs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= -github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/openshift/api v0.0.0-20180801171038-322a19404e37 h1:05irGU4HK4IauGGDbsk+ZHrm1wOzMLYjMlfaiqMrBYc= github.com/openshift/api v0.0.0-20180801171038-322a19404e37/go.mod h1:dh9o4Fs58gpFXGSYfnVxGR9PnV53I8TW84pQaJDdGiY= github.com/openshift/client-go v3.9.0+incompatible h1:13k3Ok0B7TA2hA3bQW2aFqn6y04JaJWdk7ITTyg+Ek0= github.com/openshift/client-go v3.9.0+incompatible/go.mod h1:6rzn+JTr7+WYS2E1TExP4gByoABxMznR6y2SnUIkmxk= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.12.0 h1:CMJ/3Wp7iOWES+CYLfnBv+DVmPbB+kmy9PJ92XvlR6c= -go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= -go.opentelemetry.io/proto/otlp v0.16.0 h1:WHzDWdXUvbc5bG2ObdrGfaNpQz7ft7QN9HHmJlbiB1E= -go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56 h1:estk1glOnSVeJ9tdEZZc5mAMDZk5lNJNyJ6DvrBkTEU= -golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220602145555-4a0574d9293f h1:KK6mxegmt5hGJRcAnEDjSNLxIRhZxDcgwMbcO/lMCRM= -golang.org/x/exp v0.0.0-20220602145555-4a0574d9293f/go.mod h1:yh0Ynu2b5ZUe3MQfp2nM0ecK7wsgouWTDN0FNeJuIys= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20220601225756-64ec528b34cd h1:9NbNcTg//wfC5JskFW4Z3sqwVnjmJKHxLAol1bW2qgw= -golang.org/x/image v0.0.0-20220601225756-64ec528b34cd/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mobile v0.0.0-20220518205345-8578da9835fd h1:x1GptNaTtxPAlTVIAJk61fuXg0y17h09DTxyb+VNC/k= -golang.org/x/mobile v0.0.0-20220518205345-8578da9835fd/go.mod h1:pe2sM7Uk+2Su1y7u/6Z8KJ24D7lepUjFZbhFOrmDfuQ= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220524220425-1d687d428aca h1:xTaFYiPROfpPhqrfTIDXj0ri1SpfueYT951s4bAuDO8= golang.org/x/net v0.0.0-20220524220425-1d687d428aca/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220531201128-c960675eff93 h1:MYimHLfoXEpOhqd/zgoA/uoXzHB86AEky4LAx5ij9xA= -golang.org/x/net v0.0.0-20220531201128-c960675eff93/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 h1:zwrSfklXn0gxyLRX/aR+q6cgHbV/ItVyzbPlbA+dkAw= -golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 h1:CBpWXWQpIRjzmkkA+M7q9Fqnwd2mZr3AFqexg8YTfoM= -golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w= -golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200808173500-a06252235341/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8 h1:qRu95HZ148xXw+XeZ3dvqe85PxH4X8+jIo0iRPKcEnM= -google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200527211525-6c9e30c09db2/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.0.0-20190222213804-5cb15d344471 h1:MzQGt8qWQCR+39kbYRd0uQqsvSidpYqJLFeWiJ9l4OE= k8s.io/api v0.0.0-20190222213804-5cb15d344471/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= -k8s.io/api v0.24.1 h1:BjCMRDcyEYz03joa3K1+rbshwh1Ay6oB53+iUx2H8UY= -k8s.io/api v0.24.1/go.mod h1:JhoOvNiLXKTPQ60zh2g0ewpA+bnEYf5q44Flhquh4vQ= k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628 h1:UYfHH+KEF88OTg+GojQUwFTNxbxwmoktLwutUzR0GPg= k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= -k8s.io/apimachinery v0.24.1 h1:ShD4aDxTQKN5zNf8K1RQ2u98ELLdIW7jEnlO9uAMX/I= -k8s.io/apimachinery v0.24.1/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/client-go v0.0.0-20190228174230-b40b2a5939e4 h1:aE8wOCKuoRs2aU0OP/Rz8SXiAB0FTTku3VtGhhrkSmc= k8s.io/client-go v0.0.0-20190228174230-b40b2a5939e4/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= -k8s.io/client-go v0.24.1 h1:w1hNdI9PFrzu3OlovVeTnf4oHDt+FJLd9Ndluvnb42E= -k8s.io/client-go v0.24.1/go.mod h1:f1kIDqcEYmwXS/vTbbhopMUbhKp2JhOeVTfxgaCIlF8= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= -k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= -k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6 h1:nBQrWPlrNIiw0BsX6a6MKr1itkm0ZS0Nl97kNLitFfI= -k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6/go.mod h1:daOouuuwd9JXpv1L7Y34iV3yf6nxzipkKMWWlqlvK9M= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= -sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124 h1:2sgAQQcY0dEW2SsQwTXhQV4vO6+rSslYx8K3XmM5hqQ= -sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From e71919e665c2aad337592f21561f1a219a409a02 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 6 Jun 2022 12:50:13 +0200 Subject: [PATCH 081/217] Reduces time to build quickstarters --- jenkins/agent-base/Dockerfile.centos7 | 12 +++++------- jenkins/agent-base/Dockerfile.ubi8 | 1 + 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index 5820bbf80..39cebe0ae 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -16,16 +16,14 @@ ARG APP_DNS ARG SNYK_DISTRIBUTION_URL ARG AQUASEC_SCANNERCLI_URL -RUN yum -y install \ - openssl \ - && yum clean all \ - && rm -rf /var/cache/yum/* - ENV JAVA_HOME=/usr/lib/jvm/jre -RUN yum -y install java-1.8.0-openjdk-devel.x86_64 \ +RUN rm -fv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/origin-local-release.repo \ + && yum -y install openssl \ + && yum -y install java-1.8.0-openjdk-devel.x86_64 \ + && yum -y update \ && yum clean all \ - && rm -rf /var/cache/yum/* + && rm -rf /var/cache/yum/* COPY ./import_certs.sh /usr/local/bin/import_certs.sh RUN import_certs.sh diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index 59898e36c..af8aef10f 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -20,6 +20,7 @@ COPY yum.repos.d/ubi.repo /etc/yum.repos.d/ubi.repo RUN cd /etc/yum.repos.d && rm -f localdev-* ci-rpm-mirrors.repo \ && yum -y install make glibc-langpack-en openssl \ + && yum -y update \ && yum clean all \ && rm -rf /var/cache/yum/* From 438febadb143c0bb9186442bde6cc17eb02610ac Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 24 Jun 2022 11:10:44 +0200 Subject: [PATCH 082/217] Sort testable quickstarters. --- tests/quickstarter/quickstarter_test.go | 6 +++++- tests/utils/sort-tests.go | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 tests/utils/sort-tests.go diff --git a/tests/quickstarter/quickstarter_test.go b/tests/quickstarter/quickstarter_test.go index ad1420887..f20c70eaa 100644 --- a/tests/quickstarter/quickstarter_test.go +++ b/tests/quickstarter/quickstarter_test.go @@ -244,6 +244,7 @@ func TestQuickstarter(t *testing.T) { // collectTestableQuickstarters collects all subdirs of "dir" that contain // a "testdata" directory. func collectTestableQuickstarters(t *testing.T, dir string) []string { + sortedTestableQuickstarters := []string{} testableQuickstarters := []string{} files, err := ioutil.ReadDir(dir) if err != nil { @@ -258,7 +259,10 @@ func collectTestableQuickstarters(t *testing.T, dir string) []string { } } } - return testableQuickstarters + + sortedTestableQuickstarters = utils.sortTestableQuickstarters(t, dir, testableQuickstarters) + + return sortedTestableQuickstarters } func templateData(config map[string]string, componentID string, buildName string) TemplateData { diff --git a/tests/utils/sort-tests.go b/tests/utils/sort-tests.go new file mode 100644 index 000000000..8acd41748 --- /dev/null +++ b/tests/utils/sort-tests.go @@ -0,0 +1,22 @@ +package utils + +func sortTestableQuickstarters(t *testing.T, dir string, var quickstarterPaths []string) error { + + file, err := os.Open("testsWithPriority.txt") + if err != nil { + fmt.Println(err) + t.Fatal(err) + } + defer file.Close() + + scanner := bufio.NewScanner(file) + for scanner.Scan() { + fmt.Println(scanner.Text()) + } + + if err := scanner.Err(); err != nil { + fmt.Println(err) + t.Fatal(err) + } + +} From 2f80396ace5c2a933a9b86df66c8a69e2fca8283 Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Fri, 24 Jun 2022 10:18:11 +0000 Subject: [PATCH 083/217] Implemented build quickstaters order. --- tests/quickStartersBuildPriority.txt | 3 + tests/quickstarter/quickstarter_test.go | 2 +- tests/utils/sort-testable-quickstarters.go | 64 ++++++++++++++++++++++ tests/utils/sort-tests.go | 22 -------- 4 files changed, 68 insertions(+), 23 deletions(-) create mode 100644 tests/quickStartersBuildPriority.txt create mode 100644 tests/utils/sort-testable-quickstarters.go delete mode 100644 tests/utils/sort-tests.go diff --git a/tests/quickStartersBuildPriority.txt b/tests/quickStartersBuildPriority.txt new file mode 100644 index 000000000..ab2962f2e --- /dev/null +++ b/tests/quickStartersBuildPriority.txt @@ -0,0 +1,3 @@ +none +ods-document-gen-svc +ods-provisioning-app diff --git a/tests/quickstarter/quickstarter_test.go b/tests/quickstarter/quickstarter_test.go index f20c70eaa..7db26e8b4 100644 --- a/tests/quickstarter/quickstarter_test.go +++ b/tests/quickstarter/quickstarter_test.go @@ -260,7 +260,7 @@ func collectTestableQuickstarters(t *testing.T, dir string) []string { } } - sortedTestableQuickstarters = utils.sortTestableQuickstarters(t, dir, testableQuickstarters) + sortedTestableQuickstarters = utils.SortTestableQuickstarters(t, dir, testableQuickstarters) return sortedTestableQuickstarters } diff --git a/tests/utils/sort-testable-quickstarters.go b/tests/utils/sort-testable-quickstarters.go new file mode 100644 index 000000000..6f886bb43 --- /dev/null +++ b/tests/utils/sort-testable-quickstarters.go @@ -0,0 +1,64 @@ +package utils + +import ( + "fmt" + "os" + "bufio" + "testing" + "strings" +) + +func SortTestableQuickstarters(t *testing.T, dir string, quickstarterPaths []string) []string { + + var filePath string + filePath = fmt.Sprintf("%s/../ods-core/tests/%s", dir, "quickStartersBuildPriority.txt") + fmt.Printf("\n\nLooking for file quickStartersBuildPriority.txt ... %s\n", filePath) + + fmt.Printf("\n\nNot sorted quickStarters list:\n") + for _, quickstarterPath := range quickstarterPaths { + fmt.Printf("- %s\n", quickstarterPath) + } + fmt.Printf("\n\n") + + var sortedQuickStartersPaths []string + + file, err := os.Open(filePath) + if err != nil { + fmt.Println(err) + t.Fatal(err) + } + defer file.Close() + + fmt.Println("\n\nQuickStarters that will be compiled first...\n") + scanner := bufio.NewScanner(file) + for scanner.Scan() { + var qsSubText = scanner.Text() + fmt.Println(qsSubText) + for _, quickstarterPath := range quickstarterPaths { + if strings.Contains(quickstarterPath, qsSubText) { + sortedQuickStartersPaths = append(sortedQuickStartersPaths, quickstarterPath) + } + } + + } + + if err := scanner.Err(); err != nil { + fmt.Println(err) + t.Fatal(err) + } + + for _, quickStarterPath := range quickstarterPaths { + var addQs = true + for _, sortedQuickStarterPath := range sortedQuickStartersPaths { + if strings.Contains(quickStarterPath, sortedQuickStarterPath) { + addQs = false + } + } + + if addQs { + sortedQuickStartersPaths = append(sortedQuickStartersPaths, quickStarterPath) + } + } + + return sortedQuickStartersPaths +} diff --git a/tests/utils/sort-tests.go b/tests/utils/sort-tests.go deleted file mode 100644 index 8acd41748..000000000 --- a/tests/utils/sort-tests.go +++ /dev/null @@ -1,22 +0,0 @@ -package utils - -func sortTestableQuickstarters(t *testing.T, dir string, var quickstarterPaths []string) error { - - file, err := os.Open("testsWithPriority.txt") - if err != nil { - fmt.Println(err) - t.Fatal(err) - } - defer file.Close() - - scanner := bufio.NewScanner(file) - for scanner.Scan() { - fmt.Println(scanner.Text()) - } - - if err := scanner.Err(); err != nil { - fmt.Println(err) - t.Fatal(err) - } - -} From 6d2d3c204afb25bb2873415b741635f8c832ebcd Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Tue, 28 Jun 2022 15:46:55 +0200 Subject: [PATCH 084/217] changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e4814559..d3bb82080 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ - Add support for ods-saas-service quickstarter ([#1033](https://github.com/opendevstack/ods-core/pull/1033)) - ODS AMI build failing due to broken helm diff package ([#1083](https://github.com/opendevstack/ods-core/pull/1083)) - Needed changes to run CI again, ported from task/upgrade-atlassian-stack. Run quickstarters in parallel, typos. +- Fixes Default jdk is not set in edpBox ([#1157](https://github.com/opendevstack/ods-core/pull/1157)) +- Allow to choose the order in which quickstaters are build ([#1158](https://github.com/opendevstack/ods-core/pull/1158)) ### Added From df3f6d1724b8182a955b60471f5e6367ce939d40 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 18 Aug 2022 20:39:02 +0200 Subject: [PATCH 085/217] Need to allow usage of provided ssh keys. --- ods-devenv/packer/CentOS2ODSBox.json | 4 ++-- ods-devenv/packer/create_ods_box_image.sh | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ods-devenv/packer/CentOS2ODSBox.json b/ods-devenv/packer/CentOS2ODSBox.json index ccd066999..5eab9f324 100644 --- a/ods-devenv/packer/CentOS2ODSBox.json +++ b/ods-devenv/packer/CentOS2ODSBox.json @@ -53,8 +53,8 @@ "echo 'Adding odsbox.pub to authorized keys'", "mkdir -p ~/.ssh", "chmod go-xrw ~/.ssh", - "mv ~/tmp/odsbox.pub ~/.ssh/odsbox.pub", - "mv ~/tmp/odsbox ~/.ssh/odsbox", + "mv -vf ~/tmp/odsbox.pub ~/.ssh/odsbox.pub", + "mv -vf ~/tmp/odsbox ~/.ssh/odsbox", "touch ~/.ssh/authorized_keys", "cat ~/.ssh/odsbox.pub >> ~/.ssh/authorized_keys", "chmod go-xrw ~/.ssh/*", diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 8988df020..2a23e489c 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -3,8 +3,9 @@ aws_access_key= aws_secret_key= -# default public key to be added to the odsbox authorized_keys +# default public/private key to be added to the odsbox authorized_keys pub_key= +ssh_private_key_file_path= ods_branch=master @@ -45,6 +46,9 @@ while [[ "$#" -gt 0 ]]; do --pub-key) pub_key="$2"; shift;; --pub-key=*) pub_key="${1#*=}";; + --priv-key) ssh_private_key_file_path="$2"; shift;; + --priv-key=*) ssh_private_key_file_path="${1#*=}";; + --target) target="$2"; shift;; --dryrun) dryrun=true;; @@ -87,6 +91,7 @@ function display_usage() { echo " --aws-access-key AWS credentials" echo " --aws-secret-key AWS credentials" echo " --pub-key Public key to be added to the odsbox authorized servers" + echo " --priv-key Private key to be added to the odsbox and used to access the host" echo " --ods-branch branch to build ODS box against, e.g master" echo " --instance-type AWS EC2 instance type to run the AMI build on. Defaults to m5ad.4xlarge." echo " Options: t2.2xlarge, m5ad.4xlarge" From 7752c43272cc4aea86a3eb67469a23da29a579fb Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 18 Aug 2022 21:21:23 +0200 Subject: [PATCH 086/217] Jenkins example file to configure pipeline. --- ods-devenv/packer/jenkins/JenkinsFile | 103 ++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 ods-devenv/packer/jenkins/JenkinsFile diff --git a/ods-devenv/packer/jenkins/JenkinsFile b/ods-devenv/packer/jenkins/JenkinsFile new file mode 100644 index 000000000..72ca14672 --- /dev/null +++ b/ods-devenv/packer/jenkins/JenkinsFile @@ -0,0 +1,103 @@ +def buildBadge = addEmbeddableBadgeConfiguration(id: "odsbuild", status: "started") + +pipeline { + + environment { + ODS_BRANCH = "experimental" + JOB_NAME = "ods-build-4_x-branch" + BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + } + + agent { + node('buildbot') + } + + + options { + ansiColor('xterm') + } + + + stages { + stage('ODS BuildBot: running AMI build!') { + + steps { + + script { + + try { + echoInfo "Setting build badge status!" + buildBadge.setStatus("running") + + GIT_COMMIT_REV = sh(returnStdout: true, script: "curl -sSL https://api.github.com/repos/opendevstack/ods-core/commits/${ODS_BRANCH} | jq .sha").trim() + GIT_COMMIT_REV = GIT_COMMIT_REV.length()>8 ? GIT_COMMIT_REV.substring(1,8) : GIT_COMMIT_REV + GIT_COMMIT_MESSAGE = sh(returnStdout: true, script: "curl -sSL https://api.github.com/repos/opendevstack/ods-core/commits/${ODS_BRANCH} | jq .commit.message").trim() + GIT_COMMIT_MESSAGE = GIT_COMMIT_MESSAGE.length()>25 ? GIT_COMMIT_MESSAGE.substring(1,25) : GIT_COMMIT_MESSAGE + BUILD_SUBJECT = "#${GIT_COMMIT_REV}: ${GIT_COMMIT_MESSAGE}..." + buildBadge.setSubject(BUILD_SUBJECT) + + + echoInfo "Started ODS AMI build number '${BUILD_NUMBER}' for branch: '${ODS_BRANCH}'" + echoInfo "BUILD_FOLDER = '${BUILD_FOLDER}'" + echoInfo "... logging some environment details" + sh 'whoami && pwd && ls -lart' + sh 'echo $PATH' + sh 'git version' + + echoInfo "... create temp build folder" + sh 'mkdir -p ${BUILD_FOLDER}' + echoInfo "... cloning ods-core && checkout branch ${ODS_BRANCH}" + sh 'cd ${BUILD_FOLDER} && git clone https://github.com/opendevstack/ods-core.git && cd ods-core && git checkout ${ODS_BRANCH}' + + echoInfo "... preparing temp build folder" + withCredentials([sshUserPrivateKey(credentialsId: "edp_slave_openshift_pub", keyFileVariable: 'ssh_public_key'), + sshUserPrivateKey(credentialsId: "edp_slave_openshift_202205", keyFileVariable: 'ssh_private_key')]) { + sh 'cp ${ssh_public_key} ${BUILD_FOLDER}/jenkins.pub' + sh 'cp ${ssh_private_key} ${BUILD_FOLDER}/jenkins.priv' + } + sh 'cd ${BUILD_FOLDER} && cp /home/centos/.buildbotrc . && chmod u+w .buildbotrc && pwd && ls -lart' + sh "cd ${BUILD_FOLDER} && sed -i 's|pub-key=.*\$|pub_key=${BUILD_FOLDER}/jenkins.pub|' .buildbotrc && cat .buildbotrc" + + withCredentials([usernamePassword(credentialsId: 'registry_credentials', usernameVariable: 'registry_user', passwordVariable: 'registry_token')]) { + withCredentials([[ $class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'awsID', accessKeyVariable: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + // This is safe, client and secret will be masked in the output + // echoInfo "aws client = $AWS_ACCESS_KEY_ID" + // echoInfo "aws secret = $AWS_SECRET_ACCESS_KEY" + echoInfo "... running packer build" + // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' + sh ''' + set -x + export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ + cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ + --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ + --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + ''' + } + } + + echoInfo "...done!" + + buildBadge.setStatus("passing") + + } catch (Exception err) { + buildBadge.setStatus("failing") + + echoError "error: " + err + throw err + } + } + } + } + + } +} + +def echoInfo(msg){ + echo "\033[32m ${msg} \033[0m" +} + +def echoError(msg){ + echo "\033[31m ${msg} \033[0m" +} From 8a591ed83569d2dbe308969f0badc2730a5c7907 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 19 Aug 2022 11:08:59 +0200 Subject: [PATCH 087/217] Taken from e2e tests repository to have only one copy of deploy script. --- ods-devenv/scripts/deploy.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 3232bffd7..950ce1a34 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -133,6 +133,7 @@ function check_system_setup() { echo "alias startup_ods='/home/openshift/opendevstack/ods-core/ods-devenv/scripts/deploy.sh --target startup_ods'" echo "alias stop_ods='/home/openshift/opendevstack/ods-core/ods-devenv/scripts/deploy.sh --target stop_ods'" echo "alias restart_atlassian_suite='/home/openshift/opendevstack/ods-core/ods-devenv/scripts/deploy.sh --target restart_atlassian_suite'" + echo "alias restart_ods='/home/openshift/opendevstack/ods-core/ods-devenv/scripts/deploy.sh --target restart_ods'" } >> ~/.bashrc # suppress sudo timeout @@ -2398,6 +2399,21 @@ function stop_ods() { oc cluster down } +function restart_ods() { + stop_ods + + sudo systemctl stop docker.service || sudo systemctl status docker.service + sudo systemctl start docker.service || sudo systemctl status docker.service + sudo systemctl status docker.service + + # Was in e2e tests repositories. Saved for future reference. + # sudo systemctl stop docker.socket + # sudo systemctl enable docker || true + # sudo systemctl start docker + + startup_ods +} + function setup_aqua() { oc create configmap aqua --from-literal=registry=${aqua_registry} --from-literal=secretName=${aqua_secret_name} --from-literal=url=${aqua_url} --from-literal=nexusRepository=${aqua_nexus_repository} --from-literal=enabled=${aqua_enabled} -n ods } From bc123d857ea3b92c3451381c9ffbf74a1aea4a43 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 19 Aug 2022 15:26:04 +0200 Subject: [PATCH 088/217] Adds documentation to avoid reading the script to find the options. --- ods-devenv/scripts/deploy.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 950ce1a34..f6c3a43e4 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -73,6 +73,7 @@ function display_usage() { echo "${ME} --branch feature/ods-devenv --target install_docker" echo "${ME} --branch feature/ods-devenv --target startup_atlassian_bitbucket" echo "${ME} --branch task/upgrade-atlassian-stack --target atlassian_stack_reset" + echo "${ME} --target restart-ods " echo echo "Since several of the functions will require that other functions have prepared the system first," echo "the script provides utility functions like basic_vm_setup which will call functions in this" From 8b24ba70b54979d4cbc8f17a0fb0224470abb306 Mon Sep 17 00:00:00 2001 From: brais Date: Fri, 19 Aug 2022 15:33:40 +0200 Subject: [PATCH 089/217] Update Aqua CLI version (#1173) * update aqua version --- CHANGELOG.md | 1 + configuration-sample/ods-core.env.sample | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c416fef3d..3d9576256 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ - Allow to choose the order in which quickstaters are build ([#1158](https://github.com/opendevstack/ods-core/pull/1158)) - Fix and prevent permission issues ([#1162](https://github.com/opendevstack/ods-core/issues/1162)) - Fixes Jenkins Memory problems reported ([#1161](https://github.com/opendevstack/ods-core/pull/1161)) +- Update Aqua CLI version ([#1173](https://github.com/opendevstack/ods-core/pull/1173)) ### Added diff --git a/configuration-sample/ods-core.env.sample b/configuration-sample/ods-core.env.sample index fcf7d3699..7ebdb9e89 100644 --- a/configuration-sample/ods-core.env.sample +++ b/configuration-sample/ods-core.env.sample @@ -233,9 +233,10 @@ JENKINS_AGENT_BASE_SNYK_DISTRIBUTION_URL=https://github.com/snyk/snyk/releases/d # AquaSec CLI binary distribution url # Leave empty to avoid installing AquaSec. # Releases are published at https://download.aquasec.com/scanner -# To Download the aquaSec scanner cli requires a valid account on aquasec.com -# Latest tested version is 6.0.0 -# Example: https://:@download.aquasec.com/scanner/6.0.0/scannercli +# Check Aqua versions backward compatibility at https://docs.aquasec.com/docs/version-compatibility-of-components#section-backward-compatibility-across-two-major-versions +# To Download the aquaSec scanner cli and check their documentaion requires a valid account on aquasec.com +# Latest tested version is 2022.4.98 +# Example: https://:@download.aquasec.com/scanner/2022.4.98/scannercli JENKINS_AGENT_BASE_AQUASEC_SCANNERCLI_URL= # Repository of shared library From f891b23ecde60ce584581078bcff9b4c90f51f12 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 19 Aug 2022 21:47:43 +0200 Subject: [PATCH 090/217] check_pods_and_restart_if_necessary --- ods-devenv/scripts/deploy.sh | 64 ++++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 6 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index f6c3a43e4..e30d4c5c0 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1378,23 +1378,38 @@ function wait_until_ocp_is_up() { } function wait_until_http_svc_is_up() { - SVC_NAME="${1}" - SVC_HTTP_URL="${2}" - CURL_SVC_OUTPUT_FILE="/tmp/result-curl-svc-${SVC_NAME}-output" - CURL_SVC_HEADERS_FILE="/tmp/result-curl-svc-${SVC_NAME}-headers" + local SVC_NAME="${1}" + local SVC_HTTP_URL="${2}" + local CURL_SVC_OUTPUT_FILE="/tmp/result-curl-svc-${SVC_NAME}-output" + local CURL_SVC_HEADERS_FILE="/tmp/result-curl-svc-${SVC_NAME}-headers" + local retryMax=100 + + wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" $retryMax + if [ 0 -ne $? ]; then + exit 1 + fi + return 0 +} + +function wait_until_http_svc_is_up_advanced() { + local SVC_NAME="${1}" + local SVC_HTTP_URL="${2}" + local CURL_SVC_OUTPUT_FILE="${3}" + local CURL_SVC_HEADERS_FILE="${4}" + local retryMax=${5} echo " " local isUp="false" local retryNum=0 - local retryMax=100 + while [ "true" != "${isUp}" ]; do echo "Testing if service ${SVC_NAME} is up at \'${SVC_HTTP_URL}\'. Retry $retryNum / $retryMax " let retryNum+=1 if [ ${retryMax} -le ${retryNum} ]; then echo "Maximum amount of retries reached: $retryNum / $retryMax " sleep 1 - exit 1 + return 1 fi if [ 0 -ne ${retryNum} ]; then sleep 10 @@ -2389,6 +2404,8 @@ function startup_ods() { startup_openshift_cluster wait_until_ocp_is_up + + check_pods_and_restart_if_necessary } function stop_ods() { @@ -2415,6 +2432,41 @@ function restart_ods() { startup_ods } +function check_pods_and_restart_if_necessary() { + + check_pod_and_restart_if_necessary 'sonarqube' 'ods/sonarqube' 'https://sonarqube-ods.ocp.odsbox.lan/' + check_pod_and_restart_if_necessary 'prov-app' 'ods/ods-provisioning-app' 'https://prov-app-ods.ocp.odsbox.lan/' + check_pod_and_restart_if_necessary 'nexus' 'ods/nexus' 'https://nexus-ods.ocp.odsbox.lan/' + # https://jenkins-ods.ocp.odsbox.lan +} + +function check_pod_and_restart_if_necessary() { + + local SVC_NAME="${1}" + local SVC_POD_ID="${2}" + local SVC_HTTP_URL="${3}" + local CURL_SVC_OUTPUT_FILE="/tmp/result-curl-svc-${SVC_NAME}-output" + local CURL_SVC_HEADERS_FILE="/tmp/result-curl-svc-${SVC_NAME}-headers" + local retryMax=10 + local retVal=1 + + while [ 0 -ne ${retVal} ]; do + wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" $retryMax + retVal=$? + + if [ 0 -ne ${retVal} ]; then + docker ps -a | grep -v 'Exited .* ago' | grep -i "${SVC_POD_ID}" | cut -d ' ' -f 1 | while read -r containerId ; + do + echo "Stopping $containerId" + docker stop $containerId + done + fi + + done + return 0 + +} + function setup_aqua() { oc create configmap aqua --from-literal=registry=${aqua_registry} --from-literal=secretName=${aqua_secret_name} --from-literal=url=${aqua_url} --from-literal=nexusRepository=${aqua_nexus_repository} --from-literal=enabled=${aqua_enabled} -n ods } From 3606ce8da3b315d84eb6d01cf551d13fd151ae4c Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Fri, 19 Aug 2022 20:40:23 +0000 Subject: [PATCH 091/217] Checks if pods launched by oc have problems. --- ods-devenv/scripts/deploy.sh | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index e30d4c5c0..b690a8e9f 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1416,7 +1416,7 @@ function wait_until_http_svc_is_up_advanced() { fi rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} - if ! curl --insecure -sSL --dump-header ${CURL_SVC_HEADERS_FILE} ${SVC_HTTP_URL} -o ${CURL_SVC_OUTPUT_FILE} ; then + if ! curl --insecure -sSL --retry-delay 2 --retry-max-time 20 --retry 10 --dump-header ${CURL_SVC_HEADERS_FILE} ${SVC_HTTP_URL} -o ${CURL_SVC_OUTPUT_FILE} ; then echo "Curl replied != 0 for query to ${SVC_HTTP_URL} " echo "Checking if it was caused by a redirect... " fi @@ -2447,19 +2447,37 @@ function check_pod_and_restart_if_necessary() { local SVC_HTTP_URL="${3}" local CURL_SVC_OUTPUT_FILE="/tmp/result-curl-svc-${SVC_NAME}-output" local CURL_SVC_HEADERS_FILE="/tmp/result-curl-svc-${SVC_NAME}-headers" - local retryMax=10 + local retryMax=3 local retVal=1 + local retryNum=0 while [ 0 -ne ${retVal} ]; do - wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" $retryMax - retVal=$? + + echo "Checking if pod in charge of service ${SVC_NAME} is up and stopping if not. Retry $retryNum / $retryMax " + + let retryNum+=1 + if [ ${retryMax} -le ${retryNum} ]; then + echo "Maximum amount of retries reached: $retryNum / $retryMax " + sleep 1 + return 1 + fi + + retVal=0 + wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" 10 || retVal=1 if [ 0 -ne ${retVal} ]; then + local docker_process_killed="false" docker ps -a | grep -v 'Exited .* ago' | grep -i "${SVC_POD_ID}" | cut -d ' ' -f 1 | while read -r containerId ; do echo "Stopping $containerId" docker stop $containerId + docker_process_killed="true" done + + if [ "false" == "$docker_process_killed" ]; then + echo "No docker process found for pod ${SVC_NAME} with ID ${SVC_POD_ID} " + echo " " + fi fi done From 4f390b4efe33e44a25f7ad2fe4654b3cd098ad3a Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 19 Aug 2022 23:13:20 +0200 Subject: [PATCH 092/217] Tries to have error mgmt in restart operation and correct logs. --- ods-devenv/scripts/deploy.sh | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index b690a8e9f..48ea9f290 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2381,9 +2381,11 @@ function startup_ods() { cp -vf /etc/resolv.conf ${KUBEDNS_RESOLV_FILE} fi - cp -vf ${KUBEDNS_RESOLV_FILE} "${KUBEDNS_RESOLV_FILE}-backup-$(date +%Y%m%d-%H%M%S)" + KUBEDNS_RESOLV_FILE_BACKUP="${KUBEDNS_RESOLV_FILE}-backup-$(date +%Y%m%d-%H%M%S-%N)" + rm -fv ${KUBEDNS_RESOLV_FILE_BACKUP} || true + cp -vf ${KUBEDNS_RESOLV_FILE} ${KUBEDNS_RESOLV_FILE_BACKUP} sed -i "s|^nameserver.*$|nameserver ${public_hostname}|" ${KUBEDNS_RESOLV_FILE} - rm -fv ${KUBEDNS_RESOLV_FILE}.tmp + rm -fv ${KUBEDNS_RESOLV_FILE}.tmp || true cp -vf ${KUBEDNS_RESOLV_FILE} "${KUBEDNS_RESOLV_FILE}.tmp" cat "${KUBEDNS_RESOLV_FILE}.tmp" | uniq > ${HOME}/openshift.local.clusterup/kubedns/resolv.conf @@ -2398,14 +2400,17 @@ function startup_ods() { echo " " # allow for OpenShifts to be resolved within OpenShift network - echo "set iptables" - sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT + echo "startup_ods: set iptables" + sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT || true startup_openshift_cluster wait_until_ocp_is_up check_pods_and_restart_if_necessary + echo "startup_ods: SUCCESS." + echo " " + echo " " } function stop_ods() { @@ -2429,7 +2434,13 @@ function restart_ods() { # sudo systemctl enable docker || true # sudo systemctl start docker - startup_ods + if ! startup_ods ; then + echo "restart_ods: ERROR." + echo " " + return 1 + fi + echo "restart_ods: SUCCESS." + echo " " } function check_pods_and_restart_if_necessary() { @@ -2470,7 +2481,7 @@ function check_pod_and_restart_if_necessary() { docker ps -a | grep -v 'Exited .* ago' | grep -i "${SVC_POD_ID}" | cut -d ' ' -f 1 | while read -r containerId ; do echo "Stopping $containerId" - docker stop $containerId + docker stop $containerId docker_process_killed="true" done From fbbc09f076447bccc094b1d9218c52487ff73dfc Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 00:17:23 +0200 Subject: [PATCH 093/217] Launching cluster fails but does not report error. --- ods-devenv/scripts/deploy.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 48ea9f290..e4884b3ff 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -565,9 +565,17 @@ function startup_openshift_cluster() { echo "oc cluster up ..." oc cluster up --base-dir="${cluster_dir}" --insecure-skip-tls-verify=true --routing-suffix "ocp.odsbox.lan" --public-hostname "ocp.odsbox.lan" # Only if something fails, please... --loglevel=5 --server-loglevel=5 + if [ 0 -ne $? ]; then + exit 1 + fi + echo " " echo "Log into oc cluster with system:admin" oc login -u system:admin + if [ 0 -ne $? ]; then + exit 1 + fi + } ####################################### From bbacee3fb28cbacb0b2c26b3da61940507938d68 Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Fri, 19 Aug 2022 22:46:20 +0000 Subject: [PATCH 094/217] Logs if cluster fails to start. Basic. --- ods-devenv/scripts/deploy.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index e4884b3ff..f920adeaf 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -566,6 +566,8 @@ function startup_openshift_cluster() { oc cluster up --base-dir="${cluster_dir}" --insecure-skip-tls-verify=true --routing-suffix "ocp.odsbox.lan" --public-hostname "ocp.odsbox.lan" # Only if something fails, please... --loglevel=5 --server-loglevel=5 if [ 0 -ne $? ]; then + echo "ERROR: Could not start oc cluster (oc cluster up)" + echo " " exit 1 fi @@ -573,6 +575,8 @@ function startup_openshift_cluster() { echo "Log into oc cluster with system:admin" oc login -u system:admin if [ 0 -ne $? ]; then + echo "ERROR: Could not log into cluster with system:admin" + echo " " exit 1 fi From 8419e4bad48ed6402c5435ca8a223c75a1de6cca Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 12:03:06 +0200 Subject: [PATCH 095/217] Improves logs readability. --- ods-devenv/scripts/deploy.sh | 31 +++++++++++++++----------- tests/scripts/free-unused-resources.sh | 12 +++++----- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index e4884b3ff..10a99ae0e 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1394,6 +1394,7 @@ function wait_until_http_svc_is_up() { wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" $retryMax if [ 0 -ne $? ]; then + echo "[STATUS CHECK] ERROR: Exiting because we cannot work without service ${SVC_NAME}." exit 1 fi return 0 @@ -1412,10 +1413,10 @@ function wait_until_http_svc_is_up_advanced() { local retryNum=0 while [ "true" != "${isUp}" ]; do - echo "Testing if service ${SVC_NAME} is up at \'${SVC_HTTP_URL}\'. Retry $retryNum / $retryMax " + echo "[STATUS CHECK] Testing if service ${SVC_NAME} is up at \'${SVC_HTTP_URL}\'. Retry $retryNum / $retryMax " let retryNum+=1 if [ ${retryMax} -le ${retryNum} ]; then - echo "Maximum amount of retries reached: $retryNum / $retryMax " + echo "[STATUS CHECK] WARNING: Maximum amount of retries reached: $retryNum / $retryMax " sleep 1 return 1 fi @@ -1858,7 +1859,8 @@ function create_configuration() { echo " " echo "Create the environment configuration and upload it to Bitbucket ods-configuration repository..." pwd - ods-setup/config.sh --verbose --bitbucket "http://openshift:openshift@${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}" + # WARN: config.sh param '--verbose' activates bash set -x + ods-setup/config.sh --bitbucket "http://openshift:openshift@${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}" pushd ../ods-configuration git init # keep ods-core.env.sample as a reference @@ -1938,7 +1940,8 @@ function create_configuration() { function install_ods_project() { echo " " echo "Installing ods project..." - ods-setup/setup-ods-project.sh --namespace ods --reveal-secrets --verbose --non-interactive + # WARN: setup-ods-project.sh param '--verbose' activates bash set -x + ods-setup/setup-ods-project.sh --namespace ods --reveal-secrets --non-interactive } ####################################### @@ -2472,31 +2475,33 @@ function check_pod_and_restart_if_necessary() { local retryNum=0 while [ 0 -ne ${retVal} ]; do - echo "Checking if pod in charge of service ${SVC_NAME} is up and stopping if not. Retry $retryNum / $retryMax " + echo "[STATUS CHECK] Checking if pod in charge of service ${SVC_NAME} is up; stopping (so it restarts automatically) if not. Retry $retryNum / $retryMax " let retryNum+=1 if [ ${retryMax} -le ${retryNum} ]; then - echo "Maximum amount of retries reached: $retryNum / $retryMax " + echo "[STATUS CHECK] ERROR: Maximum amount of retries reached: $retryNum / ${retryMax}" + echo "[STATUS CHECK] ERROR: We cannot live without service ${SVC_NAME}" sleep 1 return 1 fi - retVal=0 + retVal=0 wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" 10 || retVal=1 if [ 0 -ne ${retVal} ]; then - local docker_process_killed="false" + echo "[STATUS CHECK] WARNING: Stopping pod so it restarts automatically. Service: ${SVC_NAME} " + local docker_process_killed="false" docker ps -a | grep -v 'Exited .* ago' | grep -i "${SVC_POD_ID}" | cut -d ' ' -f 1 | while read -r containerId ; do echo "Stopping $containerId" docker stop $containerId - docker_process_killed="true" + docker_process_killed="true" done - if [ "false" == "$docker_process_killed" ]; then - echo "No docker process found for pod ${SVC_NAME} with ID ${SVC_POD_ID} " - echo " " - fi + if [ "false" == "$docker_process_killed" ]; then + echo "No docker process found for pod ${SVC_NAME} with ID ${SVC_POD_ID} " + echo " " + fi fi done diff --git a/tests/scripts/free-unused-resources.sh b/tests/scripts/free-unused-resources.sh index adcbbe925..4fdd24ac9 100755 --- a/tests/scripts/free-unused-resources.sh +++ b/tests/scripts/free-unused-resources.sh @@ -5,9 +5,10 @@ echo " " function clean_containers { echo "Removing docker containers no more used... " if docker ps -a | grep -q 'Exited .* ago' ; then - set -x + docker ps -a | grep 'Exited .* ago' + echo " " + echo "Removing docker containers: " docker ps -a | grep 'Exited .* ago' | sed 's/\s\+/ /g' | cut -d ' ' -f 1 | while read id; do echo "docker rm $id"; docker rm $id; done - set +x else echo "No docker containers to remove. " fi @@ -17,7 +18,7 @@ function clean_tests { echo "Removing tests projects no more used... " oc projects | grep '^\s*tes.*' | grep -v "${OMIT_TESTS_PROJECT}" | while read -r line; do if [ ! -z "$line" ]; then - echo "Removing project $line" + echo "Removing project ${line}: oc delete project $line " oc delete project $line || true else echo "No projects to remove" @@ -27,10 +28,10 @@ function clean_tests { function clean_odsverify { if [ "true" == "$CLEAN_ODS_VERIFY" ]; then - echo "Cleaning ODS VERIFY projects..." + echo "Removing ODS VERIFY projects..." oc projects | grep '^\s*odsverify.*' | while read -r line; do if [ ! -z "$line" ]; then - echo "Removing project $line" + echo "Removing project ${line}: oc delete project $line " oc delete project $line || true else echo "No projects to remove" @@ -40,6 +41,7 @@ function clean_odsverify { } function clean_images { + echo "oc adm prune images --keep-tag-revisions=1 --keep-younger-than=30m --confirm" oc adm prune images --keep-tag-revisions=1 --keep-younger-than=30m --confirm || true } From 6016e5f6c20d4c1b138421c164d3c50087a87082 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 13:25:00 +0200 Subject: [PATCH 096/217] Cost for restarting is too high. Conditional restart. --- ods-devenv/scripts/deploy.sh | 80 +++++++++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 19 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index ff91ef553..2d856f5d4 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -73,7 +73,8 @@ function display_usage() { echo "${ME} --branch feature/ods-devenv --target install_docker" echo "${ME} --branch feature/ods-devenv --target startup_atlassian_bitbucket" echo "${ME} --branch task/upgrade-atlassian-stack --target atlassian_stack_reset" - echo "${ME} --target restart-ods " + echo "${ME} --target restart_ods # Does a full restart of ods services. Its cost is really high." + echo "${ME} --target check_ods_status # This ones restarts the service not working as expected." echo echo "Since several of the functions will require that other functions have prepared the system first," echo "the script provides utility functions like basic_vm_setup which will call functions in this" @@ -580,6 +581,9 @@ function startup_openshift_cluster() { exit 1 fi + wait_until_ocp_is_up + check_pods_and_restart_if_necessary + } ####################################### @@ -907,13 +911,31 @@ function fix_atlassian_mysql_loaded_data_checks() { ####################################### function startup_and_follow_atlassian_mysql() { startup_atlassian_mysql - echo -n "Waiting for mysqld to become available" + follow_atlassian_mysql + echo "mysqld up and running." +} + +follow_atlassian_mysql() { + local retryMax=120 + if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then + retryMax=$((1)) + fi + local retryNum=0 + + echo -n "Waiting for mysqld to become available. Max retries: ${retryMax} " until [[ "$(docker inspect --format '{{.State.Health.Status}}' ${atlassian_mysql_container_name})" == 'healthy' ]] do + let retryNum+=1 + if [ ${retryMax} -le ${retryNum} ]; then + echo "[STATUS CHECK] ERROR: Maximum amount of retries reached: $retryNum / ${retryMax}" + sleep 1 + return 1 + fi + echo -n "." sleep 1 done - echo "mysqld up and running." + return 0 } function startup_and_follow_bitbucket() { @@ -1374,19 +1396,35 @@ SJ+SA7YG9zthbLxRoBBEwIURQr5Zy1B8PonepyLz3UhL7kMVEs=X02q6' } function wait_until_atlassian_crowd_is_up() { - wait_until_http_svc_is_up "${atlassian_crowd_container_name}" "http://${atlassian_crowd_host}:${atlassian_crowd_port_internal}/" + local retryMax=20 + if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then + retryMax="$1" + fi + wait_until_http_svc_is_up "${atlassian_crowd_container_name}" "http://${atlassian_crowd_host}:${atlassian_crowd_port_internal}/" "${retryMax}" } function wait_until_atlassian_bitbucket_is_up() { - wait_until_http_svc_is_up "${atlassian_bitbucket_container_name}" "http://${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}/" + local retryMax=20 + if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then + retryMax="$1" + fi + wait_until_http_svc_is_up "${atlassian_bitbucket_container_name}" "http://${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}/" "${retryMax}" } function wait_until_atlassian_jira_is_up() { - wait_until_http_svc_is_up "${atlassian_jira_container_name}" "http://${atlassian_jira_host}:8080/" + local retryMax=20 + if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then + retryMax="$1" + fi + wait_until_http_svc_is_up "${atlassian_jira_container_name}" "http://${atlassian_jira_host}:8080/" "${retryMax}" } function wait_until_ocp_is_up() { - wait_until_http_svc_is_up "ocp" "https://ocp.odsbox.lan:8443/" + local retryMax=20 + if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then + retryMax="$1" + fi + wait_until_http_svc_is_up "ocp" "https://ocp.odsbox.lan:8443/" "${retryMax}" } function wait_until_http_svc_is_up() { @@ -1394,7 +1432,10 @@ function wait_until_http_svc_is_up() { local SVC_HTTP_URL="${2}" local CURL_SVC_OUTPUT_FILE="/tmp/result-curl-svc-${SVC_NAME}-output" local CURL_SVC_HEADERS_FILE="/tmp/result-curl-svc-${SVC_NAME}-headers" - local retryMax=100 + local retryMax=20 + if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then + retryMax=$((1)) + fi wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" $retryMax if [ 0 -ne $? ]; then @@ -1625,6 +1666,8 @@ function restart_atlassian_mysql() { inspect_mysql_ip echo "New MySQL container got ip ${atlassian_mysql_ip}. Registering with dns svc..." register_dns "${atlassian_mysql_container_name}" "${atlassian_mysql_ip}" + + follow_atlassian_mysql } ####################################### @@ -2363,14 +2406,6 @@ function startup_ods() { # restart and follow mysql restart_atlassian_mysql - printf "Waiting for mysqld to become available" - until [[ $(docker inspect --format '{{.State.Health.Status}}' ${atlassian_mysql_container_name}) == 'healthy' ]] - do - printf . - sleep 1 - done - echo "mysqld up and running." - restart_atlassian_suite local KUBEDNS_RESOLV_FILE @@ -2420,9 +2455,6 @@ function startup_ods() { startup_openshift_cluster - wait_until_ocp_is_up - - check_pods_and_restart_if_necessary echo "startup_ods: SUCCESS." echo " " echo " " @@ -2458,6 +2490,16 @@ function restart_ods() { echo " " } +function check_ods_status() { + follow_atlassian_mysql "30" || restart_atlassian_mysql + wait_until_atlassian_crowd_is_up || restart_atlassian_crowd + wait_until_atlassian_bitbucket_is_up || restart_atlassian_bitbucket + wait_until_atlassian_jira_is_up || restart_atlassian_jira + wait_until_ocp_is_up || startup_openshift_cluster + check_pods_and_restart_if_necessary +} + + function check_pods_and_restart_if_necessary() { check_pod_and_restart_if_necessary 'sonarqube' 'ods/sonarqube' 'https://sonarqube-ods.ocp.odsbox.lan/' From 7bb7c597671a71dd37b42ce3407d312a9e088254 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 13:35:37 +0200 Subject: [PATCH 097/217] Fixes typos --- ods-devenv/scripts/deploy.sh | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 2d856f5d4..c7415ed41 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -916,10 +916,8 @@ function startup_and_follow_atlassian_mysql() { } follow_atlassian_mysql() { - local retryMax=120 - if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then - retryMax=$((1)) - fi + local retryMaxIn=${5:-120} + local retryMax=$((retryMaxIn)) local retryNum=0 echo -n "Waiting for mysqld to become available. Max retries: ${retryMax} " @@ -1396,34 +1394,22 @@ SJ+SA7YG9zthbLxRoBBEwIURQr5Zy1B8PonepyLz3UhL7kMVEs=X02q6' } function wait_until_atlassian_crowd_is_up() { - local retryMax=20 - if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then - retryMax="$1" - fi + local retryMax=${1:-20} wait_until_http_svc_is_up "${atlassian_crowd_container_name}" "http://${atlassian_crowd_host}:${atlassian_crowd_port_internal}/" "${retryMax}" } function wait_until_atlassian_bitbucket_is_up() { - local retryMax=20 - if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then - retryMax="$1" - fi + local retryMax=${1:-20} wait_until_http_svc_is_up "${atlassian_bitbucket_container_name}" "http://${atlassian_bitbucket_host}:${atlassian_bitbucket_port_internal}/" "${retryMax}" } function wait_until_atlassian_jira_is_up() { - local retryMax=20 - if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then - retryMax="$1" - fi + local retryMax=${1:-20} wait_until_http_svc_is_up "${atlassian_jira_container_name}" "http://${atlassian_jira_host}:8080/" "${retryMax}" } function wait_until_ocp_is_up() { - local retryMax=20 - if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then - retryMax="$1" - fi + local retryMax=${1:-20} wait_until_http_svc_is_up "ocp" "https://ocp.odsbox.lan:8443/" "${retryMax}" } @@ -1432,10 +1418,7 @@ function wait_until_http_svc_is_up() { local SVC_HTTP_URL="${2}" local CURL_SVC_OUTPUT_FILE="/tmp/result-curl-svc-${SVC_NAME}-output" local CURL_SVC_HEADERS_FILE="/tmp/result-curl-svc-${SVC_NAME}-headers" - local retryMax=20 - if [ ! -z "${1}" ] && [ ! "" == "${1}" ]; then - retryMax=$((1)) - fi + local retryMax=${1:-20} wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" $retryMax if [ 0 -ne $? ]; then @@ -1450,7 +1433,8 @@ function wait_until_http_svc_is_up_advanced() { local SVC_HTTP_URL="${2}" local CURL_SVC_OUTPUT_FILE="${3}" local CURL_SVC_HEADERS_FILE="${4}" - local retryMax=${5} + local retryMaxIn=${5:-20} + local retryMax=$((retryMaxIn)) echo " " From 061c1d96c39bdf1448a14ddae316e408f39579a2 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 13:37:18 +0200 Subject: [PATCH 098/217] typo --- ods-devenv/scripts/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index c7415ed41..4d10d50ce 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1418,7 +1418,7 @@ function wait_until_http_svc_is_up() { local SVC_HTTP_URL="${2}" local CURL_SVC_OUTPUT_FILE="/tmp/result-curl-svc-${SVC_NAME}-output" local CURL_SVC_HEADERS_FILE="/tmp/result-curl-svc-${SVC_NAME}-headers" - local retryMax=${1:-20} + local retryMax=${3:-20} wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" $retryMax if [ 0 -ne $? ]; then From 91ba2d9353ef29b4dde18a6a2386ae370f73879a Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 13:42:58 +0200 Subject: [PATCH 099/217] Improve logs for check_ods_status --- ods-devenv/scripts/deploy.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 4d10d50ce..357ff2fa2 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -920,7 +920,7 @@ follow_atlassian_mysql() { local retryMax=$((retryMaxIn)) local retryNum=0 - echo -n "Waiting for mysqld to become available. Max retries: ${retryMax} " + echo -n "[STATUS CHECK] Testing if service mysqld is available (or waiting for it). Max retries: ${retryMax} " until [[ "$(docker inspect --format '{{.State.Health.Status}}' ${atlassian_mysql_container_name})" == 'healthy' ]] do let retryNum+=1 @@ -933,6 +933,8 @@ follow_atlassian_mysql() { echo -n "." sleep 1 done + echo "[STATUS CHECK] Service is available: mysqld" + echo " " return 0 } @@ -2475,12 +2477,17 @@ function restart_ods() { } function check_ods_status() { + echo " " + echo " " follow_atlassian_mysql "30" || restart_atlassian_mysql wait_until_atlassian_crowd_is_up || restart_atlassian_crowd wait_until_atlassian_bitbucket_is_up || restart_atlassian_bitbucket wait_until_atlassian_jira_is_up || restart_atlassian_jira wait_until_ocp_is_up || startup_openshift_cluster check_pods_and_restart_if_necessary + echo " " + echo "[STATUS CHECK] (check_ods_status) Result: SUCCESS" + echo " " } From 0adbdab7cada47138f17514f66f843d1b5b482c8 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 13:45:25 +0200 Subject: [PATCH 100/217] Improves logs readability. --- ods-devenv/scripts/deploy.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 357ff2fa2..c2de3f191 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -920,7 +920,8 @@ follow_atlassian_mysql() { local retryMax=$((retryMaxIn)) local retryNum=0 - echo -n "[STATUS CHECK] Testing if service mysqld is available (or waiting for it). Max retries: ${retryMax} " + echo "[STATUS CHECK] Testing if service mysqld is available (or waiting for it). Max retries: ${retryMax} " + echo -n "Working..." until [[ "$(docker inspect --format '{{.State.Health.Status}}' ${atlassian_mysql_container_name})" == 'healthy' ]] do let retryNum+=1 @@ -933,6 +934,7 @@ follow_atlassian_mysql() { echo -n "." sleep 1 done + echo " " echo "[STATUS CHECK] Service is available: mysqld" echo " " return 0 From e96e0d595a8b5c5b24c6165fb85963e5d2af8701 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 16:23:01 +0200 Subject: [PATCH 101/217] Checking return status of restart services. --- ods-devenv/scripts/deploy.sh | 58 ++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index c2de3f191..d01a593e8 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -226,7 +226,7 @@ function setup_dnsmasq() { if ! sudo systemctl status dnsmasq | grep -q active then echo "dnsmasq startup appears to have failed." - exit + exit 1 else echo "dnsmasq service up and running" fi @@ -567,8 +567,8 @@ function startup_openshift_cluster() { oc cluster up --base-dir="${cluster_dir}" --insecure-skip-tls-verify=true --routing-suffix "ocp.odsbox.lan" --public-hostname "ocp.odsbox.lan" # Only if something fails, please... --loglevel=5 --server-loglevel=5 if [ 0 -ne $? ]; then - echo "ERROR: Could not start oc cluster (oc cluster up)" - echo " " + echo "ERROR: Could not start oc cluster (oc cluster up)" + echo " " exit 1 fi @@ -576,12 +576,12 @@ function startup_openshift_cluster() { echo "Log into oc cluster with system:admin" oc login -u system:admin if [ 0 -ne $? ]; then - echo "ERROR: Could not log into cluster with system:admin" - echo " " + echo "ERROR: Could not log into cluster with system:admin" + echo " " exit 1 fi - wait_until_ocp_is_up + wait_until_ocp_is_up || exit 1 check_pods_and_restart_if_necessary } @@ -912,21 +912,26 @@ function fix_atlassian_mysql_loaded_data_checks() { function startup_and_follow_atlassian_mysql() { startup_atlassian_mysql follow_atlassian_mysql - echo "mysqld up and running." } follow_atlassian_mysql() { - local retryMaxIn=${5:-120} + local retryMaxIn=${1:-120} + follow_container_health_status ${atlassian_mysql_container_name} ${retryMaxIn} +} + +follow_container_health_status() { + local container_name=${1} + local retryMaxIn=${2:-120} local retryMax=$((retryMaxIn)) local retryNum=0 - echo "[STATUS CHECK] Testing if service mysqld is available (or waiting for it). Max retries: ${retryMax} " + echo "[STATUS CHECK] Testing if service in container ${container_name} is available (or waiting for it). Max retries: ${retryMax} " echo -n "Working..." - until [[ "$(docker inspect --format '{{.State.Health.Status}}' ${atlassian_mysql_container_name})" == 'healthy' ]] + until [[ "$(docker inspect --format '{{.State.Health.Status}}' ${container_name})" == 'healthy' ]] do let retryNum+=1 if [ ${retryMax} -le ${retryNum} ]; then - echo "[STATUS CHECK] ERROR: Maximum amount of retries reached: $retryNum / ${retryMax}" + echo "[STATUS CHECK] ERROR: Maximum amount of retries reached looking for container ${container_name} to be ready: $retryNum / ${retryMax}" sleep 1 return 1 fi @@ -935,20 +940,19 @@ follow_atlassian_mysql() { sleep 1 done echo " " - echo "[STATUS CHECK] Service is available: mysqld" + echo "[STATUS CHECK] Service is available (healthy) in container ${container_name}" echo " " return 0 } function startup_and_follow_bitbucket() { startup_atlassian_bitbucket - echo -n "Waiting for bitbucket to become available" - until [[ "$(docker inspect --format '{{.State.Health.Status}}' ${atlassian_bitbucket_container_name})" == 'healthy' ]] - do - echo -n "." - sleep 1 - done - echo "bitbucket up and running." + follow_bitbucket +} + +function follow_bitbucket() { + local retryMaxIn=${1:-120} + follow_container_health_status ${atlassian_bitbucket_container_name} ${retryMaxIn} } function startup_and_follow_jira() { @@ -1426,8 +1430,8 @@ function wait_until_http_svc_is_up() { wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" $retryMax if [ 0 -ne $? ]; then - echo "[STATUS CHECK] ERROR: Exiting because we cannot work without service ${SVC_NAME}." - exit 1 + echo "[STATUS CHECK] ERROR: Service is down and we cannot live without it: ${SVC_NAME}" + return 1 fi return 0 } @@ -2345,14 +2349,10 @@ function run_smoke_tests() { fi # buying extra time for the quickstarter tests - restart_atlassian_suite - echo -n "Waiting for bitbucket to become available" - until [[ $(docker inspect --format '{{.State.Health.Status}}' ${atlassian_bitbucket_container_name}) == 'healthy' ]] - do - echo -n "." - sleep 1 - done - echo "bitbucket up and running." + # restart_atlassian_suite + # follow_bitbucket + # Do not understand why this was here. Prefer to check instead: + check_ods_status sleep 5 echo " " From 5108bbfd2276c6aa3c282b561906bba6a8164cec Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 17:14:01 +0200 Subject: [PATCH 102/217] Existence of files from previous checks cause wrong results. --- ods-devenv/scripts/deploy.sh | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index d01a593e8..63d8ee709 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1449,6 +1449,16 @@ function wait_until_http_svc_is_up_advanced() { local isUp="false" local retryNum=0 + if [ -f ${CURL_SVC_OUTPUT_FILE} ] || [ -f ${CURL_SVC_HEADERS_FILE} ]; then + echo "Removing files: rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} " + rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} || true + + if [ -f ${CURL_SVC_OUTPUT_FILE} ] || [ -f ${CURL_SVC_HEADERS_FILE} ]; then + echo "Removing files (with sudo): rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} " + sudo rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} || true + fi + fi + while [ "true" != "${isUp}" ]; do echo "[STATUS CHECK] Testing if service ${SVC_NAME} is up at \'${SVC_HTTP_URL}\'. Retry $retryNum / $retryMax " let retryNum+=1 @@ -1461,7 +1471,12 @@ function wait_until_http_svc_is_up_advanced() { sleep 10 fi - rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} + # Remove files from previous execution. + rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} || true + if [ -f ${CURL_SVC_OUTPUT_FILE} ] || [ -f ${CURL_SVC_HEADERS_FILE} ]; then + echo "[STATUS CHECK] WARNING: Could NOT remove files ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} " + fi + if ! curl --insecure -sSL --retry-delay 2 --retry-max-time 20 --retry 10 --dump-header ${CURL_SVC_HEADERS_FILE} ${SVC_HTTP_URL} -o ${CURL_SVC_OUTPUT_FILE} ; then echo "Curl replied != 0 for query to ${SVC_HTTP_URL} " echo "Checking if it was caused by a redirect... " @@ -1476,6 +1491,9 @@ function wait_until_http_svc_is_up_advanced() { isUp="true" done + # Removes tmp files used for checking. + rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} || true + echo "Service ${SVC_NAME} is up at ${SVC_HTTP_URL}" echo " " return 0 From 35eff6e0e4e5cdccf2986667f5a151a139f884cb Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 18:02:13 +0200 Subject: [PATCH 103/217] Reduce service retries before restarting. --- ods-devenv/scripts/deploy.sh | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 63d8ee709..439173e7e 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2500,11 +2500,11 @@ function check_ods_status() { echo " " echo " " follow_atlassian_mysql "30" || restart_atlassian_mysql - wait_until_atlassian_crowd_is_up || restart_atlassian_crowd - wait_until_atlassian_bitbucket_is_up || restart_atlassian_bitbucket - wait_until_atlassian_jira_is_up || restart_atlassian_jira - wait_until_ocp_is_up || startup_openshift_cluster - check_pods_and_restart_if_necessary + wait_until_atlassian_crowd_is_up 10 || restart_atlassian_crowd + wait_until_atlassian_bitbucket_is_up 10 || restart_atlassian_bitbucket + wait_until_atlassian_jira_is_up 10 || restart_atlassian_jira + wait_until_ocp_is_up 10 || startup_openshift_cluster + check_pods_and_restart_if_necessary 5 10 echo " " echo "[STATUS CHECK] (check_ods_status) Result: SUCCESS" echo " " @@ -2512,10 +2512,12 @@ function check_ods_status() { function check_pods_and_restart_if_necessary() { + local retryMaxIn=${1:-5} + local retryMaxHttpIn=${2:-10} - check_pod_and_restart_if_necessary 'sonarqube' 'ods/sonarqube' 'https://sonarqube-ods.ocp.odsbox.lan/' - check_pod_and_restart_if_necessary 'prov-app' 'ods/ods-provisioning-app' 'https://prov-app-ods.ocp.odsbox.lan/' - check_pod_and_restart_if_necessary 'nexus' 'ods/nexus' 'https://nexus-ods.ocp.odsbox.lan/' + check_pod_and_restart_if_necessary 'sonarqube' 'ods/sonarqube' 'https://sonarqube-ods.ocp.odsbox.lan/' ${retryMaxIn} ${retryMaxHttpIn} + check_pod_and_restart_if_necessary 'prov-app' 'ods/ods-provisioning-app' 'https://prov-app-ods.ocp.odsbox.lan/' ${retryMaxIn} ${retryMaxHttpIn} + check_pod_and_restart_if_necessary 'nexus' 'ods/nexus' 'https://nexus-ods.ocp.odsbox.lan/' ${retryMaxIn} ${retryMaxHttpIn} # https://jenkins-ods.ocp.odsbox.lan } @@ -2526,7 +2528,9 @@ function check_pod_and_restart_if_necessary() { local SVC_HTTP_URL="${3}" local CURL_SVC_OUTPUT_FILE="/tmp/result-curl-svc-${SVC_NAME}-output" local CURL_SVC_HEADERS_FILE="/tmp/result-curl-svc-${SVC_NAME}-headers" - local retryMax=3 + local retryMaxIn=${4:-5} + local retryMax=$((retryMaxIn)) + local retryMaxHttpIn=${5:-10} local retVal=1 local retryNum=0 @@ -2543,7 +2547,7 @@ function check_pod_and_restart_if_necessary() { fi retVal=0 - wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" 10 || retVal=1 + wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" ${retryMaxHttpIn} || retVal=1 if [ 0 -ne ${retVal} ]; then echo "[STATUS CHECK] WARNING: Stopping pod so it restarts automatically. Service: ${SVC_NAME} " From 955f237b0c923ef93b50b971dc3dcf2532ec00b5 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 18:06:55 +0200 Subject: [PATCH 104/217] Check ocp gui before other services. --- ods-devenv/scripts/deploy.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 439173e7e..6d7cb2d5a 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2499,12 +2499,18 @@ function restart_ods() { function check_ods_status() { echo " " echo " " + wait_until_ocp_is_up 10 || restart_ods + ## Better use restart_ods instead of startup_openshift_cluster + + # SonarQube, Provisioning app, Nexus + check_pods_and_restart_if_necessary 5 10 + + # Atlassian suite follow_atlassian_mysql "30" || restart_atlassian_mysql wait_until_atlassian_crowd_is_up 10 || restart_atlassian_crowd wait_until_atlassian_bitbucket_is_up 10 || restart_atlassian_bitbucket wait_until_atlassian_jira_is_up 10 || restart_atlassian_jira - wait_until_ocp_is_up 10 || startup_openshift_cluster - check_pods_and_restart_if_necessary 5 10 + echo " " echo "[STATUS CHECK] (check_ods_status) Result: SUCCESS" echo " " From 0901f097a28aec87f1437cc7238165693dba57d5 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Sat, 20 Aug 2022 23:49:49 +0200 Subject: [PATCH 105/217] Tries to fix existing dns problems in box. --- ods-devenv/scripts/deploy.sh | 48 ++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 6d7cb2d5a..0c7a77ff0 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -218,7 +218,13 @@ function setup_dnsmasq() { if ! >/dev/null command -v dnsmasq then - sudo yum install -y dnsmasq + local already_installed="y" + sudo yum list installed 2>&1 | grep -iq 'dnsmasq' || already_installed="n" + if [ "y" != "$already_installed" ] ; then + sudo yum install -y dnsmasq + else + echo "Not installing dnsmasq because already installed." + fi fi sudo systemctl start dnsmasq @@ -234,9 +240,9 @@ function setup_dnsmasq() { # if script runs for the 2nd time on a machine, backup dnsmasq.conf from orig if [[ -f "${dnsmasq_conf_path}.orig" ]] then - sudo cp "${dnsmasq_conf_path}.orig" "${dnsmasq_conf_path}" + sudo cp -vf "${dnsmasq_conf_path}.orig" "${dnsmasq_conf_path}" else - sudo cp "${dnsmasq_conf_path}" "${dnsmasq_conf_path}.orig" + sudo cp -vf "${dnsmasq_conf_path}" "${dnsmasq_conf_path}.orig" fi sudo sed -i "s|#domain-needed|domain-needed|" "${dnsmasq_conf_path}" @@ -258,7 +264,18 @@ function setup_dnsmasq() { # dnsmasq logs on stderr (?!) if ! 2>&1 dnsmasq --test | grep -q "dnsmasq: syntax check OK." then + echo " " echo "dnsmasq configuration failed. Please check ${dnsmasq_conf_path} and compare with ${dnsmasq_conf_path}.orig" + echo " " + echo "File ${dnsmasq_conf_path}: " + cat ${dnsmasq_conf_path} + echo " " + echo "File ${dnsmasq_conf_path}.orig: " + cat ${dnsmasq_conf_path}.orig + echo " " + diff ${dnsmasq_conf_path} ${dnsmasq_conf_path}.orig + echo " " + # return 1 else echo "dnsmasq is ok with configuration changes." fi @@ -2405,7 +2422,7 @@ function startup_ods() { # for machines derived from legacy images and login-shells that do not source .bashrc export GOPROXY="https://goproxy.io,direct" # for sonarqube - echo "Setting vm.max_map_count=262144" + echo "startup_ods: Setting vm.max_map_count=262144" sudo sysctl -w vm.max_map_count=262144 setup_dnsmasq @@ -2415,8 +2432,9 @@ function startup_ods() { restart_atlassian_suite local KUBEDNS_RESOLV_FILE - echo "setting kubedns in ${HOME}/openshift.local.clusterup/kubedns/resolv.conf" KUBEDNS_RESOLV_FILE="${HOME}/openshift.local.clusterup/kubedns/resolv.conf" + echo "startup_ods: Setting ocp kube dns in file ${KUBEDNS_RESOLV_FILE}" + echo " (adding a line with nameserver ${public_hostname})" local NEEDS_NEW_KUBEDNS_RESOLV_FILE NEEDS_NEW_KUBEDNS_RESOLV_FILE="false" @@ -2443,18 +2461,28 @@ function startup_ods() { sed -i "s|^nameserver.*$|nameserver ${public_hostname}|" ${KUBEDNS_RESOLV_FILE} rm -fv ${KUBEDNS_RESOLV_FILE}.tmp || true cp -vf ${KUBEDNS_RESOLV_FILE} "${KUBEDNS_RESOLV_FILE}.tmp" - cat "${KUBEDNS_RESOLV_FILE}.tmp" | uniq > ${HOME}/openshift.local.clusterup/kubedns/resolv.conf + cat "${KUBEDNS_RESOLV_FILE}.tmp" | uniq > ${KUBEDNS_RESOLV_FILE} - if ! grep "nameserver ${public_hostname}" ${KUBEDNS_RESOLV_FILE} + if ! grep -q "nameserver ${public_hostname}" ${KUBEDNS_RESOLV_FILE} then - echo "ERROR: Could not update kubedns/resolv.conf ! (File ${HOME}/openshift.local.clusterup/kubedns/resolv.conf )" - return 1 + echo "nameserver ${public_hostname}" >> ${KUBEDNS_RESOLV_FILE} fi - echo "Contents of file ${HOME}/openshift.local.clusterup/kubedns/resolv.conf: " + echo " " + echo "Contents of file ${KUBEDNS_RESOLV_FILE}: " cat "${KUBEDNS_RESOLV_FILE}" echo " " + if ! grep -q "nameserver ${public_hostname}" ${KUBEDNS_RESOLV_FILE} + then + echo "ERROR: Cannot find in ocp resolv.conf file the line: nameserver ${public_hostname} " + echo "ERROR: Could not update kubedns/resolv.conf ! (File ${KUBEDNS_RESOLV_FILE} )" + return 1 + else + echo "startup_ods: Configured kube dns." + echo " " + fi + # allow for OpenShifts to be resolved within OpenShift network echo "startup_ods: set iptables" sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT || true From fbd60d2c17fdd44b2125e263f067347b1638b038 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 22 Aug 2022 17:44:42 +0200 Subject: [PATCH 106/217] atlassian_stack_reset improvements --- ods-devenv/scripts/deploy.sh | 48 ++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 0c7a77ff0..5f21024ae 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -720,14 +720,46 @@ function print_system_setup() { ###### function atlassian_stack_reset() { - echo "atlassian_stack_reset: " - echo "IMPORTANT: remove from /etc/hosts lines with references to jira and bitbucket before run this method" - - docker ps -a | grep -i "\(jira\|atlass\|bitbucket\)" | sed 's@[[:space:]]\+@ @g' | cut -d' ' -f1 | while read -r container_id ; - do - docker stop $container_id - docker rm $container_id - done + echo " " + echo "atlassian_stack_reset: this functionality removes everything saved in mysql for jira, bitbucket and crowd," + echo "atlassian_stack_reset: and reloads the basic information they need to work." + echo "atlassian_stack_reset: IMPORTANT: Before running this method it is recommended to remove from /etc/hosts " + echo " all lines with references to mysql, jira, bitbucket and crowd " + echo " " + read -p "continue? y/n" yn + if [ "y" != "$yn" ] || [ "Y" != "$yn" ]; then + echo "Aborted by user request." + exit 0 + fi + + # Previously filtering by \(jira\|atlass\|bitbucket\) + # for container_name in ${atlassian_mysql_container_name} ; + # do + # docker ps -a | grep -i "${container_name}" + # docker ps -a | grep -i "${container_name}" | sed 's@[[:space:]]\+@ @g' | cut -d' ' -f1 | while read -r container_id ; + # do + # docker stop $container_id + # docker rm $container_id + # done + # done + + docker container stop "${atlassian_bitbucket_container_name}" + docker container stop "${atlassian_jira_container_name}" + docker container stop "${atlassian_crowd_container_name}" + docker container stop "${atlassian_mysql_container_name}" + + docker container rm "${atlassian_bitbucket_container_name}" + docker container rm "${atlassian_jira_container_name}" + docker container rm "${atlassian_crowd_container_name}" + docker container rm "${atlassian_mysql_container_name}" + + docker volume rm odsCrowdVolume + rm -fR $HOME/jira_data ${HOME}/bitbucket_data ${HOME}/mysql_data || + sudo rm -fR $HOME/jira_data ${HOME}/bitbucket_data ${HOME}/mysql_data + + echo " " + echo "Now regenerating all pods needed for atlassian stack... " + echo " " startup_and_follow_atlassian_mysql From b448e1e7791c554ae61c1b44a995045c746279e0 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 22 Aug 2022 17:47:18 +0200 Subject: [PATCH 107/217] atlassian_stack_reset impl typo --- ods-devenv/scripts/deploy.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 5f21024ae..d2cd0735d 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -726,8 +726,8 @@ function atlassian_stack_reset() { echo "atlassian_stack_reset: IMPORTANT: Before running this method it is recommended to remove from /etc/hosts " echo " all lines with references to mysql, jira, bitbucket and crowd " echo " " - read -p "continue? y/n" yn - if [ "y" != "$yn" ] || [ "Y" != "$yn" ]; then + read -p "continue? y/n " yn + if [ "y" != "$yn" ] && [ "Y" != "$yn" ]; then echo "Aborted by user request." exit 0 fi From a6168848b000b9e55f375e3d01f95a34fc95909c Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 22 Aug 2022 17:51:37 +0200 Subject: [PATCH 108/217] atlassian_stack_reset needs to be able to continue if aborted --- ods-devenv/scripts/deploy.sh | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index d2cd0735d..a2a83fff0 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -743,20 +743,25 @@ function atlassian_stack_reset() { # done # done - docker container stop "${atlassian_bitbucket_container_name}" - docker container stop "${atlassian_jira_container_name}" - docker container stop "${atlassian_crowd_container_name}" - docker container stop "${atlassian_mysql_container_name}" + docker container stop "${atlassian_bitbucket_container_name}" || echo "Not found container ${atlassian_bitbucket_container_name}" + docker container stop "${atlassian_jira_container_name}" || echo "Not found container ${atlassian_jira_container_name}" + docker container stop "${atlassian_crowd_container_name}" || echo "Not found container ${atlassian_crowd_container_name}" + docker container stop "${atlassian_mysql_container_name}" || echo "Not found container ${atlassian_mysql_container_name}" - docker container rm "${atlassian_bitbucket_container_name}" - docker container rm "${atlassian_jira_container_name}" - docker container rm "${atlassian_crowd_container_name}" - docker container rm "${atlassian_mysql_container_name}" + docker container rm "${atlassian_bitbucket_container_name}" || echo "Not found container ${atlassian_bitbucket_container_name}" + docker container rm "${atlassian_jira_container_name}" || echo "Not found container ${atlassian_jira_container_name}" + docker container rm "${atlassian_crowd_container_name}" || echo "Not found container ${atlassian_crowd_container_name}" + docker container rm "${atlassian_mysql_container_name}" || echo "Not found container ${atlassian_mysql_container_name}" docker volume rm odsCrowdVolume rm -fR $HOME/jira_data ${HOME}/bitbucket_data ${HOME}/mysql_data || sudo rm -fR $HOME/jira_data ${HOME}/bitbucket_data ${HOME}/mysql_data + if [ -d $HOME/jira_data ] || [ -d ${HOME}/bitbucket_data ] || [ -d ${HOME}/mysql_data ]; then + echo "Could NOT remove folders $HOME/jira_data ${HOME}/bitbucket_data ${HOME}/mysql_data " + exit 1 + fi + echo " " echo "Now regenerating all pods needed for atlassian stack... " echo " " From 73ca3e5cab9151375716f5ee6ab0e37251d694a8 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 22 Aug 2022 17:53:41 +0200 Subject: [PATCH 109/217] atlassian_stack_reset needs to be able to continue if aborted --- ods-devenv/scripts/deploy.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index a2a83fff0..fceedf485 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -743,17 +743,17 @@ function atlassian_stack_reset() { # done # done - docker container stop "${atlassian_bitbucket_container_name}" || echo "Not found container ${atlassian_bitbucket_container_name}" - docker container stop "${atlassian_jira_container_name}" || echo "Not found container ${atlassian_jira_container_name}" - docker container stop "${atlassian_crowd_container_name}" || echo "Not found container ${atlassian_crowd_container_name}" - docker container stop "${atlassian_mysql_container_name}" || echo "Not found container ${atlassian_mysql_container_name}" + docker container stop "${atlassian_bitbucket_container_name}" || echo "Not found docker container ${atlassian_bitbucket_container_name}" + docker container stop "${atlassian_jira_container_name}" || echo "Not found docker container ${atlassian_jira_container_name}" + docker container stop "${atlassian_crowd_container_name}" || echo "Not found docker container ${atlassian_crowd_container_name}" + docker container stop "${atlassian_mysql_container_name}" || echo "Not found docker container ${atlassian_mysql_container_name}" - docker container rm "${atlassian_bitbucket_container_name}" || echo "Not found container ${atlassian_bitbucket_container_name}" - docker container rm "${atlassian_jira_container_name}" || echo "Not found container ${atlassian_jira_container_name}" - docker container rm "${atlassian_crowd_container_name}" || echo "Not found container ${atlassian_crowd_container_name}" - docker container rm "${atlassian_mysql_container_name}" || echo "Not found container ${atlassian_mysql_container_name}" + docker container rm "${atlassian_bitbucket_container_name}" || echo "Not found docker container ${atlassian_bitbucket_container_name}" + docker container rm "${atlassian_jira_container_name}" || echo "Not found docker container ${atlassian_jira_container_name}" + docker container rm "${atlassian_crowd_container_name}" || echo "Not found docker container ${atlassian_crowd_container_name}" + docker container rm "${atlassian_mysql_container_name}" || echo "Not found docker container ${atlassian_mysql_container_name}" - docker volume rm odsCrowdVolume + docker volume rm odsCrowdVolume || echo "Not found docker volume odsCrowdVolume " rm -fR $HOME/jira_data ${HOME}/bitbucket_data ${HOME}/mysql_data || sudo rm -fR $HOME/jira_data ${HOME}/bitbucket_data ${HOME}/mysql_data From 4a987c36b7ad4edbbb6538f2d92a75cd042ac0c0 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 22 Aug 2022 18:09:36 +0200 Subject: [PATCH 110/217] atlassian_stack_reset needs initial databases --- ods-devenv/scripts/deploy.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index fceedf485..6502aaf1d 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -766,6 +766,8 @@ function atlassian_stack_reset() { echo "Now regenerating all pods needed for atlassian stack... " echo " " + prepare_atlassian_stack + startup_and_follow_atlassian_mysql startup_atlassian_crowd From a49bf60cde69563fc18d2f6f10de5b32caf37d35 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Tue, 23 Aug 2022 08:44:24 +0200 Subject: [PATCH 111/217] Enable usage of ssh client identity files... --- ods-devenv/scripts/deploy.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 6502aaf1d..38af1430b 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -92,6 +92,10 @@ function configure_sshd_server() { sleep 5 echo "Showing sshd_config important settings: " sudo cat /etc/ssh/sshd_config | grep -v '\(^\s*#.*$\|^\s*$\)' + echo "Configure ssh client (used for git, etc)... " + sudo sed -i 's|^\ *\# \+IdentityFile\ \+\(.*\)|IdentityFile \1|g' /etc/ssh/ssh_config + grep -i 'IdentityFile' /etc/ssh/ssh_config + echo " " } function configure_sshd_openshift_keys() { From 1b84a83a1d0748b57943c13c85514adc680d8bc6 Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Tue, 23 Aug 2022 13:24:13 +0000 Subject: [PATCH 112/217] remove_jira_just_upgraded_message --- ods-devenv/scripts/deploy.sh | 68 ++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 6502aaf1d..055c6f322 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1139,6 +1139,74 @@ function configure_jira2crowd() { rm "${cookie_jar_path}" } +# Not working as expected. To be removed. +function remove_jira_just_upgraded_message() { + FILES_PATH="${HOME}/tmp/remove_jira_just_upgraded_message" + rm -frv ${FILES_PATH} + mkdir -pv ${FILES_PATH} + + local cookie_jar_path="${FILES_PATH}/jira_cookie_jar.txt" + local errors_file="${FILES_PATH}/errors.txt" + local headers_file="${FILES_PATH}/headers.txt" + rm -fv ${errors_file} + + local jira_login_reply="${FILES_PATH}/q_jira_login_1.html" + rm -fv ${jira_login_reply} + echo "remove_jira_just_upgraded_message: Login to Jira: step 1" + curl -sSL --insecure 'http://172.17.0.1:18080/login.jsp' \ + -b "${cookie_jar_path}" \ + -c "${cookie_jar_path}" \ + --data 'os_username=openshift&os_password=openshift&os_destination=&user_role=&atl_token=&login=Log+In' \ + --compressed \ + --output ${jira_login_reply} --dump-header ${headers_file} --stderr ${errors_file} \ + || echo "Error in login step 2" | tee -a ${errors_file} + + echo "remove_jira_just_upgraded_message: Login to Jira: step 2" + local jira_login_page_fn="${FILES_PATH}/q_jira_login_2.html" + rm -fv ${jira_login_page_fn} + curl -sSL --insecure --connect-timeout 30 --max-time 120 --retry-delay 5 --retry 5 --verbose \ + 'http://172.17.0.1:18080/' -u "openshift:openshift" \ + --output ${jira_login_page_fn} --dump-header ${headers_file} --stderr ${errors_file} \ + || echo "Error in login step 2" | tee -a ${errors_file} + + echo "remove_jira_just_upgraded_message: PostUpgradeLandingPage" + local jira_postUpgradeLandingPage="${FILES_PATH}/q_jira_postUpgradeLandingPage.html" + rm -fv ${jira_postUpgradeLandingPage} + curl -sSL --insecure 'http://172.17.0.1:18080/secure/PostUpgradeLandingPage.jspa' \ + -b "${cookie_jar_path}" \ + -c "${cookie_jar_path}" \ + --compressed \ + --output ${jira_postUpgradeLandingPage} --dump-header ${headers_file} --stderr ${errors_file} \ + || echo "Error in jira_postUpgradeLandingPage" | tee -a ${errors_file} + # | pup --color + + echo "remove_jira_just_upgraded_message: Check 1." + local jira_check1="${FILES_PATH}/q_jira_check1.html" + rm -fv ${jira_check1} + curl -sSL --insecure 'http://172.17.0.1:18080/secure/WelcomeToJIRA.jspa' \ + -b "${cookie_jar_path}" \ + -c "${cookie_jar_path}" \ + --compressed \ + --output ${jira_check1} --dump-header ${headers_file} --stderr ${errors_file} \ + || echo "Error in jira_check1" | tee -a ${errors_file} + # | pup --color + + echo "remove_jira_just_upgraded_message: Check 2." + local jira_check2="${FILES_PATH}/q_jira_check2.html" + rm -fv ${jira_check2} + curl -sSL --insecure 'http://172.17.0.1:18080/secure/BrowseProjects.jspa' \ + -b "${cookie_jar_path}" \ + -c "${cookie_jar_path}" \ + --compressed \ + --output ${jira_check2} --dump-header ${headers_file} --stderr ${errors_file} \ + || echo "Error in jira_check2" | tee -a ${errors_file} + # | pup --color + + echo " " + echo "DONE ?" + echo " " +} + ####################################### # When BitBucket and Crowd both are up and running, this function can be used # to configure a BitBucket directory service against Crowd. From ef428c941f09ce98b02b3869b03197fd96ea1bbb Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 12:09:27 +0200 Subject: [PATCH 113/217] Initial version, taken from build ods box. --- ods-devenv/buildbot/jenkins/Jenkinsfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ods-devenv/buildbot/jenkins/Jenkinsfile diff --git a/ods-devenv/buildbot/jenkins/Jenkinsfile b/ods-devenv/buildbot/jenkins/Jenkinsfile new file mode 100644 index 000000000..e69de29bb From 784846a7ab70f3758883518f2c31beb985df2a2b Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 12:33:33 +0200 Subject: [PATCH 114/217] Creating a jenkinsFile to build the bot. --- ods-devenv/buildbot/jenkins/Jenkinsfile | 118 ++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/ods-devenv/buildbot/jenkins/Jenkinsfile b/ods-devenv/buildbot/jenkins/Jenkinsfile index e69de29bb..3ae484522 100644 --- a/ods-devenv/buildbot/jenkins/Jenkinsfile +++ b/ods-devenv/buildbot/jenkins/Jenkinsfile @@ -0,0 +1,118 @@ +def buildBadge = addEmbeddableBadgeConfiguration(id: "odsbuild", status: "started") + +pipeline { + + parameters { + string(name: 'ODS_BRANCH', defaultValue: 'experimental', description: "ods-core branch to checkout.") + } + + environment { + // ODS_BRANCH = "experimental" + JOB_NAME = "ods-build-${ODS_BRANCH}-branch" + BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + instance_type = "t2.micro" + } + + agent { + node('edpBox') + } + + + options { + ansiColor('xterm') + } + + + stages { + stage('ODS BuildBot: running AMI build!') { + steps { + script { + try { + echoInfo "Setting build badge status!" + buildBadge.setStatus("running") + + echoInfo "Started ODS AMI build number '${BUILD_NUMBER}' for branch: '${ODS_BRANCH}'" + echoInfo "BUILD_FOLDER = '${BUILD_FOLDER}'" + echoInfo "... logging some environment details" + sh 'whoami && pwd && ls -lart' + sh 'echo $PATH' + sh 'git version' + + echoInfo "... create temp build folder" + sh 'mkdir -p ${BUILD_FOLDER}' + echoInfo "... cloning ods-core && checkout branch ${ODS_BRANCH}" + sh 'cd ${BUILD_FOLDER} && git clone https://github.com/opendevstack/ods-core.git && cd ods-core && git checkout ${ODS_BRANCH}' + + echoInfo "... preparing temp build folder" + withCredentials([sshUserPrivateKey(credentialsId: "edp_slave_openshift_pub", keyFileVariable: 'ssh_public_key'), + sshUserPrivateKey(credentialsId: "edp_slave_openshift_202205", keyFileVariable: 'ssh_private_key')]) { + sh 'cp ${ssh_public_key} ${BUILD_FOLDER}/jenkins.pub' + sh 'cp ${ssh_private_key} ${BUILD_FOLDER}/jenkins.priv' + } + sh 'cd ${BUILD_FOLDER} && cp /home/centos/.buildbotrc . && chmod u+w .buildbotrc && pwd && ls -lart' + sh "cd ${BUILD_FOLDER} && sed -i 's|pub-key=.*\$|pub_key=${BUILD_FOLDER}/jenkins.pub|' .buildbotrc && cat .buildbotrc" + + withCredentials([usernamePassword(credentialsId: 'registry_credentials', usernameVariable: 'registry_user', passwordVariable: 'registry_token')]) { + withCredentials([[ $class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'awsID', accessKeyVariable: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + // This is safe, client and secret will be masked in the output + // echoInfo "aws client = $AWS_ACCESS_KEY_ID" + // echoInfo "aws secret = $AWS_SECRET_ACCESS_KEY" + echoInfo "... running packer build" + + // For building BOXES (Initial version): + // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 \ + // && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" \ + // && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ + // --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' + + // For building BOXES (Current version): + // set -x + // export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + // cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + // log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ + // cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ + // --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ + // --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + + // For building buildBots (taken from documentation): + // export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && \ + // source ~/opendevstack/ods-core/ods-devenv/buildbot/scripts/.buildbotrc && date && cd ~/opendevstack/ods-core && \ + // time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "${aws_access_key}" \ + // --aws-secret-key "${aws_secret_access_key}" --ods-branch "${branch}" --instance-type ${instance_type} \ + // | tr "/" "_")_$(date +\%Y\%m\%dT\%H\%M\%S).log" + sh ''' + set -x + export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ + cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ + --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ + --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + ''' + } + } + + echoInfo "...done!" + + buildBadge.setStatus("passing") + + } catch (Exception err) { + buildBadge.setStatus("failing") + + echoError "error: " + err + throw err + } + } + } + } + + } +} + +def echoInfo(msg){ + echo "\033[32m ${msg} \033[0m" +} + +def echoError(msg){ + echo "\033[31m ${msg} \033[0m" +} From 2a28bc828e8b0d9aa3ad552608e81ff90e59cfdb Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 12:38:20 +0200 Subject: [PATCH 115/217] typo --- ods-devenv/packer/create_ods_box_image.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 2a23e489c..ff71cd6a0 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -218,7 +218,6 @@ function create_ods_box_ami() { echo "A public key was not provided... creating tmp ssh key ($pub_key)..." ssh-keygen -t rsa -n "openshift@odsbox.lan" -C "openshift@odsbox.lan" -m PEM -P "" -f "${ssh_private_key_file_path}" pwd - cat cat ./ssh-tmp-key $pub_key fi From ebae72b2e241c5382a5524286f25dd2279bbf8f4 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 13:35:34 +0200 Subject: [PATCH 116/217] Tools to regenerate buildBot. --- create-projects/create-cd-jenkins.sh | 2 +- create-projects/create-projects.sh | 2 +- ods-devenv/packer/CentOS2_buildBot.json | 71 +++++++++++++++++++ ods-devenv/packer/configure_buildBot.sh | 5 ++ ods-devenv/packer/create_ods_box_image.sh | 52 ++++++++++++++ .../{JenkinsFile => JenkinsFile_createOdsBox} | 0 .../jenkins/Jenkinsfile_createBuildBot} | 13 ++-- ods-devenv/scripts/create-base-ami-image.sh | 46 ++++++++---- 8 files changed, 170 insertions(+), 21 deletions(-) create mode 100644 ods-devenv/packer/CentOS2_buildBot.json create mode 100644 ods-devenv/packer/configure_buildBot.sh rename ods-devenv/packer/jenkins/{JenkinsFile => JenkinsFile_createOdsBox} (100%) rename ods-devenv/{buildbot/jenkins/Jenkinsfile => packer/jenkins/Jenkinsfile_createBuildBot} (90%) diff --git a/create-projects/create-cd-jenkins.sh b/create-projects/create-cd-jenkins.sh index adb33a67a..afed9add8 100755 --- a/create-projects/create-cd-jenkins.sh +++ b/create-projects/create-cd-jenkins.sh @@ -7,7 +7,7 @@ set -eu # As this script is executed within the context of Jenkins, which has some # env vars exposed (via the DeploymentConfig, but also from inside the image). # It might be surprising to have them alter what the script does without seeing -# them passed/set in the Jenkinsfile. That's why we reset all env vars here +# them passed/set in the Jenkinsfile_createBuildBot. That's why we reset all env vars here # and require them to be passed as parameters to the script. TAILOR="tailor" diff --git a/create-projects/create-projects.sh b/create-projects/create-projects.sh index 8de3d5fd1..37a5c3752 100755 --- a/create-projects/create-projects.sh +++ b/create-projects/create-projects.sh @@ -4,7 +4,7 @@ set -e # As this script is executed within the context of Jenkins, which has some # env vars exposed (via the DeploymentConfig, but also from inside the image). # It might be surprising to have them alter what the script does without seeing -# them passed/set in the Jenkinsfile. That's why we reset all env vars here +# them passed/set in the Jenkinsfile_createBuildBot. That's why we reset all env vars here # and require them to be passed as parameters to the script. PROJECT_ID="" diff --git a/ods-devenv/packer/CentOS2_buildBot.json b/ods-devenv/packer/CentOS2_buildBot.json new file mode 100644 index 000000000..86e2dac17 --- /dev/null +++ b/ods-devenv/packer/CentOS2_buildBot.json @@ -0,0 +1,71 @@ +{ + "variables": { + "aws_access_key": "", + "aws_secret_key": "", + "pub_key": "" + }, + "builders": [ + { + "type": "amazon-ebs", + "access_key": "{{user `aws_access_key`}}", + "secret_key": "{{user `aws_secret_key`}}", + "region": "eu-west-1", + "source_ami_filter": { + "filters": { + "image-id": "{{user `ami_id`}}" + }, + "owners": "275438041116" + }, + "instance_type": "{{user `instance_type`}}", + "ssh_username": "{{user `username`}}", + "ssh_password": "{{user `password`}}", + "ssh_private_key_file": "{{user `ssh_private_key_file_path`}}", + "ami_name": "ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", + "run_tags": { + "Name": "ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" + }, + "tags": { + "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" + } + } + ], + "provisioners": [ + { + "type": "shell", + "inline": [ + "echo 'Create folders structure needed ( ~/tmp, ~/bin, ... )... '", + "mkdir -pv ~/tmp ~/bin" + ] + }, + { + "type": "file", + "source": "{{user `pub_key`}}", + "destination": "~/tmp/odsbox.pub" + }, + { + "type": "file", + "source": "{{user `ssh_private_key_file_path`}}", + "destination": "~/tmp/odsbox" + }, + { + "type": "shell", + "inline": [ + "echo 'Adding odsbox.pub to authorized keys'", + "mkdir -p ~/.ssh", + "chmod go-xrw ~/.ssh", + "mv -vf ~/tmp/odsbox.pub ~/.ssh/odsbox.pub", + "mv -vf ~/tmp/odsbox ~/.ssh/odsbox", + "touch ~/.ssh/authorized_keys", + "cat ~/.ssh/odsbox.pub >> ~/.ssh/authorized_keys", + "chmod go-xrw ~/.ssh/*", + "ls -lart ~/.ssh", + "echo '...done!'" + ] + }, + { + "type": "shell", + "script": "ods-devenv/packer/configure_buildBot.sh", + "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" + } + ] +} diff --git a/ods-devenv/packer/configure_buildBot.sh b/ods-devenv/packer/configure_buildBot.sh new file mode 100644 index 000000000..cc66e358a --- /dev/null +++ b/ods-devenv/packer/configure_buildBot.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo "${0}" diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index ff71cd6a0..87fb6dc52 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -236,5 +236,57 @@ function create_ods_box_ami() { fi } +function create_buildBot_ami() { + echo "Retrieving from AWS latest image with name import-ami-*, root-device-type=ebs and tag Name=CentOS* " + local ami_id + ami_id=$(aws ec2 describe-images \ + --owners 275438041116 \ + --filters "Name=name,Values=import-ami-*" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=CentOS*" \ + --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') + + echo "ami-id=${ami_id}" + echo "PACKER_LOG=${PACKER_LOG}" + echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" + echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" + echo "ods_branch=${ods_branch}" + + if [[ "${dryrun}" == "true" ]] + then + echo -n "dryrun" + local counter=0 + while (( counter <= 10 )) + do + sleep 1 + counter=$((counter + 1)) + echo -n '.' + done + echo "done." + exit 0 + else + if [[ -z ${pub_key:=""} ]]; then + pub_key="ssh-tmp-key.pub" + ssh_private_key_file_path="./ssh-tmp-key" + echo "A public key was not provided... creating tmp ssh key ($pub_key)..." + ssh-keygen -t rsa -n "openshift@odsbox.lan" -C "openshift@odsbox.lan" -m PEM -P "" -f "${ssh_private_key_file_path}" + pwd + cat ./ssh-tmp-key $pub_key + fi + + time packer build -on-error=ask \ + -var "aws_access_key=${aws_access_key}" \ + -var "aws_secret_key=${aws_secret_key}" \ + -var "ami_id=${ami_id}" \ + -var 'username=openshift' \ + -var 'password=openshift' \ + -var "name_tag=ODS Box $(date)" \ + -var "ods_branch=${ods_branch}" \ + -var "instance_type=${instance_type}" \ + -var "pub_key=${pub_key}" \ + -var "ssh_private_key_file_path=${ssh_private_key_file_path}" \ + ods-devenv/packer/CentOS2ODSBox.json + fi +} + + target="${target:-display_usage}" ${target} diff --git a/ods-devenv/packer/jenkins/JenkinsFile b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox similarity index 100% rename from ods-devenv/packer/jenkins/JenkinsFile rename to ods-devenv/packer/jenkins/JenkinsFile_createOdsBox diff --git a/ods-devenv/buildbot/jenkins/Jenkinsfile b/ods-devenv/packer/jenkins/Jenkinsfile_createBuildBot similarity index 90% rename from ods-devenv/buildbot/jenkins/Jenkinsfile rename to ods-devenv/packer/jenkins/Jenkinsfile_createBuildBot index 3ae484522..daf1e35f3 100644 --- a/ods-devenv/buildbot/jenkins/Jenkinsfile +++ b/ods-devenv/packer/jenkins/Jenkinsfile_createBuildBot @@ -49,8 +49,6 @@ pipeline { sh 'cp ${ssh_public_key} ${BUILD_FOLDER}/jenkins.pub' sh 'cp ${ssh_private_key} ${BUILD_FOLDER}/jenkins.priv' } - sh 'cd ${BUILD_FOLDER} && cp /home/centos/.buildbotrc . && chmod u+w .buildbotrc && pwd && ls -lart' - sh "cd ${BUILD_FOLDER} && sed -i 's|pub-key=.*\$|pub_key=${BUILD_FOLDER}/jenkins.pub|' .buildbotrc && cat .buildbotrc" withCredentials([usernamePassword(credentialsId: 'registry_credentials', usernameVariable: 'registry_user', passwordVariable: 'registry_token')]) { withCredentials([[ $class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'awsID', accessKeyVariable: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { @@ -80,12 +78,17 @@ pipeline { // time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "${aws_access_key}" \ // --aws-secret-key "${aws_secret_access_key}" --ods-branch "${branch}" --instance-type ${instance_type} \ // | tr "/" "_")_$(date +\%Y\%m\%dT\%H\%M\%S).log" + + // Now the current version for building buildBots: sh ''' set -x export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ - cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ - log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ - cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ + export log_path="${HOME}/logs" && export build_path="${HOME}/opendevstack/builds" && + export build_result_path="${HOME}/opendevstack/packer_build_result" && + export log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ + export branch="${ODS_BRANCH}" && export instance_type="t2.micro" && + date && \ + cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_buildBot_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv ''' diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index 5d17444b6..d7c17bb1b 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -2,6 +2,9 @@ set -eu +echo " " +echo "Pre-Usage: " +echo " " echo "This script is in charge of configuring the base AMI image we use." read -p "Continue (y/n) ? " yn if [ -z "$yn" ] || [ "y" != "$yn" ]; then @@ -13,17 +16,10 @@ function general_configuration() { sudo yum update -y sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm - sudo yum -y install git gitk iproute lsof tigervnc-server remmina firewalld git2u-all glances golang jq tree htop etckeeper - - curl -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-94.0.4606.81-1.x86_64.rpm - sudo yum install -y google-chrome-stable-94.0.4606.81-1.x86_64.rpm - rm -f google-chrome-stable-94.0.4606.81-1.x86_64.rpm + sudo yum -y install git gitk iproute lsof git2u-all glances golang jq tree htop etckeeper sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum -y install docker-ce-3:19.03.14-3.el7.x86_64 - sudo yum install -y centos-release-openshift-origin311 - sudo yum install -y origin-clients - sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm sudo sed -i "s@.*PasswordAuthentication\ .*@PasswordAuthentication yes@g" /etc/ssh/sshd_config sudo sed -i "s@.*ChallengeResponseAuthentication\ .*@ChallengeResponseAuthentication yes@g" /etc/ssh/sshd_config @@ -48,10 +44,6 @@ function general_configuration() { echo "WARNING: git repository in etc folder has been created before." fi - # GUI: - sudo yum groupinstall -y "MATE Desktop" || echo "ERROR: Could not install mate desktop" - sudo yum groups -y install "GNOME Desktop" || echo "ERROR: Could not install gnome desktop" - # JDK rm -fv /tmp/adoptopenjdk.repo || echo "ERROR: Could not remove file /tmp/adoptopenjdk.repo " echo "[AdoptOpenJDK]" >> /tmp/adoptopenjdk.repo @@ -63,13 +55,35 @@ function general_configuration() { sudo mv /tmp/adoptopenjdk.repo /etc/yum.repos.d/adoptopenjdk.repo - sudo yum -y install adoptopenjdk-8-hotspot adoptopenjdk-11-hotspot adoptopenjdk-8-hotspot-jre adoptopenjdk-11-hotspot-jre + # No more in use: adoptopenjdk-8-hotspot adoptopenjdk-8-hotspot-jre + sudo yum -y install adoptopenjdk-11-hotspot adoptopenjdk-11-hotspot-jre sudo yum -y remove java-1.7.0-openjdk java-1.7.0-openjdk-headless \ java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-headless.x86_64 \ java-11-openjdk.x86_64 java-11-openjdk-headless.x86_64 || true } +function configuration_extras() { + + # Connection and security tools. + sudo yum -y install tigervnc-server remmina firewalld + + # OCP 3 + sudo yum install -y centos-release-openshift-origin311 + sudo yum install -y origin-clients + sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm + + # GUI: + sudo yum groupinstall -y "MATE Desktop" || echo "ERROR: Could not install mate desktop" + sudo yum groups -y install "GNOME Desktop" || echo "ERROR: Could not install gnome desktop" + + # Google Chrome + curl -LO https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-94.0.4606.81-1.x86_64.rpm + sudo yum install -y google-chrome-stable-94.0.4606.81-1.x86_64.rpm + rm -f google-chrome-stable-94.0.4606.81-1.x86_64.rpm + +} + function setup_xrdp() { sudo yum -y install automake libtool libXaw-devel xorg-x11-server-devel xrdp-devel nasm yasm libXfont-devel \ libXfont libXfont2 libXfont2-devel x11vnc pam-devel libXrandr-devel lame-devel lame-libs fuse \ @@ -148,7 +162,11 @@ function fix_locales() { } general_configuration -setup_xrdp +if [ -z "${1}" ] || [ "" == "${1}"]; then + # No need for this ones if creating a buildBot ... + configuration_extras + setup_xrdp +fi fix_locales echo " " From 4a9add9533737971cd488f5ceb3a1541192d2c10 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 14:10:57 +0200 Subject: [PATCH 117/217] mini-howto --- ods-devenv/scripts/create-base-ami-image.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index d7c17bb1b..9d186536e 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -4,6 +4,12 @@ set -eu echo " " echo "Pre-Usage: " +echo "---------- " +echo "$ yum install curl jq " +echo "$ base64 --v ; jq --version ; curl --v " +echo "$ curl -sSL "https://api.github.com/repos/opendevstack/ods-core/contents/ods-devenv/scripts/create-base-ami-image.sh?ref=experimental" | jq -r ".content" | base64 --decode > create-base-ami-image.sh " +echo "$ chmod +x create-base-ami-image.sh " +echo "$ ./create-base-ami-image.sh [buildBot] " echo " " echo "This script is in charge of configuring the base AMI image we use." read -p "Continue (y/n) ? " yn From c77d6a9cd63879a663a6dbe49fffe1e70e7fcc79 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 16:10:06 +0200 Subject: [PATCH 118/217] Improvements in script generating buildBot --- ods-devenv/scripts/create-base-ami-image.sh | 30 ++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index 9d186536e..e105db95f 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -5,8 +5,9 @@ set -eu echo " " echo "Pre-Usage: " echo "---------- " -echo "$ yum install curl jq " -echo "$ base64 --v ; jq --version ; curl --v " +echo "$ sudo yum -y install epel-release " +echo "$ sudo yum -y install curl jq" +echo "$ base64 --v ; jq --version ; curl --version " echo "$ curl -sSL "https://api.github.com/repos/opendevstack/ods-core/contents/ods-devenv/scripts/create-base-ami-image.sh?ref=experimental" | jq -r ".content" | base64 --decode > create-base-ami-image.sh " echo "$ chmod +x create-base-ami-image.sh " echo "$ ./create-base-ami-image.sh [buildBot] " @@ -22,8 +23,7 @@ function general_configuration() { sudo yum update -y sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm - sudo yum -y install git gitk iproute lsof git2u-all glances golang jq tree htop etckeeper - + sudo yum -y install git iproute lsof git2u-all glances golang jq tree sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum -y install docker-ce-3:19.03.14-3.el7.x86_64 @@ -41,15 +41,6 @@ function general_configuration() { sudo usermod -a -G docker openshift - # etckeeper - if [ ! -d /etc/.git ]; then - cd /etc/ - sudo etckeeper init - sudo etckeeper commit -m "Initial commit" - else - echo "WARNING: git repository in etc folder has been created before." - fi - # JDK rm -fv /tmp/adoptopenjdk.repo || echo "ERROR: Could not remove file /tmp/adoptopenjdk.repo " echo "[AdoptOpenJDK]" >> /tmp/adoptopenjdk.repo @@ -71,8 +62,17 @@ function general_configuration() { function configuration_extras() { - # Connection and security tools. - sudo yum -y install tigervnc-server remmina firewalld + # Tools not needed in buildBot + sudo yum -y install tigervnc-server remmina firewalld gitk htop etckeeper + + # etckeeper + if [ ! -d /etc/.git ]; then + cd /etc/ + sudo etckeeper init + sudo etckeeper commit -m "Initial commit" + else + echo "WARNING: git repository in etc folder has been created before." + fi # OCP 3 sudo yum install -y centos-release-openshift-origin311 From 5e1c6656f51b8753f4a4a995c37fe378a6a10414 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 16:38:11 +0200 Subject: [PATCH 119/217] Allow reinstall --- ods-devenv/scripts/create-base-ami-image.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index e105db95f..db9b5e750 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -20,12 +20,12 @@ if [ -z "$yn" ] || [ "y" != "$yn" ]; then fi function general_configuration() { - sudo yum update -y - sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm - sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm - sudo yum -y install git iproute lsof git2u-all glances golang jq tree - sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - sudo yum -y install docker-ce-3:19.03.14-3.el7.x86_64 + sudo yum update -y || true + sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm || true + sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm || true + sudo yum -y install git iproute lsof git2u-all glances golang jq tree || true + sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo || true + sudo yum -y install docker-ce-3:19.03.14-3.el7.x86_64 || true sudo sed -i "s@.*PasswordAuthentication\ .*@PasswordAuthentication yes@g" /etc/ssh/sshd_config sudo sed -i "s@.*ChallengeResponseAuthentication\ .*@ChallengeResponseAuthentication yes@g" /etc/ssh/sshd_config From 5763382f2b5f45b4e663e25ae67a987c2573fd5b Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 17:11:18 +0200 Subject: [PATCH 120/217] Allow reinstalling... --- ods-devenv/scripts/create-base-ami-image.sh | 44 ++++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index db9b5e750..fe831e672 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -31,16 +31,9 @@ function general_configuration() { sudo sed -i "s@.*ChallengeResponseAuthentication\ .*@ChallengeResponseAuthentication yes@g" /etc/ssh/sshd_config sudo sed -i "s@.*GSSAPIAuthentication\ .*@GSSAPIAuthentication no@g" /etc/ssh/sshd_config sudo sed -i "s@.*KerberosAuthentication\ .*@KerberosAuthentication no@g" /etc/ssh/sshd_config - sudo systemctl restart sshd + sudo systemctl restart sshd sudo systemctl status sshd - sudo adduser openshift - echo -e "openshift\nopenshift" | sudo passwd openshift - sudo usermod -a -G wheel openshift - sudo sed -i 's/%wheel\s*ALL=(ALL)\s*ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers - - sudo usermod -a -G docker openshift - # JDK rm -fv /tmp/adoptopenjdk.repo || echo "ERROR: Could not remove file /tmp/adoptopenjdk.repo " echo "[AdoptOpenJDK]" >> /tmp/adoptopenjdk.repo @@ -50,14 +43,42 @@ function general_configuration() { echo "gpgcheck=1" >> /tmp/adoptopenjdk.repo echo "gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public" >> /tmp/adoptopenjdk.repo - sudo mv /tmp/adoptopenjdk.repo /etc/yum.repos.d/adoptopenjdk.repo + rm -fv /etc/yum.repos.d/adoptopenjdk.repo + sudo mv -vf /tmp/adoptopenjdk.repo /etc/yum.repos.d/adoptopenjdk.repo # No more in use: adoptopenjdk-8-hotspot adoptopenjdk-8-hotspot-jre - sudo yum -y install adoptopenjdk-11-hotspot adoptopenjdk-11-hotspot-jre + sudo yum -y install adoptopenjdk-11-hotspot adoptopenjdk-11-hotspot-jre || true sudo yum -y remove java-1.7.0-openjdk java-1.7.0-openjdk-headless \ java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-headless.x86_64 \ java-11-openjdk.x86_64 java-11-openjdk-headless.x86_64 || true + yum list installed | grep -i '\(openjdk\|jdk\|java\)' +} + +function permissions_fixes() { + local PENDING="false" + grep -i openshift /etc/passwd || PENDING="true" + if [ "true" == "${PENDING}" ] ; then + sudo adduser openshift + echo -e "openshift\nopenshift" | sudo passwd openshift + fi + + PENDING="false" + grep -i openshift /etc/group | grep -i wheel || PENDING="true" + if [ "true" == "${PENDING}" ] ; then + sudo usermod -a -G wheel openshift + fi + + PENDING="false" + sudo grep -v "^\s*#" /etc/sudoers | grep -i "wheel" | grep -i "nopasswd" || PENDING="true" + if [ "true" == "${PENDING}" ] ; then + sudo sed -i 's/%wheel\s*ALL=(ALL)\s*ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers + fi + PENDING="false" + grep -i openshift /etc/group | grep -i docker || PENDING="true" + if [ "true" == "${PENDING}" ] ; then + sudo usermod -a -G docker openshift + fi } function configuration_extras() { @@ -168,11 +189,14 @@ function fix_locales() { } general_configuration +permissions_fixes + if [ -z "${1}" ] || [ "" == "${1}"]; then # No need for this ones if creating a buildBot ... configuration_extras setup_xrdp fi + fix_locales echo " " From bda12071809248af120847813392d7b104adb554 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 17:30:12 +0200 Subject: [PATCH 121/217] typos --- ods-devenv/scripts/create-base-ami-image.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index fe831e672..093c23883 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -31,7 +31,7 @@ function general_configuration() { sudo sed -i "s@.*ChallengeResponseAuthentication\ .*@ChallengeResponseAuthentication yes@g" /etc/ssh/sshd_config sudo sed -i "s@.*GSSAPIAuthentication\ .*@GSSAPIAuthentication no@g" /etc/ssh/sshd_config sudo sed -i "s@.*KerberosAuthentication\ .*@KerberosAuthentication no@g" /etc/ssh/sshd_config - sudo systemctl restart sshd + sudo systemctl restart sshd sudo systemctl status sshd # JDK @@ -43,7 +43,7 @@ function general_configuration() { echo "gpgcheck=1" >> /tmp/adoptopenjdk.repo echo "gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public" >> /tmp/adoptopenjdk.repo - rm -fv /etc/yum.repos.d/adoptopenjdk.repo + sudo rm -fv /etc/yum.repos.d/adoptopenjdk.repo sudo mv -vf /tmp/adoptopenjdk.repo /etc/yum.repos.d/adoptopenjdk.repo # No more in use: adoptopenjdk-8-hotspot adoptopenjdk-8-hotspot-jre From baf520fd0024eacb617ee263f0f18334ec73b094 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 17:31:21 +0200 Subject: [PATCH 122/217] typo --- ods-devenv/scripts/create-base-ami-image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index 093c23883..4ef5f8ae3 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -191,7 +191,7 @@ function fix_locales() { general_configuration permissions_fixes -if [ -z "${1}" ] || [ "" == "${1}"]; then +if [ -z "${1}" ] || [ "" == "${1}" ]; then # No need for this ones if creating a buildBot ... configuration_extras setup_xrdp From 74e63711d705227c1102773e86063880fea08306 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 24 Aug 2022 17:33:41 +0200 Subject: [PATCH 123/217] typos --- ods-devenv/scripts/create-base-ami-image.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index 4ef5f8ae3..37826dbc0 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -176,6 +176,7 @@ function setup_xrdp() { function fix_locales() { + sudo rm -fv /etc/profile.d/sh.local || true echo ' ' | sudo tee -a /etc/profile.d/sh.local echo 'export LC_ALL="en_US.UTF-8"' | sudo tee -a /etc/profile.d/sh.local echo 'export LC_CTYPE="en_US.UTF-8"' | sudo tee -a /etc/profile.d/sh.local @@ -183,8 +184,10 @@ function fix_locales() { echo 'export LANG="en_US.UTF-8"' | sudo tee -a /etc/profile.d/sh.local cd /etc - sudo git add . - sudo git commit -a -m "Configured centos locales." + if [ -d ".git" ]; then + sudo git add . + sudo git commit -a -m "Configured centos locales." + fi } From 56d7d01f72a4a1c41a4df34242751d04f5448062 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 08:33:01 +0200 Subject: [PATCH 124/217] Real building of buildBot --- ods-devenv/packer/configure_buildBot.sh | 15 +++++++++++++++ ods-devenv/packer/create_ods_box_image.sh | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ods-devenv/packer/configure_buildBot.sh b/ods-devenv/packer/configure_buildBot.sh index cc66e358a..33fc2f755 100644 --- a/ods-devenv/packer/configure_buildBot.sh +++ b/ods-devenv/packer/configure_buildBot.sh @@ -3,3 +3,18 @@ set -euo pipefail echo "${0}" +echo -n "whoami: " +whoami + +# install aws cli +curl -sSL --retry 5 --retry-delay 5 --retry-max-time 300 "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" +unzip awscliv2.zip +sudo ./aws/install + +mkdir -p bin logs opendevstack/builds opendevstack/packer_build_result tmp +cd opendevstack || exit 1 +git clone https://github.com/opendevstack/ods-core.git + +echo " " +echo "DONE." +echo " " diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 87fb6dc52..3586b58f2 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -241,7 +241,7 @@ function create_buildBot_ami() { local ami_id ami_id=$(aws ec2 describe-images \ --owners 275438041116 \ - --filters "Name=name,Values=import-ami-*" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=CentOS*" \ + --filters "Name=name,Values=buildBot-base-ami-*" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=CentOS*" \ --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') echo "ami-id=${ami_id}" From d5e4b91ccaaeffa02ff288db6e4b42297352455d Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 09:44:18 +0200 Subject: [PATCH 125/217] We need awscli in images. --- ods-devenv/scripts/create-base-ami-image.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index 37826dbc0..c739f4703 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -23,7 +23,7 @@ function general_configuration() { sudo yum update -y || true sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm || true sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm || true - sudo yum -y install git iproute lsof git2u-all glances golang jq tree || true + sudo yum -y install git iproute lsof git2u-all glances golang jq tree unzip || true sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo || true sudo yum -y install docker-ce-3:19.03.14-3.el7.x86_64 || true @@ -52,6 +52,12 @@ function general_configuration() { java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-headless.x86_64 \ java-11-openjdk.x86_64 java-11-openjdk-headless.x86_64 || true yum list installed | grep -i '\(openjdk\|jdk\|java\)' + + # Install + curl -sSL --retry 5 --retry-delay 5 --retry-max-time 300 "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + sudo rm -fr awscliv2.zip ./aws/install } function permissions_fixes() { From 777ea1e8f1ee78f1a3c4e9514f00bfd7f207f231 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 10:48:37 +0200 Subject: [PATCH 126/217] Disabled script. --- ods-devenv/packer/configure_buildBot.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ods-devenv/packer/configure_buildBot.sh b/ods-devenv/packer/configure_buildBot.sh index 33fc2f755..96951c5a0 100644 --- a/ods-devenv/packer/configure_buildBot.sh +++ b/ods-devenv/packer/configure_buildBot.sh @@ -18,3 +18,6 @@ git clone https://github.com/opendevstack/ods-core.git echo " " echo "DONE." echo " " + +echo "Disabled because can't work." +exit 1 From 55f3f771918ea2e61dc8788e3ec068ad4ab98387 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 10:54:48 +0200 Subject: [PATCH 127/217] jenkinsfiles. --- .../jenkins/JenkinsFile_createOdsBox_4_x | 103 ++++++++++++++++++ .../JenkinsFile_createOdsBox_experimental | 101 +++++++++++++++++ .../jenkins/JenkinsFile_createOdsBox_master | 101 +++++++++++++++++ .../JenkinsFile_createOdsBox_ods_devenv | 101 +++++++++++++++++ 4 files changed, 406 insertions(+) create mode 100644 ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x create mode 100644 ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental create mode 100644 ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master create mode 100644 ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x new file mode 100644 index 000000000..8c523c1b7 --- /dev/null +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x @@ -0,0 +1,103 @@ +def buildBadge = addEmbeddableBadgeConfiguration(id: "odsbuild", status: "started") + +pipeline { + + environment { + ODS_BRANCH = "4.x" + JOB_NAME = "ods-build-4_x-branch" + BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + } + + agent { + node('buildbot') + } + + + options { + ansiColor('xterm') + } + + + stages { + stage('ODS BuildBot: running AMI build!') { + + steps { + + script { + + try { + echoInfo "Setting build badge status!" + buildBadge.setStatus("running") + + GIT_COMMIT_REV = sh(returnStdout: true, script: "curl -sSL https://api.github.com/repos/opendevstack/ods-core/commits/${ODS_BRANCH} | jq .sha").trim() + GIT_COMMIT_REV = GIT_COMMIT_REV.length()>8 ? GIT_COMMIT_REV.substring(1,8) : GIT_COMMIT_REV + GIT_COMMIT_MESSAGE = sh(returnStdout: true, script: "curl -sSL https://api.github.com/repos/opendevstack/ods-core/commits/${ODS_BRANCH} | jq .commit.message").trim() + GIT_COMMIT_MESSAGE = GIT_COMMIT_MESSAGE.length()>25 ? GIT_COMMIT_MESSAGE.substring(1,25) : GIT_COMMIT_MESSAGE + BUILD_SUBJECT = "#${GIT_COMMIT_REV}: ${GIT_COMMIT_MESSAGE}..." + buildBadge.setSubject(BUILD_SUBJECT) + + + echoInfo "Started ODS AMI build number '${BUILD_NUMBER}' for branch: '${ODS_BRANCH}'" + echoInfo "BUILD_FOLDER = '${BUILD_FOLDER}'" + echoInfo "... logging some environment details" + sh 'whoami && pwd && ls -lart' + sh 'echo $PATH' + sh 'git version' + + echoInfo "... create temp build folder" + sh 'mkdir -p ${BUILD_FOLDER}' + echoInfo "... cloning ods-core && checkout branch ${ODS_BRANCH}" + sh 'cd ${BUILD_FOLDER} && git clone https://github.com/opendevstack/ods-core.git && cd ods-core && git checkout ${ODS_BRANCH}' + + echoInfo "... preparing temp build folder" + withCredentials([sshUserPrivateKey(credentialsId: "edp_slave_openshift_pub", keyFileVariable: 'ssh_public_key'), + sshUserPrivateKey(credentialsId: "edp_slave_openshift_202205", keyFileVariable: 'ssh_private_key')]) { + sh 'cp ${ssh_public_key} ${BUILD_FOLDER}/jenkins.pub' + sh 'cp ${ssh_private_key} ${BUILD_FOLDER}/jenkins.priv' + } + sh 'cd ${BUILD_FOLDER} && cp /home/centos/.buildbotrc . && chmod u+w .buildbotrc && pwd && ls -lart' + sh "cd ${BUILD_FOLDER} && sed -i 's|pub-key=.*\$|pub_key=${BUILD_FOLDER}/jenkins.pub|' .buildbotrc && cat .buildbotrc" + + withCredentials([usernamePassword(credentialsId: 'registry_credentials', usernameVariable: 'registry_user', passwordVariable: 'registry_token')]) { + withCredentials([[ $class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'awsID', accessKeyVariable: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + // This is safe, client and secret will be masked in the output + // echoInfo "aws client = $AWS_ACCESS_KEY_ID" + // echoInfo "aws secret = $AWS_SECRET_ACCESS_KEY" + echoInfo "... running packer build" + // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' + sh ''' + set -x + export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ + cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ + --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ + --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + ''' + } + } + + echoInfo "...done!" + + buildBadge.setStatus("passing") + + } catch (Exception err) { + buildBadge.setStatus("failing") + + echoError "error: " + err + throw err + } + } + } + } + + } +} + +def echoInfo(msg){ + echo "\033[32m ${msg} \033[0m" +} + +def echoError(msg){ + echo "\033[31m ${msg} \033[0m" +} diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental new file mode 100644 index 000000000..b70d72d3d --- /dev/null +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental @@ -0,0 +1,101 @@ +def buildBadge = addEmbeddableBadgeConfiguration(id: "odsbuild", status: "started") + +pipeline { + + environment { + ODS_BRANCH = "experimental" + JOB_NAME = "ods-build-experimental-branch" + BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + } + + agent { + node('buildbot') + } + + + options { + ansiColor('xterm') + } + + + stages { + stage('ODS BuildBot: running AMI build!') { + + steps { + + script { + + try { + echoInfo "Setting build badge status!" + buildBadge.setStatus("running") + + GIT_COMMIT_REV = sh(returnStdout: true, script: "curl -sSL https://api.github.com/repos/opendevstack/ods-core/commits/${ODS_BRANCH} | jq .sha").trim() + GIT_COMMIT_REV = GIT_COMMIT_REV.length()>8 ? GIT_COMMIT_REV.substring(1,8) : GIT_COMMIT_REV + GIT_COMMIT_MESSAGE = sh(returnStdout: true, script: "curl -sSL https://api.github.com/repos/opendevstack/ods-core/commits/${ODS_BRANCH} | jq .commit.message").trim() + GIT_COMMIT_MESSAGE = GIT_COMMIT_MESSAGE.length()>25 ? GIT_COMMIT_MESSAGE.substring(1,25) : GIT_COMMIT_MESSAGE + BUILD_SUBJECT = "#${GIT_COMMIT_REV}: ${GIT_COMMIT_MESSAGE}..." + buildBadge.setSubject(BUILD_SUBJECT) + + + echoInfo "Started ODS AMI build number '${BUILD_NUMBER}' for branch: '${ODS_BRANCH}'" + echoInfo "BUILD_FOLDER = '${BUILD_FOLDER}'" + echoInfo "... logging some environment details" + sh 'whoami && pwd && ls -lart' + sh 'echo $PATH' + sh 'git version' + + echoInfo "... create temp build folder" + sh 'mkdir -p ${BUILD_FOLDER}' + echoInfo "... cloning ods-core && checkout branch ${ODS_BRANCH}" + sh 'cd ${BUILD_FOLDER} && git clone https://github.com/opendevstack/ods-core.git && cd ods-core && git checkout ${ODS_BRANCH}' + + echoInfo "... preparing temp build folder" + withCredentials([sshUserPrivateKey(credentialsId: "edp_slave_openshift_pub", keyFileVariable: 'ssh_public_key'), + sshUserPrivateKey(credentialsId: "edp_slave_openshift_202205", keyFileVariable: 'ssh_private_key')]) { + sh 'cp ${ssh_public_key} ${BUILD_FOLDER}/jenkins.pub' + sh 'cp ${ssh_private_key} ${BUILD_FOLDER}/jenkins.priv' + } + + withCredentials([usernamePassword(credentialsId: 'registry_credentials', usernameVariable: 'registry_user', passwordVariable: 'registry_token')]) { + withCredentials([[ $class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'awsID', accessKeyVariable: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + // This is safe, client and secret will be masked in the output + // echoInfo "aws client = $AWS_ACCESS_KEY_ID" + // echoInfo "aws secret = $AWS_SECRET_ACCESS_KEY" + echoInfo "... running packer build" + // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' + sh ''' + set -x + export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ + cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ + --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ + --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + ''' + } + } + + echoInfo "...done!" + + buildBadge.setStatus("passing") + + } catch (Exception err) { + buildBadge.setStatus("failing") + + echoError "error: " + err + throw err + } + } + } + } + + } +} + +def echoInfo(msg){ + echo "\033[32m ${msg} \033[0m" +} + +def echoError(msg){ + echo "\033[31m ${msg} \033[0m" +} diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master new file mode 100644 index 000000000..feea1f00c --- /dev/null +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master @@ -0,0 +1,101 @@ +def buildBadge = addEmbeddableBadgeConfiguration(id: "odsbuild", status: "started") + +pipeline { + + environment { + ODS_BRANCH = "master" + JOB_NAME = "ods-build-master-branch" + BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + } + + agent { + node('buildbot') + } + + + options { + ansiColor('xterm') + } + + + stages { + stage('ODS BuildBot: running AMI build!') { + + steps { + + script { + + try { + echoInfo "Setting build badge status!" + buildBadge.setStatus("running") + + GIT_COMMIT_REV = sh(returnStdout: true, script: "curl -sSL https://api.github.com/repos/opendevstack/ods-core/commits/${ODS_BRANCH} | jq .sha").trim() + GIT_COMMIT_REV = GIT_COMMIT_REV.length()>8 ? GIT_COMMIT_REV.substring(1,8) : GIT_COMMIT_REV + GIT_COMMIT_MESSAGE = sh(returnStdout: true, script: "curl -sSL https://api.github.com/repos/opendevstack/ods-core/commits/${ODS_BRANCH} | jq .commit.message").trim() + GIT_COMMIT_MESSAGE = GIT_COMMIT_MESSAGE.length()>25 ? GIT_COMMIT_MESSAGE.substring(1,25) : GIT_COMMIT_MESSAGE + BUILD_SUBJECT = "#${GIT_COMMIT_REV}: ${GIT_COMMIT_MESSAGE}..." + buildBadge.setSubject(BUILD_SUBJECT) + + + echoInfo "Started ODS AMI build number '${BUILD_NUMBER}' for branch: '${ODS_BRANCH}'" + echoInfo "BUILD_FOLDER = '${BUILD_FOLDER}'" + echoInfo "... logging some environment details" + sh 'whoami && pwd && ls -lart' + sh 'echo $PATH' + sh 'git version' + + echoInfo "... create temp build folder" + sh 'mkdir -p ${BUILD_FOLDER}' + echoInfo "... cloning ods-core && checkout branch ${ODS_BRANCH}" + sh 'cd ${BUILD_FOLDER} && git clone https://github.com/opendevstack/ods-core.git && cd ods-core && git checkout ${ODS_BRANCH}' + + echoInfo "... preparing temp build folder" + withCredentials([sshUserPrivateKey(credentialsId: "edp_slave_openshift_pub", keyFileVariable: 'ssh_public_key'), + sshUserPrivateKey(credentialsId: "edp_slave_openshift_202205", keyFileVariable: 'ssh_private_key')]) { + sh 'cp ${ssh_public_key} ${BUILD_FOLDER}/jenkins.pub' + sh 'cp ${ssh_private_key} ${BUILD_FOLDER}/jenkins.priv' + } + + withCredentials([usernamePassword(credentialsId: 'registry_credentials', usernameVariable: 'registry_user', passwordVariable: 'registry_token')]) { + withCredentials([[ $class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'awsID', accessKeyVariable: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + // This is safe, client and secret will be masked in the output + // echoInfo "aws client = $AWS_ACCESS_KEY_ID" + // echoInfo "aws secret = $AWS_SECRET_ACCESS_KEY" + echoInfo "... running packer build" + // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' + sh ''' + set -x + export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ + cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ + --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ + --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + ''' + } + } + + echoInfo "...done!" + + buildBadge.setStatus("passing") + + } catch (Exception err) { + buildBadge.setStatus("failing") + + echoError "error: " + err + throw err + } + } + } + } + + } +} + +def echoInfo(msg){ + echo "\033[32m ${msg} \033[0m" +} + +def echoError(msg){ + echo "\033[31m ${msg} \033[0m" +} diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv new file mode 100644 index 000000000..432ff9250 --- /dev/null +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv @@ -0,0 +1,101 @@ +def buildBadge = addEmbeddableBadgeConfiguration(id: "odsbuild", status: "started") + +pipeline { + + environment { + ODS_BRANCH = "ods-devenv" + JOB_NAME = "ods-build-ods-devenv-branch" + BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + } + + agent { + node('buildbot') + } + + + options { + ansiColor('xterm') + } + + + stages { + stage('ODS BuildBot: running AMI build!') { + + steps { + + script { + + try { + echoInfo "Setting build badge status!" + buildBadge.setStatus("running") + + GIT_COMMIT_REV = sh(returnStdout: true, script: "curl -sSL https://api.github.com/repos/opendevstack/ods-core/commits/${ODS_BRANCH} | jq .sha").trim() + GIT_COMMIT_REV = GIT_COMMIT_REV.length()>8 ? GIT_COMMIT_REV.substring(1,8) : GIT_COMMIT_REV + GIT_COMMIT_MESSAGE = sh(returnStdout: true, script: "curl -sSL https://api.github.com/repos/opendevstack/ods-core/commits/${ODS_BRANCH} | jq .commit.message").trim() + GIT_COMMIT_MESSAGE = GIT_COMMIT_MESSAGE.length()>25 ? GIT_COMMIT_MESSAGE.substring(1,25) : GIT_COMMIT_MESSAGE + BUILD_SUBJECT = "#${GIT_COMMIT_REV}: ${GIT_COMMIT_MESSAGE}..." + buildBadge.setSubject(BUILD_SUBJECT) + + + echoInfo "Started ODS AMI build number '${BUILD_NUMBER}' for branch: '${ODS_BRANCH}'" + echoInfo "BUILD_FOLDER = '${BUILD_FOLDER}'" + echoInfo "... logging some environment details" + sh 'whoami && pwd && ls -lart' + sh 'echo $PATH' + sh 'git version' + + echoInfo "... create temp build folder" + sh 'mkdir -p ${BUILD_FOLDER}' + echoInfo "... cloning ods-core && checkout branch ${ODS_BRANCH}" + sh 'cd ${BUILD_FOLDER} && git clone https://github.com/opendevstack/ods-core.git && cd ods-core && git checkout ${ODS_BRANCH}' + + echoInfo "... preparing temp build folder" + withCredentials([sshUserPrivateKey(credentialsId: "edp_slave_openshift_pub", keyFileVariable: 'ssh_public_key'), + sshUserPrivateKey(credentialsId: "edp_slave_openshift_202205", keyFileVariable: 'ssh_private_key')]) { + sh 'cp ${ssh_public_key} ${BUILD_FOLDER}/jenkins.pub' + sh 'cp ${ssh_private_key} ${BUILD_FOLDER}/jenkins.priv' + } + + withCredentials([usernamePassword(credentialsId: 'registry_credentials', usernameVariable: 'registry_user', passwordVariable: 'registry_token')]) { + withCredentials([[ $class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'awsID', accessKeyVariable: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + // This is safe, client and secret will be masked in the output + // echoInfo "aws client = $AWS_ACCESS_KEY_ID" + // echoInfo "aws secret = $AWS_SECRET_ACCESS_KEY" + echoInfo "... running packer build" + // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' + sh ''' + set -x + export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ + cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ + --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ + --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + ''' + } + } + + echoInfo "...done!" + + buildBadge.setStatus("passing") + + } catch (Exception err) { + buildBadge.setStatus("failing") + + echoError "error: " + err + throw err + } + } + } + } + + } +} + +def echoInfo(msg){ + echo "\033[32m ${msg} \033[0m" +} + +def echoError(msg){ + echo "\033[31m ${msg} \033[0m" +} From 0b966c9f4caf41726a3950c9f2d062736f18b700 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 11:03:50 +0200 Subject: [PATCH 128/217] Removes deprecated stuff --- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox | 4 +--- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x | 2 +- .../packer/jenkins/JenkinsFile_createOdsBox_experimental | 2 +- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master | 2 +- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox index 72ca14672..a01a31321 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox @@ -55,8 +55,6 @@ pipeline { sh 'cp ${ssh_public_key} ${BUILD_FOLDER}/jenkins.pub' sh 'cp ${ssh_private_key} ${BUILD_FOLDER}/jenkins.priv' } - sh 'cd ${BUILD_FOLDER} && cp /home/centos/.buildbotrc . && chmod u+w .buildbotrc && pwd && ls -lart' - sh "cd ${BUILD_FOLDER} && sed -i 's|pub-key=.*\$|pub_key=${BUILD_FOLDER}/jenkins.pub|' .buildbotrc && cat .buildbotrc" withCredentials([usernamePassword(credentialsId: 'registry_credentials', usernameVariable: 'registry_user', passwordVariable: 'registry_token')]) { withCredentials([[ $class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'awsID', accessKeyVariable: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { @@ -68,7 +66,7 @@ pipeline { sh ''' set -x export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ - cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && date && \ log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x index 8c523c1b7..a32590c5c 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x @@ -68,7 +68,7 @@ pipeline { sh ''' set -x export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ - cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && date && \ log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental index b70d72d3d..df0342423 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental @@ -66,7 +66,7 @@ pipeline { sh ''' set -x export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ - cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && date && \ log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master index feea1f00c..ee2e500c5 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master @@ -66,7 +66,7 @@ pipeline { sh ''' set -x export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ - cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && date && \ log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv index 432ff9250..bf467f838 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv @@ -66,7 +66,7 @@ pipeline { sh ''' set -x export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ - cd ${BUILD_FOLDER} && pwd && ls -lart && source ${BUILD_FOLDER}/.buildbotrc && date && \ + cd ${BUILD_FOLDER} && pwd && ls -lart && date && \ log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ From aab518977003569743100dc7a42e2df9c2be8e5e Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 11:08:35 +0200 Subject: [PATCH 129/217] typos --- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox | 2 +- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x | 2 +- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental | 2 +- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master | 2 +- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox index a01a31321..3a5fbf6ba 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox @@ -70,7 +70,7 @@ pipeline { log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ - --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + --instance-type "${instance_type}" --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" ''' } } diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x index a32590c5c..5a8550a84 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x @@ -72,7 +72,7 @@ pipeline { log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ - --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + --instance-type "${instance_type}" --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" ''' } } diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental index df0342423..141503bd8 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental @@ -70,7 +70,7 @@ pipeline { log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ - --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + --instance-type "${instance_type}" --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" ''' } } diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master index ee2e500c5..5750a968c 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master @@ -70,7 +70,7 @@ pipeline { log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ - --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + --instance-type "${instance_type}" --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" ''' } } diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv index bf467f838..fa7939d34 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv @@ -70,7 +70,7 @@ pipeline { log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ - --instance-type ${instance_type} --pub-key ${BUILD_FOLDER}/jenkins.pub --priv-key ${BUILD_FOLDER}/jenkins.priv + --instance-type "${instance_type}" --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" ''' } } From 4e52ff502a5707e367ffd6dd12602acc285ec68d Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 12:18:38 +0200 Subject: [PATCH 130/217] Install packer. --- ods-devenv/scripts/create-base-ami-image.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ods-devenv/scripts/create-base-ami-image.sh b/ods-devenv/scripts/create-base-ami-image.sh index c739f4703..de8f6f560 100755 --- a/ods-devenv/scripts/create-base-ami-image.sh +++ b/ods-devenv/scripts/create-base-ami-image.sh @@ -34,6 +34,15 @@ function general_configuration() { sudo systemctl restart sshd sudo systemctl status sshd + # Packer + sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo || true + if [ -f "/etc/yum.repos.d/hashicorp.repo" ]; then + echo "Disable hashicorp yum repo by default." + sudo sed -i 's@^\s*enabled\s*=.*$@enabled = 0@g' /etc/yum.repos.d/hashicorp.repo + grep -i 'enabled' /etc/yum.repos.d/hashicorp.repo + fi + sudo yum install -y --enablerepo hashicorp packer || true + # JDK rm -fv /tmp/adoptopenjdk.repo || echo "ERROR: Could not remove file /tmp/adoptopenjdk.repo " echo "[AdoptOpenJDK]" >> /tmp/adoptopenjdk.repo From 1b64e14b29a0b380527f8c305ad84896e143c856 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 12:41:00 +0200 Subject: [PATCH 131/217] Need to define when packer cfg file is. --- ods-devenv/packer/create_ods_box_image.sh | 118 +++++++++------------- 1 file changed, 47 insertions(+), 71 deletions(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 3586b58f2..887dc7f55 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -13,7 +13,7 @@ s3_bucket_name= s3_upload_folder=image_upload output_directory=output-vmware-iso instance_type=m5ad.4xlarge - +build_folder= dryrun=false while [[ "$#" -gt 0 ]]; do @@ -49,6 +49,9 @@ while [[ "$#" -gt 0 ]]; do --priv-key) ssh_private_key_file_path="$2"; shift;; --priv-key=*) ssh_private_key_file_path="${1#*=}";; + --build-folder) build_folder="$2"; shift;; + --build-folder=*) build_folder="${1#*=}";; + --target) target="$2"; shift;; --dryrun) dryrun=true;; @@ -198,6 +201,7 @@ function create_ods_box_ami() { echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" echo "ods_branch=${ods_branch}" + echo "build_folder=${build_folder}" if [[ "${dryrun}" == "true" ]] then @@ -211,82 +215,54 @@ function create_ods_box_ami() { done echo "done." exit 0 - else - if [[ -z ${pub_key:=""} ]]; then - pub_key="ssh-tmp-key.pub" - ssh_private_key_file_path="./ssh-tmp-key" - echo "A public key was not provided... creating tmp ssh key ($pub_key)..." - ssh-keygen -t rsa -n "openshift@odsbox.lan" -C "openshift@odsbox.lan" -m PEM -P "" -f "${ssh_private_key_file_path}" - pwd - cat ./ssh-tmp-key $pub_key - fi - - time packer build -on-error=ask \ - -var "aws_access_key=${aws_access_key}" \ - -var "aws_secret_key=${aws_secret_key}" \ - -var "ami_id=${ami_id}" \ - -var 'username=openshift' \ - -var 'password=openshift' \ - -var "name_tag=ODS Box $(date)" \ - -var "ods_branch=${ods_branch}" \ - -var "instance_type=${instance_type}" \ - -var "pub_key=${pub_key}" \ - -var "ssh_private_key_file_path=${ssh_private_key_file_path}" \ - ods-devenv/packer/CentOS2ODSBox.json fi -} -function create_buildBot_ami() { - echo "Retrieving from AWS latest image with name import-ami-*, root-device-type=ebs and tag Name=CentOS* " - local ami_id - ami_id=$(aws ec2 describe-images \ - --owners 275438041116 \ - --filters "Name=name,Values=buildBot-base-ami-*" "Name=root-device-type,Values=ebs" "Name=tag:Name,Values=CentOS*" \ - --query 'Images[*].{ImageId:ImageId,CreationDate:CreationDate}' | jq -r '. |= sort_by(.CreationDate) | reverse[0] | .ImageId') - - echo "ami-id=${ami_id}" - echo "PACKER_LOG=${PACKER_LOG}" - echo "AWS_MAX_ATTEMPTS=${AWS_MAX_ATTEMPTS}" - echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" - echo "ods_branch=${ods_branch}" + if [[ -z ${pub_key:=""} ]]; then + pub_key="ssh-tmp-key.pub" + ssh_private_key_file_path="./ssh-tmp-key" + echo "A public key was not provided... creating tmp ssh key ($pub_key)..." + ssh-keygen -t rsa -n "openshift@odsbox.lan" -C "openshift@odsbox.lan" -m PEM -P "" -f "${ssh_private_key_file_path}" + pwd + sleep 2 + cat ./ssh-tmp-key $pub_key + sleep 2 + fi - if [[ "${dryrun}" == "true" ]] - then - echo -n "dryrun" - local counter=0 - while (( counter <= 10 )) - do - sleep 1 - counter=$((counter + 1)) - echo -n '.' - done - echo "done." - exit 0 + # build_folder -> ${BUILD_FOLDER} + packerConfigDefault="${build_folder}/ods-core/ods-devenv/buildbot/scripts/.buildbotrc" + if [ -f "${packerConfigDefault}" ]; then + echo "Setting variable PACKER_CONFIG=${packerConfigDefault}" + export PACKER_CONFIG="${packerConfigDefault}" else - if [[ -z ${pub_key:=""} ]]; then - pub_key="ssh-tmp-key.pub" - ssh_private_key_file_path="./ssh-tmp-key" - echo "A public key was not provided... creating tmp ssh key ($pub_key)..." - ssh-keygen -t rsa -n "openshift@odsbox.lan" -C "openshift@odsbox.lan" -m PEM -P "" -f "${ssh_private_key_file_path}" - pwd - cat ./ssh-tmp-key $pub_key - fi - - time packer build -on-error=ask \ - -var "aws_access_key=${aws_access_key}" \ - -var "aws_secret_key=${aws_secret_key}" \ - -var "ami_id=${ami_id}" \ - -var 'username=openshift' \ - -var 'password=openshift' \ - -var "name_tag=ODS Box $(date)" \ - -var "ods_branch=${ods_branch}" \ - -var "instance_type=${instance_type}" \ - -var "pub_key=${pub_key}" \ - -var "ssh_private_key_file_path=${ssh_private_key_file_path}" \ - ods-devenv/packer/CentOS2ODSBox.json + echo "WARN: Not setting variable PACKER_CONFIG !!" fi -} + if [ ! -z "${PACKER_CONFIG}" ] && [ "" != "${PACKER_CONFIG}" ]; then + sed -i "s|pub-key=.*\$|pub_key=${pub_key}|g" ${PACKER_CONFIG} + sed -i "s|instance_type=.*\$|instance_type=${instance_type}|g" ${PACKER_CONFIG} + echo " " + echo "Contents of file set in var PACKER_CONFIG=${PACKER_CONFIG}" + echo "--- " + cat ${PACKER_CONFIG} + echo "--- " + echo " " + fi + + set +x + time packer build -on-error=ask \ + -var "aws_access_key=${aws_access_key}" \ + -var "aws_secret_key=${aws_secret_key}" \ + -var "ami_id=${ami_id}" \ + -var 'username=openshift' \ + -var 'password=openshift' \ + -var "name_tag=ODS Box $(date)" \ + -var "ods_branch=${ods_branch}" \ + -var "instance_type=${instance_type}" \ + -var "pub_key=${pub_key}" \ + -var "ssh_private_key_file_path=${ssh_private_key_file_path}" \ + ods-devenv/packer/CentOS2ODSBox.json + set -x +} target="${target:-display_usage}" ${target} From 77ac1650bd999d8de99ce164cffc47e8493ef8b3 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 12:52:18 +0200 Subject: [PATCH 132/217] typos --- ods-devenv/packer/create_ods_box_image.sh | 11 +++++++++-- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox | 3 ++- .../packer/jenkins/JenkinsFile_createOdsBox_4_x | 3 ++- .../jenkins/JenkinsFile_createOdsBox_experimental | 3 ++- .../packer/jenkins/JenkinsFile_createOdsBox_master | 3 ++- .../jenkins/JenkinsFile_createOdsBox_ods_devenv | 3 ++- 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 887dc7f55..8cea62353 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash +set -euo pipefail + aws_access_key= aws_secret_key= @@ -248,7 +250,7 @@ function create_ods_box_ami() { echo " " fi - set +x + set -x time packer build -on-error=ask \ -var "aws_access_key=${aws_access_key}" \ -var "aws_secret_key=${aws_secret_key}" \ @@ -261,7 +263,12 @@ function create_ods_box_ami() { -var "pub_key=${pub_key}" \ -var "ssh_private_key_file_path=${ssh_private_key_file_path}" \ ods-devenv/packer/CentOS2ODSBox.json - set -x + if [ 0 -ne $? ]; then + set +x + echo "Error in packer build !!" + exit 1 + fi + set +x } target="${target:-display_usage}" diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox index 3a5fbf6ba..98dac955f 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox @@ -70,7 +70,8 @@ pipeline { log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ - --instance-type "${instance_type}" --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" + --instance-type "${instance_type}" --build-folder "${BUILD_FOLDER}" \ + --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" ''' } } diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x index 5a8550a84..9178525d4 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x @@ -72,7 +72,8 @@ pipeline { log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ - --instance-type "${instance_type}" --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" + --instance-type "${instance_type}" --build-folder "${BUILD_FOLDER}" \ + --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" ''' } } diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental index 141503bd8..66ff0870a 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental @@ -70,7 +70,8 @@ pipeline { log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ - --instance-type "${instance_type}" --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" + --instance-type "${instance_type}" --build-folder "${BUILD_FOLDER}" \ + --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" ''' } } diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master index 5750a968c..829d8ece6 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master @@ -70,7 +70,8 @@ pipeline { log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ - --instance-type "${instance_type}" --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" + --instance-type "${instance_type}" --build-folder "${BUILD_FOLDER}" \ + --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" ''' } } diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv index fa7939d34..080d52bdb 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv @@ -70,7 +70,8 @@ pipeline { log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ - --instance-type "${instance_type}" --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" + --instance-type "${instance_type}" --build-folder "${BUILD_FOLDER}" \ + --pub-key "${BUILD_FOLDER}/jenkins.pub" --priv-key "${BUILD_FOLDER}/jenkins.priv" ''' } } From 42202771b898d6edb88413b65879686ce47b733e Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 13:11:38 +0200 Subject: [PATCH 133/217] Fixes packer cfg file problems. --- ods-devenv/packer/create_ods_box_image.sh | 33 ++++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 8cea62353..2d1e98e06 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -230,18 +230,31 @@ function create_ods_box_ami() { sleep 2 fi - # build_folder -> ${BUILD_FOLDER} - packerConfigDefault="${build_folder}/ods-core/ods-devenv/buildbot/scripts/.buildbotrc" - if [ -f "${packerConfigDefault}" ]; then - echo "Setting variable PACKER_CONFIG=${packerConfigDefault}" - export PACKER_CONFIG="${packerConfigDefault}" - else - echo "WARN: Not setting variable PACKER_CONFIG !!" + if [ -z "${PACKER_CONFIG}" ] || [ "" == "${PACKER_CONFIG}" ]; then + local packerConfigDefault="${build_folder}/ods-core/ods-devenv/buildbot/scripts/.buildbotrc" + if [ -f "${packerConfigDefault}" ]; then + export PACKER_CONFIG="${packerConfigDefault}" + else + echo "WARN: Not setting variable PACKER_CONFIG !!" + fi + fi + # build_folder -> ${BUILD_FOLDER} if [ ! -z "${PACKER_CONFIG}" ] && [ "" != "${PACKER_CONFIG}" ]; then - sed -i "s|pub-key=.*\$|pub_key=${pub_key}|g" ${PACKER_CONFIG} - sed -i "s|instance_type=.*\$|instance_type=${instance_type}|g" ${PACKER_CONFIG} + local tmpPackerConfigFile=${build_folder}/tmp_buildbotrc + rm -fv ${tmpPackerConfigFile} + + cp -vf ${PACKER_CONFIG} ${tmpPackerConfigFile} + sed -i "s|pub-key=.*\$|pub_key=${pub_key}|g" ${tmpPackerConfigFile} + sed -i "s|instance_type=.*\$|instance_type=${instance_type}|g" ${tmpPackerConfigFile} + + local packerConfigFile="${build_folder}/.buildbotrc" + rm -fv ${packerConfigFile} + grep -iv '^\s*#.*' ${tmpPackerConfigFile} | grep -iv '[[:alnum:]_-]*=\s*$' > ${packerConfigFile} + echo "Setting variable PACKER_CONFIG=${packerConfigFile}" + export PACKER_CONFIG="${packerConfigFile}" + echo " " echo "Contents of file set in var PACKER_CONFIG=${PACKER_CONFIG}" echo "--- " @@ -264,7 +277,7 @@ function create_ods_box_ami() { -var "ssh_private_key_file_path=${ssh_private_key_file_path}" \ ods-devenv/packer/CentOS2ODSBox.json if [ 0 -ne $? ]; then - set +x + set +x echo "Error in packer build !!" exit 1 fi From 1f43a72a783f05ddf4b2039a78c78958d52d0ac1 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 13:15:45 +0200 Subject: [PATCH 134/217] typo: var initialization --- ods-devenv/packer/create_ods_box_image.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 2d1e98e06..c3aa5e021 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -17,6 +17,7 @@ output_directory=output-vmware-iso instance_type=m5ad.4xlarge build_folder= dryrun=false +PACKER_CONFIG=${PACKER_CONFIG-"."} while [[ "$#" -gt 0 ]]; do case $1 in From 6c94f067aeecdc5b5fb94af6c4ad00c89cdfb450 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 13:31:07 +0200 Subject: [PATCH 135/217] Check if packer cfg file exists --- ods-devenv/packer/create_ods_box_image.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index c3aa5e021..49fcc8d2b 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -17,7 +17,7 @@ output_directory=output-vmware-iso instance_type=m5ad.4xlarge build_folder= dryrun=false -PACKER_CONFIG=${PACKER_CONFIG-"."} +PACKER_CONFIG=${PACKER_CONFIG-""} while [[ "$#" -gt 0 ]]; do case $1 in @@ -231,7 +231,7 @@ function create_ods_box_ami() { sleep 2 fi - if [ -z "${PACKER_CONFIG}" ] || [ "" == "${PACKER_CONFIG}" ]; then + if [ -z "${PACKER_CONFIG}" ] || [ "" == "${PACKER_CONFIG}" ] || [ ! -f "${PACKER_CONFIG}" ]; then local packerConfigDefault="${build_folder}/ods-core/ods-devenv/buildbot/scripts/.buildbotrc" if [ -f "${packerConfigDefault}" ]; then export PACKER_CONFIG="${packerConfigDefault}" From b061c08c2f101de1ad3231457f08ca5f13dcabb7 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 14:03:05 +0200 Subject: [PATCH 136/217] Correct packer cfg file --- ods-devenv/packer/create_ods_box_image.sh | 33 ++----------------- .../packer/jenkins/JenkinsFile_createOdsBox | 5 ++- .../jenkins/JenkinsFile_createOdsBox_4_x | 8 +++-- .../JenkinsFile_createOdsBox_experimental | 5 ++- .../jenkins/JenkinsFile_createOdsBox_master | 5 ++- .../JenkinsFile_createOdsBox_ods_devenv | 5 ++- 6 files changed, 24 insertions(+), 37 deletions(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 49fcc8d2b..3e7db10b0 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -231,36 +231,10 @@ function create_ods_box_ami() { sleep 2 fi - if [ -z "${PACKER_CONFIG}" ] || [ "" == "${PACKER_CONFIG}" ] || [ ! -f "${PACKER_CONFIG}" ]; then - local packerConfigDefault="${build_folder}/ods-core/ods-devenv/buildbot/scripts/.buildbotrc" - if [ -f "${packerConfigDefault}" ]; then - export PACKER_CONFIG="${packerConfigDefault}" - else - echo "WARN: Not setting variable PACKER_CONFIG !!" - fi - - fi - # build_folder -> ${BUILD_FOLDER} - if [ ! -z "${PACKER_CONFIG}" ] && [ "" != "${PACKER_CONFIG}" ]; then - local tmpPackerConfigFile=${build_folder}/tmp_buildbotrc - rm -fv ${tmpPackerConfigFile} - - cp -vf ${PACKER_CONFIG} ${tmpPackerConfigFile} - sed -i "s|pub-key=.*\$|pub_key=${pub_key}|g" ${tmpPackerConfigFile} - sed -i "s|instance_type=.*\$|instance_type=${instance_type}|g" ${tmpPackerConfigFile} - - local packerConfigFile="${build_folder}/.buildbotrc" - rm -fv ${packerConfigFile} - grep -iv '^\s*#.*' ${tmpPackerConfigFile} | grep -iv '[[:alnum:]_-]*=\s*$' > ${packerConfigFile} - echo "Setting variable PACKER_CONFIG=${packerConfigFile}" - export PACKER_CONFIG="${packerConfigFile}" - + export PACKER_CONFIG="ods-devenv/packer/CentOS2ODSBox.json" echo " " - echo "Contents of file set in var PACKER_CONFIG=${PACKER_CONFIG}" - echo "--- " - cat ${PACKER_CONFIG} - echo "--- " + echo "PACKER_CONFIG=${PACKER_CONFIG}" echo " " fi @@ -275,8 +249,7 @@ function create_ods_box_ami() { -var "ods_branch=${ods_branch}" \ -var "instance_type=${instance_type}" \ -var "pub_key=${pub_key}" \ - -var "ssh_private_key_file_path=${ssh_private_key_file_path}" \ - ods-devenv/packer/CentOS2ODSBox.json + -var "ssh_private_key_file_path=${ssh_private_key_file_path}" if [ 0 -ne $? ]; then set +x echo "Error in packer build !!" diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox index 98dac955f..05c90dda2 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox @@ -6,6 +6,7 @@ pipeline { ODS_BRANCH = "experimental" JOB_NAME = "ods-build-4_x-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + instance_type=m5ad.4xlarge } agent { @@ -65,7 +66,9 @@ pipeline { // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' sh ''' set -x - export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + export LOG_PATH=. && export log_path=. && export build_path="${HOME}/opendevstack/builds" && \ + export build_result_path="${HOME}/opendevstack/packer_build_result" && \ + export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ cd ${BUILD_FOLDER} && pwd && ls -lart && date && \ log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x index 9178525d4..512a7e5dd 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x @@ -6,6 +6,7 @@ pipeline { ODS_BRANCH = "4.x" JOB_NAME = "ods-build-4_x-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + instance_type=m5ad.4xlarge } agent { @@ -55,8 +56,6 @@ pipeline { sh 'cp ${ssh_public_key} ${BUILD_FOLDER}/jenkins.pub' sh 'cp ${ssh_private_key} ${BUILD_FOLDER}/jenkins.priv' } - sh 'cd ${BUILD_FOLDER} && cp /home/centos/.buildbotrc . && chmod u+w .buildbotrc && pwd && ls -lart' - sh "cd ${BUILD_FOLDER} && sed -i 's|pub-key=.*\$|pub_key=${BUILD_FOLDER}/jenkins.pub|' .buildbotrc && cat .buildbotrc" withCredentials([usernamePassword(credentialsId: 'registry_credentials', usernameVariable: 'registry_user', passwordVariable: 'registry_token')]) { withCredentials([[ $class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'awsID', accessKeyVariable: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { @@ -67,9 +66,12 @@ pipeline { // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' sh ''' set -x - export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + export LOG_PATH=. && export log_path=. && export build_path="${HOME}/opendevstack/builds" && \ + export build_result_path="${HOME}/opendevstack/packer_build_result" && \ + export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ cd ${BUILD_FOLDER} && pwd && ls -lart && date && \ log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ + cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" \ --instance-type "${instance_type}" --build-folder "${BUILD_FOLDER}" \ diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental index 66ff0870a..a77a31af5 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental @@ -6,6 +6,7 @@ pipeline { ODS_BRANCH = "experimental" JOB_NAME = "ods-build-experimental-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + instance_type=m5ad.4xlarge } agent { @@ -65,7 +66,9 @@ pipeline { // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' sh ''' set -x - export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + export LOG_PATH=. && export log_path=. && export build_path="${HOME}/opendevstack/builds" && \ + export build_result_path="${HOME}/opendevstack/packer_build_result" && \ + export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ cd ${BUILD_FOLDER} && pwd && ls -lart && date && \ log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master index 829d8ece6..45212bf43 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master @@ -6,6 +6,7 @@ pipeline { ODS_BRANCH = "master" JOB_NAME = "ods-build-master-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + instance_type=m5ad.4xlarge } agent { @@ -65,7 +66,9 @@ pipeline { // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' sh ''' set -x - export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + export LOG_PATH=. && export log_path=. && export build_path="${HOME}/opendevstack/builds" && \ + export build_result_path="${HOME}/opendevstack/packer_build_result" && \ + export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ cd ${BUILD_FOLDER} && pwd && ls -lart && date && \ log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv index 080d52bdb..5be1a4e0c 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv @@ -6,6 +6,7 @@ pipeline { ODS_BRANCH = "ods-devenv" JOB_NAME = "ods-build-ods-devenv-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" + instance_type=m5ad.4xlarge } agent { @@ -65,7 +66,9 @@ pipeline { // sh 'export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=400 && export AWS_POLL_DELAY_SECONDS=15 && cd ${BUILD_FOLDER} && pwd && ls -lart && date && log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami --aws-access-key "$AWS_ACCESS_KEY_ID" --aws-secret-key "$AWS_SECRET_ACCESS_KEY" --ods-branch "${ODS_BRANCH}" --instance-type ${instance_type}' sh ''' set -x - export LOG_PATH=. && export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ + export LOG_PATH=. && export log_path=. && export build_path="${HOME}/opendevstack/builds" && \ + export build_result_path="${HOME}/opendevstack/packer_build_result" && \ + export PACKER_LOG=1 && export AWS_MAX_ATTEMPTS=180 && export AWS_POLL_DELAY_SECONDS=60 && \ cd ${BUILD_FOLDER} && pwd && ls -lart && date && \ log_file="${LOG_PATH}/build_$(echo "${ODS_BRANCH}" | tr "/" "_")_$(date +%Y%m%dT%H%M%S).log" && \ cd ods-core && time bash 2>&1 ods-devenv/packer/create_ods_box_image.sh --target create_ods_box_ami \ From 1ec5391accda578029ff2252f4ec87792e482993 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 14:05:18 +0200 Subject: [PATCH 137/217] typo --- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox | 2 +- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x | 2 +- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental | 2 +- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master | 2 +- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox index 05c90dda2..f33eaed53 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox @@ -6,7 +6,7 @@ pipeline { ODS_BRANCH = "experimental" JOB_NAME = "ods-build-4_x-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" - instance_type=m5ad.4xlarge + instance_type="m5ad.4xlarge" } agent { diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x index 512a7e5dd..1d86254cf 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_4_x @@ -6,7 +6,7 @@ pipeline { ODS_BRANCH = "4.x" JOB_NAME = "ods-build-4_x-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" - instance_type=m5ad.4xlarge + instance_type="m5ad.4xlarge" } agent { diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental index a77a31af5..a9e285afd 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_experimental @@ -6,7 +6,7 @@ pipeline { ODS_BRANCH = "experimental" JOB_NAME = "ods-build-experimental-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" - instance_type=m5ad.4xlarge + instance_type="m5ad.4xlarge" } agent { diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master index 45212bf43..9d826e50c 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_master @@ -6,7 +6,7 @@ pipeline { ODS_BRANCH = "master" JOB_NAME = "ods-build-master-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" - instance_type=m5ad.4xlarge + instance_type="m5ad.4xlarge" } agent { diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv index 5be1a4e0c..1fdf163a6 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv @@ -6,7 +6,7 @@ pipeline { ODS_BRANCH = "ods-devenv" JOB_NAME = "ods-build-ods-devenv-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" - instance_type=m5ad.4xlarge + instance_type="m5ad.4xlarge" } agent { From 695a016bcdb2b86cf697b8de1dff275bf20d794b Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 14:12:25 +0200 Subject: [PATCH 138/217] Configure PACKER_CONFIG if not set. --- ods-devenv/packer/create_ods_box_image.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index 3e7db10b0..f0ffc265f 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -205,6 +205,7 @@ function create_ods_box_ami() { echo "AWS_POLL_DELAY_SECONDS=${AWS_POLL_DELAY_SECONDS}" echo "ods_branch=${ods_branch}" echo "build_folder=${build_folder}" + echo " " if [[ "${dryrun}" == "true" ]] then @@ -217,6 +218,7 @@ function create_ods_box_ami() { echo -n '.' done echo "done." + echo " " exit 0 fi @@ -231,13 +233,14 @@ function create_ods_box_ami() { sleep 2 fi - if [ ! -z "${PACKER_CONFIG}" ] && [ "" != "${PACKER_CONFIG}" ]; then + if [ -z "${PACKER_CONFIG}" ] || [ "" != "${PACKER_CONFIG}" ] || [ ! -f "${PACKER_CONFIG}" ]; then export PACKER_CONFIG="ods-devenv/packer/CentOS2ODSBox.json" echo " " - echo "PACKER_CONFIG=${PACKER_CONFIG}" - echo " " + echo "set PACKER_CONFIG=${PACKER_CONFIG}" + fi + echo " " set -x time packer build -on-error=ask \ -var "aws_access_key=${aws_access_key}" \ From 2413e107d503488fe8c3ebc9665e6bfd2592b960 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 14:23:55 +0200 Subject: [PATCH 139/217] PACKER_CONFIG_FILE --- ods-devenv/packer/create_ods_box_image.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ods-devenv/packer/create_ods_box_image.sh b/ods-devenv/packer/create_ods_box_image.sh index f0ffc265f..39212bcc0 100755 --- a/ods-devenv/packer/create_ods_box_image.sh +++ b/ods-devenv/packer/create_ods_box_image.sh @@ -17,7 +17,7 @@ output_directory=output-vmware-iso instance_type=m5ad.4xlarge build_folder= dryrun=false -PACKER_CONFIG=${PACKER_CONFIG-""} +PACKER_CONFIG_FILE=${PACKER_CONFIG_FILE-""} while [[ "$#" -gt 0 ]]; do case $1 in @@ -233,10 +233,10 @@ function create_ods_box_ami() { sleep 2 fi - if [ -z "${PACKER_CONFIG}" ] || [ "" != "${PACKER_CONFIG}" ] || [ ! -f "${PACKER_CONFIG}" ]; then - export PACKER_CONFIG="ods-devenv/packer/CentOS2ODSBox.json" + if [ -z "${PACKER_CONFIG_FILE}" ] || [ "" != "${PACKER_CONFIG_FILE}" ] || [ ! -f "${PACKER_CONFIG_FILE}" ]; then + PACKER_CONFIG_FILE="ods-devenv/packer/CentOS2ODSBox.json" echo " " - echo "set PACKER_CONFIG=${PACKER_CONFIG}" + echo "set PACKER_CONFIG_FILE=${PACKER_CONFIG_FILE}" fi @@ -252,7 +252,8 @@ function create_ods_box_ami() { -var "ods_branch=${ods_branch}" \ -var "instance_type=${instance_type}" \ -var "pub_key=${pub_key}" \ - -var "ssh_private_key_file_path=${ssh_private_key_file_path}" + -var "ssh_private_key_file_path=${ssh_private_key_file_path}" \ + ${PACKER_CONFIG_FILE} if [ 0 -ne $? ]; then set +x echo "Error in packer build !!" From 8bc7e8abd8fcfc72e0d8dbd1171d64b73a77e59d Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 15:42:52 +0200 Subject: [PATCH 140/217] git diff makes it fail. Fixed. --- ods-devenv/scripts/deploy.sh | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index d1795c524..5cb3326f8 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -209,17 +209,10 @@ function check_system_setup() { # None ####################################### function setup_dnsmasq() { - echo "Setting up dnsmasq DNS service" + echo "setup_dnsmasq: Setting up dnsmasq DNS service" local dnsmasq_conf_path dnsmasq_conf_path="/etc/dnsmasq.conf" - # tear down old running dnsmasq instances - local job_id - for job_id in $(ps -ef | grep dnsmasq | grep -v grep | grep -v setup_dnsmasq | awk -v col=2 '{print $2}') - do - sudo kill -9 "${job_id}" || true - done - if ! >/dev/null command -v dnsmasq then local already_installed="y" @@ -231,6 +224,16 @@ function setup_dnsmasq() { fi fi + sudo systemctl stop dnsmasq || echo "WARNING: Could not stop service dnsmasq !!!" + sleep 10 + + # tear down old running dnsmasq instances + local job_id + for job_id in $(ps -ef | grep dnsmasq | grep -v grep | grep -v setup_dnsmasq | awk -v col=2 '{print $2}') + do + sudo kill -9 "${job_id}" || true + done + sudo systemctl start dnsmasq sleep 10 if ! sudo systemctl status dnsmasq | grep -q active @@ -271,18 +274,26 @@ function setup_dnsmasq() { echo " " echo "dnsmasq configuration failed. Please check ${dnsmasq_conf_path} and compare with ${dnsmasq_conf_path}.orig" echo " " + sleep 2 echo "File ${dnsmasq_conf_path}: " + echo " " cat ${dnsmasq_conf_path} echo " " echo "File ${dnsmasq_conf_path}.orig: " + echo " " cat ${dnsmasq_conf_path}.orig echo " " - diff ${dnsmasq_conf_path} ${dnsmasq_conf_path}.orig echo " " + sleep 2 + diff ${dnsmasq_conf_path} ${dnsmasq_conf_path}.orig || true + echo " " + echo " " + sleep 10 # return 1 else echo "dnsmasq is ok with configuration changes." fi + echo " " sudo chattr -i /etc/resolv.conf From f3a19f7ff06805d79e811c47915e2cf077fd96cf Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 17:42:05 +0200 Subject: [PATCH 141/217] startup_openshift_cluster cannot run check_pods_and_restart_if_necessary --- ods-devenv/scripts/deploy.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 5cb3326f8..1bd803679 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -614,8 +614,6 @@ function startup_openshift_cluster() { fi wait_until_ocp_is_up || exit 1 - check_pods_and_restart_if_necessary - } ####################################### From e13899ce65cb94b31d547c9715f835531b1c0f0e Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 25 Aug 2022 17:58:12 +0200 Subject: [PATCH 142/217] Improves print-jenkins-log.sh logs readability --- tests/scripts/print-jenkins-log.sh | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index e4a7fd52d..04111cfbb 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -2,12 +2,23 @@ set -eu set -o pipefail +ME="$(basename $0)" + +echo " " +echo " " +echo " " PROJECT=$1 BUILD_NAME=$2 LOG_URL=$(oc -n ${PROJECT} get build ${BUILD_NAME} -o jsonpath='{.metadata.annotations.openshift\.io/jenkins-log-url}') echo " " -echo "Jenkins log url: ${LOG_URL}" +echo "${ME}: Jenkins log url: ${LOG_URL}" echo " " TOKEN=$(oc -n ${PROJECT} get sa/jenkins --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc -n ${PROJECT} get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -d -) -curl --insecure -sS --header "Authorization: Bearer ${TOKEN}" ${LOG_URL} +echo "${ME}: Retrieving logs from url: ${LOG_URL}" +curl --insecure -sS --header "Authorization: Bearer ${TOKEN}" ${LOG_URL} | xargs -n 1 echo "${BUILD_NAME}: " || \ + echo "Error retrieving jenkins logs of job run in ${BUILD_NAME} with curl." +echo " " +echo " " +echo " " +sleep 5 From 5609cb74f8ec5d91a7c786830bd1ead50f722f21 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 26 Aug 2022 09:30:06 +0200 Subject: [PATCH 143/217] File not needed because proposed solution does not work --- ods-devenv/packer/CentOS2_buildBot.json | 71 ------------------------- 1 file changed, 71 deletions(-) delete mode 100644 ods-devenv/packer/CentOS2_buildBot.json diff --git a/ods-devenv/packer/CentOS2_buildBot.json b/ods-devenv/packer/CentOS2_buildBot.json deleted file mode 100644 index 86e2dac17..000000000 --- a/ods-devenv/packer/CentOS2_buildBot.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "variables": { - "aws_access_key": "", - "aws_secret_key": "", - "pub_key": "" - }, - "builders": [ - { - "type": "amazon-ebs", - "access_key": "{{user `aws_access_key`}}", - "secret_key": "{{user `aws_secret_key`}}", - "region": "eu-west-1", - "source_ami_filter": { - "filters": { - "image-id": "{{user `ami_id`}}" - }, - "owners": "275438041116" - }, - "instance_type": "{{user `instance_type`}}", - "ssh_username": "{{user `username`}}", - "ssh_password": "{{user `password`}}", - "ssh_private_key_file": "{{user `ssh_private_key_file_path`}}", - "ami_name": "ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", - "run_tags": { - "Name": "ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" - }, - "tags": { - "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" - } - } - ], - "provisioners": [ - { - "type": "shell", - "inline": [ - "echo 'Create folders structure needed ( ~/tmp, ~/bin, ... )... '", - "mkdir -pv ~/tmp ~/bin" - ] - }, - { - "type": "file", - "source": "{{user `pub_key`}}", - "destination": "~/tmp/odsbox.pub" - }, - { - "type": "file", - "source": "{{user `ssh_private_key_file_path`}}", - "destination": "~/tmp/odsbox" - }, - { - "type": "shell", - "inline": [ - "echo 'Adding odsbox.pub to authorized keys'", - "mkdir -p ~/.ssh", - "chmod go-xrw ~/.ssh", - "mv -vf ~/tmp/odsbox.pub ~/.ssh/odsbox.pub", - "mv -vf ~/tmp/odsbox ~/.ssh/odsbox", - "touch ~/.ssh/authorized_keys", - "cat ~/.ssh/odsbox.pub >> ~/.ssh/authorized_keys", - "chmod go-xrw ~/.ssh/*", - "ls -lart ~/.ssh", - "echo '...done!'" - ] - }, - { - "type": "shell", - "script": "ods-devenv/packer/configure_buildBot.sh", - "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" - } - ] -} From e7ae6888871cdd829b43c2fd70dfebbe727b363f Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 26 Aug 2022 10:17:35 +0200 Subject: [PATCH 144/217] Script to check how many time atlassian has been up. --- ...n-suite-if-license-expires-in-less-than.sh | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100755 tests/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh diff --git a/tests/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh b/tests/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh new file mode 100755 index 000000000..83f507670 --- /dev/null +++ b/tests/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash + +set -euo pipefail + +ME="$(basename ${0})" +echo " " + +# Initialize variables +HOURS_LEFT=0 +HOURS_ATLASSIAN_CAN_BE_UP=3 +FORCE_RESTART="false"; +ASSUME_JUST_RESTARTED="false"; +LAST_RESTART_FILE_REGISTRY="/tmp/atlassian-suite-restarts-registry.log" +DEPLOY_SCRIPT="/home/openshift/opendevstack/ods-core/ods-devenv/scripts/deploy.sh" + +function usage() { + echo " " + echo "${ME}: usage: ${ME} [--hours X] " + echo "${ME}: example: ${ME} --hours-left 1 " + echo " " +} + +function initializeLastRestartFileRegistry() { + if [ ! -f ${LAST_RESTART_FILE_REGISTRY} ]; then + touch ${LAST_RESTART_FILE_REGISTRY} + chmod 777 ${LAST_RESTART_FILE_REGISTRY} + fi +} + +function setCurrenTimeIfAssumeJustRestarted() { + local just_restarted=${0-"false"} + local date_string="$(date +'%Y%m%d_%H%M%S')" + local reason="none" + + if [ "true" == "${ASSUME_JUST_RESTARTED}" ] || [ "true" == "${just_restarted}" ]; then + if [ "true" == "${ASSUME_JUST_RESTARTED}" ]; then + echo "${ME}: Setting current time to registry because assuming we just restarted the atlassian stack... " + reason="assuming just restarted" + else + echo "${ME}: Setting current time to registry because we just restarted the atlassian stack... " + reason="just restarted" + fi + echo "${date_string} ${reason}" >> ${LAST_RESTART_FILE_REGISTRY} + fi +} + +function checkIfWeStillHaveTime() { + local FOUND="" + local MAX_HOURS_SINCE_LAST_UPDATE=$((HOURS_ATLASSIAN_CAN_BE_UP - HOURS_LEFT)) + echo "MAX_HOURS_SINCE_LAST_UPDATE=${MAX_HOURS_SINCE_LAST_UPDATE} (${HOURS_ATLASSIAN_CAN_BE_UP} - ${HOURS_LEFT})" + + if [ "false" == ${FORCE_RESTART} ]; then + FOUND=find ${LAST_RESTART_FILE_REGISTRY} -mtime ${MAX_HOURS_SINCE_LAST_UPDATE} + echo "${ME}: FOUND: ${FOUND}" + fi + + if [ -z "${FOUND}" ] || [ "" == "${FOUND}" ]; then + echo "Restarting because file was not modified in last ${MAX_HOURS_SINCE_LAST_UPDATE}h." + ${DEPLOY_SCRIPT} --target restart_atlassian_suite + else + echo "Not restarting because the atlassian stack was up less than ${HOURS_LEFT}h." + fi + +} + +while [[ "$#" -gt 0 ]]; do + case $1 in + + -v|--verbose) set -x;; + + -h|--help) usage; exit 0;; + + --hours-left) HOURS_LEFT="$2"; echo "Hours until license expires: $HOURS_LEFT"; shift;; + + --assume-just-restarted) ASSUME_JUST_RESTARTED="true";; + + --force-restart) FORCE_RESTART="true";; + + *) echo_error "Unknown parameter passed: $1"; exit 1;; +esac; shift; done + +if [ 0 -eq ]; then + usage + echo " " + echo "${ME}: Please provide the amount of hours you can wait for the stack to restart." + echo " " + exit 1 +fi + +initializeLastRestartFileRegistry +setCurrenTimeIfAssumeJustRestarted +checkIfWeStillHaveTime + +echo " " +exit 0 From cb2311eb0200c241ee9e1295474bcdc344356696 Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Fri, 26 Aug 2022 08:53:52 +0000 Subject: [PATCH 145/217] Script that restarts atlassian stack if we need to. --- ...n-suite-if-license-expires-in-less-than.sh | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) rename {tests => ods-devenv}/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh (63%) diff --git a/tests/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh b/ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh similarity index 63% rename from tests/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh rename to ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh index 83f507670..3bd2a2e87 100755 --- a/tests/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh +++ b/ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh @@ -8,6 +8,7 @@ echo " " # Initialize variables HOURS_LEFT=0 HOURS_ATLASSIAN_CAN_BE_UP=3 +ALLOW_ZERO_HOURS="false" FORCE_RESTART="false"; ASSUME_JUST_RESTARTED="false"; LAST_RESTART_FILE_REGISTRY="/tmp/atlassian-suite-restarts-registry.log" @@ -15,7 +16,7 @@ DEPLOY_SCRIPT="/home/openshift/opendevstack/ods-core/ods-devenv/scripts/deploy.s function usage() { echo " " - echo "${ME}: usage: ${ME} [--hours X] " + echo "${ME}: usage: ${ME} [--hours-left X] [--assume-just-restarted] [--force-restart] [--allow-zero-hours] " echo "${ME}: example: ${ME} --hours-left 1 " echo " " } @@ -49,16 +50,34 @@ function checkIfWeStillHaveTime() { local MAX_HOURS_SINCE_LAST_UPDATE=$((HOURS_ATLASSIAN_CAN_BE_UP - HOURS_LEFT)) echo "MAX_HOURS_SINCE_LAST_UPDATE=${MAX_HOURS_SINCE_LAST_UPDATE} (${HOURS_ATLASSIAN_CAN_BE_UP} - ${HOURS_LEFT})" + echo "Current date: $(date)" if [ "false" == ${FORCE_RESTART} ]; then - FOUND=find ${LAST_RESTART_FILE_REGISTRY} -mtime ${MAX_HOURS_SINCE_LAST_UPDATE} - echo "${ME}: FOUND: ${FOUND}" + FOUND=$(find ${LAST_RESTART_FILE_REGISTRY} -mtime -${MAX_HOURS_SINCE_LAST_UPDATE}) + echo "Found tha file was modified in last ${MAX_HOURS_SINCE_LAST_UPDATE}h ?? (empty next line if no): " + echo "${FOUND}" + ls -lah ${LAST_RESTART_FILE_REGISTRY} fi if [ -z "${FOUND}" ] || [ "" == "${FOUND}" ]; then - echo "Restarting because file was not modified in last ${MAX_HOURS_SINCE_LAST_UPDATE}h." + if [ "true" == ${FORCE_RESTART} ]; then + echo " " + echo "Restart atlassian stack is forced !! " + echo " " + else + echo " " + echo "Since the registry file was *NOT* modified in the last ${MAX_HOURS_SINCE_LAST_UPDATE}h, " + echo "we restart the atlassian stack to have at least ${HOURS_LEFT} until next license issue." + echo " " + fi + ${DEPLOY_SCRIPT} --target restart_atlassian_suite + setCurrenTimeIfAssumeJustRestarted "true" + echo " " else - echo "Not restarting because the atlassian stack was up less than ${HOURS_LEFT}h." + echo " " + echo "Since the registry file was modified in the last ${MAX_HOURS_SINCE_LAST_UPDATE}h, " + echo "we do *NOT* need to restart the stack." + echo " " fi } @@ -70,16 +89,18 @@ while [[ "$#" -gt 0 ]]; do -h|--help) usage; exit 0;; - --hours-left) HOURS_LEFT="$2"; echo "Hours until license expires: $HOURS_LEFT"; shift;; + --hours-left) HOURS_LEFT="$2"; echo "Hours we need the stack to not complaint about license issues: $HOURS_LEFT"; shift;; --assume-just-restarted) ASSUME_JUST_RESTARTED="true";; --force-restart) FORCE_RESTART="true";; + --allow-zero-hours) ALLOW_ZERO_HOURS="true";; + *) echo_error "Unknown parameter passed: $1"; exit 1;; esac; shift; done -if [ 0 -eq ]; then +if [ 0 -eq ${HOURS_LEFT} ] && [ "false" == "${ALLOW_ZERO_HOURS}" ] && [ "false" == "${ASSUME_JUST_RESTARTED}" ] && [ "false" == "${FORCE_RESTART}" ]; then usage echo " " echo "${ME}: Please provide the amount of hours you can wait for the stack to restart." From b313c0d9c2f31fcb1901fa36b5684a1a3a6b3d03 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 26 Aug 2022 11:10:50 +0200 Subject: [PATCH 146/217] Restarts atlassian suite during installation, but only if need to. --- ods-devenv/scripts/deploy.sh | 9 +++++- tests/quickstarter/quickstarter_test.go | 43 ++++++++++++++++++------- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 1bd803679..4c7c5b13b 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2503,9 +2503,16 @@ function run_smoke_tests() { ./tests/scripts/free-unused-resources.sh fi - # buying extra time for the quickstarter tests + # The license for the atlassian suite expires in 3h. + # The following lines (2) buys extra time for the quickstarter tests. # restart_atlassian_suite # follow_bitbucket + + # This is a better solution to the atlassian suite license expires problem: + if [ -x ./ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh ]; then + ./ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh --hours-left 2 + fi + # Do not understand why this was here. Prefer to check instead: check_ods_status diff --git a/tests/quickstarter/quickstarter_test.go b/tests/quickstarter/quickstarter_test.go index 3526675a6..4e0a3784b 100644 --- a/tests/quickstarter/quickstarter_test.go +++ b/tests/quickstarter/quickstarter_test.go @@ -76,17 +76,8 @@ func TestQuickstarter(t *testing.T) { fmt.Printf("Running tests for quickstarter %s\n", quickstarterName) fmt.Printf("\n\n") - // Run cleanup operations to ensure we always have enough resources. - stdout, stderr, err := utils.RunScriptFromBaseDir( - "tests/scripts/free-unused-resources.sh", - []string{}, []string{}, - ) - - if err != nil { - t.Fatalf("Error cleaning up : \nStdOut: %s\nStdErr: %s\nErr: %s\n", stdout, stderr, err) - } else { - fmt.Printf("Cleaned cluster state.\n") - } + freeUnusedResources(t) + restartAtlassianSuiteIfLicenseExpiresInLessThan(t) // Run each quickstarter test in a subtest to avoid exiting early // when t.Fatal is used. @@ -245,6 +236,36 @@ func TestQuickstarter(t *testing.T) { } } +func freeUnusedResources(t *testing.T) { + + // Run cleanup operations to ensure we always have enough resources. + stdout, stderr, err := utils.RunScriptFromBaseDir( + "tests/scripts/free-unused-resources.sh", + []string{}, []string{}, + ) + + if err != nil { + t.Fatalf("Error cleaning up : \nStdOut: %s\nStdErr: %s\nErr: %s\n", stdout, stderr, err) + } else { + fmt.Printf("Cleaned cluster state.\n") + } +} + +func restartAtlassianSuiteIfLicenseExpiresInLessThan(t *testing.T) { + + // Run cleanup operations to ensure we always have enough resources. + stdout, stderr, err := utils.RunScriptFromBaseDir( + "ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh", + []string{"--hours-left 2"}, []string{}, + ) + + if err != nil { + t.Fatalf("Error cleaning up : \nStdOut: %s\nStdErr: %s\nErr: %s\n", stdout, stderr, err) + } else { + fmt.Printf("Checked if needed to restart atlassian suite.\n") + } +} + // collectTestableQuickstarters collects all subdirs of "dir" that contain // a "testdata" directory. func collectTestableQuickstarters(t *testing.T, dir string) []string { From d517d9322f16d584ce2e1cd55f2fe4c9dd325883 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 26 Aug 2022 11:26:47 +0200 Subject: [PATCH 147/217] gofmt --- tests/quickstarter/quickstarter_test.go | 48 ++++++++++++------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/tests/quickstarter/quickstarter_test.go b/tests/quickstarter/quickstarter_test.go index 4e0a3784b..cb07f57fb 100644 --- a/tests/quickstarter/quickstarter_test.go +++ b/tests/quickstarter/quickstarter_test.go @@ -76,8 +76,8 @@ func TestQuickstarter(t *testing.T) { fmt.Printf("Running tests for quickstarter %s\n", quickstarterName) fmt.Printf("\n\n") - freeUnusedResources(t) - restartAtlassianSuiteIfLicenseExpiresInLessThan(t) + freeUnusedResources(t) + restartAtlassianSuiteIfLicenseExpiresInLessThan(t) // Run each quickstarter test in a subtest to avoid exiting early // when t.Fatal is used. @@ -238,32 +238,32 @@ func TestQuickstarter(t *testing.T) { func freeUnusedResources(t *testing.T) { - // Run cleanup operations to ensure we always have enough resources. - stdout, stderr, err := utils.RunScriptFromBaseDir( - "tests/scripts/free-unused-resources.sh", - []string{}, []string{}, - ) - - if err != nil { - t.Fatalf("Error cleaning up : \nStdOut: %s\nStdErr: %s\nErr: %s\n", stdout, stderr, err) - } else { - fmt.Printf("Cleaned cluster state.\n") - } + // Run cleanup operations to ensure we always have enough resources. + stdout, stderr, err := utils.RunScriptFromBaseDir( + "tests/scripts/free-unused-resources.sh", + []string{}, []string{}, + ) + + if err != nil { + t.Fatalf("Error cleaning up : \nStdOut: %s\nStdErr: %s\nErr: %s\n", stdout, stderr, err) + } else { + fmt.Printf("Cleaned cluster state.\n") + } } func restartAtlassianSuiteIfLicenseExpiresInLessThan(t *testing.T) { - // Run cleanup operations to ensure we always have enough resources. - stdout, stderr, err := utils.RunScriptFromBaseDir( - "ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh", - []string{"--hours-left 2"}, []string{}, - ) - - if err != nil { - t.Fatalf("Error cleaning up : \nStdOut: %s\nStdErr: %s\nErr: %s\n", stdout, stderr, err) - } else { - fmt.Printf("Checked if needed to restart atlassian suite.\n") - } + // Run cleanup operations to ensure we always have enough resources. + stdout, stderr, err := utils.RunScriptFromBaseDir( + "ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh", + []string{"--hours-left 2"}, []string{}, + ) + + if err != nil { + t.Fatalf("Error cleaning up : \nStdOut: %s\nStdErr: %s\nErr: %s\n", stdout, stderr, err) + } else { + fmt.Printf("Checked if needed to restart atlassian suite.\n") + } } // collectTestableQuickstarters collects all subdirs of "dir" that contain From 441173d585c5c8d2f45f43742c93a40fcd870798 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 26 Aug 2022 11:27:51 +0200 Subject: [PATCH 148/217] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3ba1a5d5..fe3f5e75f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ - Allow to choose the order in which quickstaters are build ([#1158](https://github.com/opendevstack/ods-core/pull/1158)) - Fix and prevent permission issues ([#1162](https://github.com/opendevstack/ods-core/issues/1162)) - Fixes Jenkins Memory problems reported ([#1161](https://github.com/opendevstack/ods-core/pull/1161)) +- Fix CI/CD problems in Jenkins pipelines ([#1177](https://github.com/opendevstack/ods-core/pull/1177)) ### Added From 6d14eabf0ce393a18faadb349b88aed51f3af5c2 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 26 Aug 2022 14:09:46 +0200 Subject: [PATCH 149/217] typos --- ods-devenv/scripts/deploy.sh | 6 +++++- ...start-atlassian-suite-if-license-expires-in-less-than.sh | 4 ++-- tests/quickstarter/quickstarter_test.go | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 4c7c5b13b..98193d04f 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2510,7 +2510,11 @@ function run_smoke_tests() { # This is a better solution to the atlassian suite license expires problem: if [ -x ./ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh ]; then - ./ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh --hours-left 2 + ./ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh --force-restart + else + echo " " + echo "ERROR: Could not find script ./ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh " + echo " " fi # Do not understand why this was here. Prefer to check instead: diff --git a/ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh b/ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh index 3bd2a2e87..2dd441852 100755 --- a/ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh +++ b/ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh @@ -49,7 +49,7 @@ function checkIfWeStillHaveTime() { local FOUND="" local MAX_HOURS_SINCE_LAST_UPDATE=$((HOURS_ATLASSIAN_CAN_BE_UP - HOURS_LEFT)) echo "MAX_HOURS_SINCE_LAST_UPDATE=${MAX_HOURS_SINCE_LAST_UPDATE} (${HOURS_ATLASSIAN_CAN_BE_UP} - ${HOURS_LEFT})" - + echo "Current date: $(date)" if [ "false" == ${FORCE_RESTART} ]; then FOUND=$(find ${LAST_RESTART_FILE_REGISTRY} -mtime -${MAX_HOURS_SINCE_LAST_UPDATE}) @@ -97,7 +97,7 @@ while [[ "$#" -gt 0 ]]; do --allow-zero-hours) ALLOW_ZERO_HOURS="true";; - *) echo_error "Unknown parameter passed: $1"; exit 1;; + *) echo " "; echo "${ME}: ERROR: Unknown parameter passed: ${1}"; echo " "; exit 1;; esac; shift; done if [ 0 -eq ${HOURS_LEFT} ] && [ "false" == "${ALLOW_ZERO_HOURS}" ] && [ "false" == "${ASSUME_JUST_RESTARTED}" ] && [ "false" == "${FORCE_RESTART}" ]; then diff --git a/tests/quickstarter/quickstarter_test.go b/tests/quickstarter/quickstarter_test.go index cb07f57fb..2e7e72872 100644 --- a/tests/quickstarter/quickstarter_test.go +++ b/tests/quickstarter/quickstarter_test.go @@ -256,7 +256,7 @@ func restartAtlassianSuiteIfLicenseExpiresInLessThan(t *testing.T) { // Run cleanup operations to ensure we always have enough resources. stdout, stderr, err := utils.RunScriptFromBaseDir( "ods-devenv/scripts/restart-atlassian-suite-if-license-expires-in-less-than.sh", - []string{"--hours-left 2"}, []string{}, + []string{"--hours-left", "2"}, []string{}, ) if err != nil { From 93d4bd221bcb95b648b2d63ad67b1f2aacff9ad8 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 29 Aug 2022 08:51:10 +0200 Subject: [PATCH 150/217] Improves logs readability. --- tests/scripts/print-jenkins-log.sh | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index 04111cfbb..47b6e1a9a 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -3,6 +3,7 @@ set -eu set -o pipefail ME="$(basename $0)" +JENKINS_LOG_FILE="jenkins-downloaded-log.txt" echo " " echo " " @@ -15,9 +16,24 @@ echo "${ME}: Jenkins log url: ${LOG_URL}" echo " " TOKEN=$(oc -n ${PROJECT} get sa/jenkins --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc -n ${PROJECT} get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -d -) +if [ -f ${JENKINS_LOG_FILE} ]; then + rm -fv ${JENKINS_LOG_FILE} || echo "Problem removing existing log file." +fi + echo "${ME}: Retrieving logs from url: ${LOG_URL}" -curl --insecure -sS --header "Authorization: Bearer ${TOKEN}" ${LOG_URL} | xargs -n 1 echo "${BUILD_NAME}: " || \ - echo "Error retrieving jenkins logs of job run in ${BUILD_NAME} with curl." +curl --insecure -sSL --header "Authorization: Bearer ${TOKEN}" ${LOG_URL} > ${JENKINS_LOG_FILE} || \ + echo "${ME}: Error retrieving jenkins logs of job run in ${BUILD_NAME} with curl." + +# | xargs -n 1 echo "${BUILD_NAME}: " || \ +# echo "Error retrieving jenkins logs of job run in ${BUILD_NAME} with curl." + +echo " " +echo " " +# Appends current ${BUILD_NAME} to each log line. Improves readability. +while read -r line; do + echo -e "${BUILD_NAME}: $line "; +done < ${JENKINS_LOG_FILE} + echo " " echo " " echo " " From 6014ca6871dd3647105b01b8a082fb43970f2bfe Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Tue, 30 Aug 2022 15:53:26 +0000 Subject: [PATCH 151/217] Script that imports a host certifacte into the os trust store. --- ods-devenv/scripts/import-certificate.sh | 54 ++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 ods-devenv/scripts/import-certificate.sh diff --git a/ods-devenv/scripts/import-certificate.sh b/ods-devenv/scripts/import-certificate.sh new file mode 100755 index 000000000..1b406f844 --- /dev/null +++ b/ods-devenv/scripts/import-certificate.sh @@ -0,0 +1,54 @@ +#!/bin/bash +set -eu +set -o pipefail + +ME="$(basename ${0})" + +function usage { + echo " " + echo "This script installs the certificate of a host to the centos 7 os trust store." + echo "${ME}: usage: ${ME} [--url URL] [--port PORT]" + echo "${ME}: example: ${ME} --url ocp.odsbox.lan --port 8443" + echo " " +} + +target_url="ocp.odsbox.lan" +target_folder="/etc/pki/ca-trust/source/anchors/" +port="8443" + +while [[ "$#" -gt 0 ]]; do + case $1 in + + -v|--verbose) set -x;; + + -h|--help) usage; exit 0;; + + --url) target_url="$2"; shift;; + --url=*) target_url="${1#*=}";; + + --port) port="$2"; shift;; + --port=*) port="${1#*=}";; + + *) echo "Unknown parameter passed: $1"; exit 1;; +esac; shift; done + +echo " " + +hostname="$(echo "${target_url}" | sed 's|\.|_|g')" +target_file="/etc/pki/ca-trust/source/anchors/${hostname}.pem" +target_file_tmp="/tmp/${hostname}.pem" + +echo "openssl s_client -showcerts -host ${hostname} -port ${port}" +openssl s_client -showcerts -host ${target_url} -port ${port} "${target_file_tmp}" + +echo " " +cat ${target_file_tmp} +echo " " +echo "Moving certificate to target file ${target_file}: " +sudo mv -vf ${target_file_tmp} ${target_file} +echo "Updating ca-trust store... " +sudo update-ca-trust +echo " " +echo "DONE" +echo " " + From c2c75b44af340a82854a0c1016de3e9adaf15192 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 31 Aug 2022 09:27:38 +0200 Subject: [PATCH 152/217] Chnaged branch name. --- ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv index 1fdf163a6..37719e969 100644 --- a/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv +++ b/ods-devenv/packer/jenkins/JenkinsFile_createOdsBox_ods_devenv @@ -3,7 +3,7 @@ def buildBadge = addEmbeddableBadgeConfiguration(id: "odsbuild", status: "starte pipeline { environment { - ODS_BRANCH = "ods-devenv" + ODS_BRANCH = "feature/ods-devenv" JOB_NAME = "ods-build-ods-devenv-branch" BUILD_FOLDER = "${WORKSPACE_TMP}/${BUILD_NUMBER}" instance_type="m5ad.4xlarge" From 4d581ceee3ca76015dac24bc9c14e750d06f845a Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 1 Sep 2022 08:26:10 +0200 Subject: [PATCH 153/217] Removes stuff that should not go to master branch. --- ods-devenv/packer/BaseOCVM2ODSBox.json | 97 ------------------- ods-devenv/packer/CentOS2BaseOCVM.json | 67 ------------- ods-devenv/packer/ODSBox4QSTest.json | 51 ---------- .../scripts/bootstrap-base-oc-atlassian-vm.sh | 31 ------ .../scripts/bootstrap-ods-and-run-qs-test.sh | 31 ------ .../scripts/bootstrap-ods-on-base-oc.sh | 31 ------ ods-setup/setup-ods-project.sh | 4 - 7 files changed, 312 deletions(-) delete mode 100644 ods-devenv/packer/BaseOCVM2ODSBox.json delete mode 100644 ods-devenv/packer/CentOS2BaseOCVM.json delete mode 100644 ods-devenv/packer/ODSBox4QSTest.json delete mode 100755 ods-devenv/scripts/bootstrap-base-oc-atlassian-vm.sh delete mode 100755 ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh delete mode 100755 ods-devenv/scripts/bootstrap-ods-on-base-oc.sh diff --git a/ods-devenv/packer/BaseOCVM2ODSBox.json b/ods-devenv/packer/BaseOCVM2ODSBox.json deleted file mode 100644 index 1be704369..000000000 --- a/ods-devenv/packer/BaseOCVM2ODSBox.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "variables": { - "aws_access_key": "", - "aws_secret_key": "", - "pub_key": "" - }, - "builders": [ - { - "type": "amazon-ebs", - "access_key": "{{user `aws_access_key`}}", - "secret_key": "{{user `aws_secret_key`}}", - "region": "eu-west-1", - "source_ami_filter": { - "filters": { - "image-id": "{{user `ami_id`}}" - }, - "owners": "275438041116" - }, - "instance_type": "{{user `instance_type`}}", - "ssh_username": "{{user `username`}}", - "ssh_password": "{{user `password`}}", - "ami_name": "NG-CI ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", - "run_tags": { - "Name": "NG-CI ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" - }, - "tags": { - "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" - } - } - ], - "provisioners": [ - { - "type": "file", - "source": "{{user `pub_key`}}", - "destination": "~/tmp/odsbox.pub" - }, - { - "type": "shell", - "inline": [ - "echo 'Adding odsbox.pub to authorized keys'", - "mkdir -p ~/.ssh", - "chmod go-xrw ~/.ssh", - "mv ~/tmp/odsbox.pub ~/.ssh/odsbox.pub", - "touch ~/.ssh/authorized_keys", - "cat ~/.ssh/odsbox.pub >> ~/.ssh/authorized_keys", - "chmod go-xrw ~/.ssh/*", - "ls -lart ~/.ssh", - "echo '...done!'" - ] - }, - { - "type": "file", - "source": "ods-devenv/ods-service/startup_ods.sh", - "destination": "/home/openshift/tmp/" - }, - { - "type": "file", - "source": "ods-devenv/ods-service/stop_ods.sh", - "destination": "/home/openshift/tmp/" - }, - { - "type": "file", - "source": "ods-devenv/ods-service/ods.service", - "destination": "/home/openshift/tmp/" - }, - { - "type": "shell", - "script": "ods-devenv/packer/pwd_less_sudo.sh", - "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" - }, - { - "type": "shell", - "script": "ods-devenv/scripts/bootstrap-ods-on-base-oc.sh", - "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" - }, - { - "type": "shell", - "script": "ods-devenv/packer/stop_ods.sh" - }, - { - "type": "shell", - "script": "ods-devenv/packer/pwd_sudo.sh", - "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" - }, - { - "type": "shell", - "inline": [ - "echo Installing ODS service", - "echo openshift | sudo -S cp /home/openshift/tmp/ods.service /etc/systemd/system/ods.service", - "sudo cp /home/openshift/tmp/startup_ods.sh /usr/local/sbin/startup_ods.sh", - "sudo cp /home/openshift/tmp/stop_ods.sh /usr/local/sbin/stop_ods.sh", - "sudo systemctl daemon-reload", - "sudo systemctl enable --now ods.service" - ] - } - ] -} diff --git a/ods-devenv/packer/CentOS2BaseOCVM.json b/ods-devenv/packer/CentOS2BaseOCVM.json deleted file mode 100644 index d884d0a47..000000000 --- a/ods-devenv/packer/CentOS2BaseOCVM.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "variables": { - "aws_access_key": "", - "aws_secret_key": "", - "pub_key": "" - }, - "builders": [ - { - "type": "amazon-ebs", - "access_key": "{{user `aws_access_key`}}", - "secret_key": "{{user `aws_secret_key`}}", - "region": "eu-west-1", - "source_ami_filter": { - "filters": { - "image-id": "{{user `ami_id`}}" - }, - "owners": "275438041116" - }, - "instance_type": "{{user `instance_type`}}", - "ssh_username": "{{user `username`}}", - "ssh_password": "{{user `password`}}", - "ami_name": "Base VM Setup {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", - "run_tags": { - "Name": "Base VM Setup Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" - }, - "tags": { - "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" - } - } - ], - "provisioners": [ - { - "type": "file", - "source": "{{user `pub_key`}}", - "destination": "~/tmp/odsbox.pub" - }, - { - "type": "shell", - "inline": [ - "echo 'Adding odsbox.pub to authorized keys'", - "mkdir -p ~/.ssh", - "chmod go-xrw ~/.ssh", - "mv ~/tmp/odsbox.pub ~/.ssh/odsbox.pub", - "touch ~/.ssh/authorized_keys", - "cat ~/.ssh/odsbox.pub >> ~/.ssh/authorized_keys", - "chmod go-xrw ~/.ssh/*", - "ls -lart ~/.ssh", - "echo '...done!'" - ] - }, - { - "type": "shell", - "script": "ods-devenv/packer/pwd_less_sudo.sh", - "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" - }, - { - "type": "shell", - "script": "ods-devenv/scripts/bootstrap-base-oc-atlassian-vm.sh", - "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" - }, - { - "type": "shell", - "script": "ods-devenv/packer/pwd_sudo.sh", - "execute_command": "echo {{user `password`}} | sudo -S bash -c '{{ .Path }}'" - } - ] -} diff --git a/ods-devenv/packer/ODSBox4QSTest.json b/ods-devenv/packer/ODSBox4QSTest.json deleted file mode 100644 index 7d50e816c..000000000 --- a/ods-devenv/packer/ODSBox4QSTest.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "variables": { - "aws_access_key": "", - "aws_secret_key": "", - "pub_key": "" - }, - "builders": [ - { - "type": "amazon-ebs", - "access_key": "{{user `aws_access_key`}}", - "secret_key": "{{user `aws_secret_key`}}", - "region": "eu-west-1", - "source_ami_filter": { - "filters": { - "image-id": "{{user `ami_id`}}" - }, - "owners": "275438041116" - }, - "instance_type": "{{user `instance_type`}}", - "ssh_username": "{{user `username`}}", - "ssh_password": "{{user `password`}}", - "ami_name": "NG-CI ODS in a Box {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}", - "run_tags": { - "Name": "NG-CI ODS in a Box Packer Builder {{user `ods_branch` | clean_resource_name}} {{isotime | clean_resource_name}}" - }, - "tags": { - "Name": "{{user `instance_type` | clean_resource_name}} {{user `name_tag` | clean_resource_name}}" - } - } - ], - "provisioners": [ - { - "type": "shell", - "inline": [ - "echo 'Starting openshift'", - "ls -lart /home/openshift/tmp/*.*", - "ls -lart /usr/local/sbin/*.*", - "/usr/local/sbin/startup_ods.sh" - ] - }, - { - "type": "shell", - "script": "ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh", - "execute_command": "{{ .Path }} --branch {{user `ods_branch`}}" - }, - { - "type": "shell", - "script": "ods-devenv/packer/stop_ods.sh" - } - ] -} diff --git a/ods-devenv/scripts/bootstrap-base-oc-atlassian-vm.sh b/ods-devenv/scripts/bootstrap-base-oc-atlassian-vm.sh deleted file mode 100755 index 71f691bc2..000000000 --- a/ods-devenv/scripts/bootstrap-base-oc-atlassian-vm.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash -set -eux - -ods_git_ref= - -while [[ "$#" -gt 0 ]]; do - case $1 in - - --branch) ods_git_ref="$2"; shift;; - -esac; shift; done - -ods_git_ref="${ods_git_ref:-master}" -echo "bootstrap: Will build base vm box against git-ref ${ods_git_ref}" - -# install modern git version as required by repos.sh -if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi -sudo yum update -y -sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm -sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm -sudo yum -y install git - -opendevstack_dir="${HOME}/opendevstack" -mkdir -p "${opendevstack_dir}" -cd "${opendevstack_dir}" || return -curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/${ods_git_ref}/scripts/repos.sh -chmod u+x ./repos.sh -./repos.sh --git-ref "${ods_git_ref}" --verbose - -cd ods-core -time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target base_oc_atlasssian_vm_setup diff --git a/ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh b/ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh deleted file mode 100755 index 1a6017453..000000000 --- a/ods-devenv/scripts/bootstrap-ods-and-run-qs-test.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash -set -eux - -ods_git_ref= - -while [[ "$#" -gt 0 ]]; do - case $1 in - - --branch) ods_git_ref="$2"; shift;; - -esac; shift; done - -ods_git_ref="${ods_git_ref:-master}" -# echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" - -# install modern git version as required by repos.sh -# if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi -# sudo yum update -y -# sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm -# sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm -# sudo yum -y install git - -opendevstack_dir="${HOME}/opendevstack" -#mkdir -p "${opendevstack_dir}" -cd "${opendevstack_dir}" || return -# curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/${ods_git_ref}/scripts/repos.sh -# chmod u+x ./repos.sh -# ./repos.sh --git-ref "${ods_git_ref}" --verbose - -cd ods-core -time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target run_qs_smoke_tests diff --git a/ods-devenv/scripts/bootstrap-ods-on-base-oc.sh b/ods-devenv/scripts/bootstrap-ods-on-base-oc.sh deleted file mode 100755 index cd9eb994f..000000000 --- a/ods-devenv/scripts/bootstrap-ods-on-base-oc.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash -set -eux - -ods_git_ref= - -while [[ "$#" -gt 0 ]]; do - case $1 in - - --branch) ods_git_ref="$2"; shift;; - -esac; shift; done - -ods_git_ref="${ods_git_ref:-master}" -echo "bootstrap: Will build ods box against git-ref ${ods_git_ref}" - -# install modern git version as required by repos.sh -# if [[ -n $(command -v git) ]]; then sudo yum remove -y git*; fi -# sudo yum update -y -# sudo yum install -y yum-utils epel-release https://repo.ius.io/ius-release-el7.rpm -# sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm -# sudo yum -y install git - -opendevstack_dir="${HOME}/opendevstack" -mkdir -p "${opendevstack_dir}" -cd "${opendevstack_dir}" || return -curl -LO "https://raw.githubusercontent.com/opendevstack/ods-core/${ods_git_ref}/scripts/repos.sh" -chmod u+x ./repos.sh -./repos.sh --git-ref "${ods_git_ref}" --verbose - -cd ods-core -time bash ods-devenv/scripts/deploy.sh --branch "${ods_git_ref}" --target ods_setup diff --git a/ods-setup/setup-ods-project.sh b/ods-setup/setup-ods-project.sh index 23e41a5a8..409e342e2 100755 --- a/ods-setup/setup-ods-project.sh +++ b/ods-setup/setup-ods-project.sh @@ -69,10 +69,6 @@ if ! oc adm policy add-cluster-role-to-user self-provisioner system:serviceaccou exit 1 fi -# Allow Jenkins serviceaccount to label namespaces -oc create clusterrole namespace-labeler --verb=patch --resource=namespace -oc adm policy add-cluster-role-to-user namespace-labeler system:serviceaccount:${NAMESPACE}:jenkins - # Create cd-user secret cd ${SCRIPT_DIR}/ocp-config/cd-user ${TAILOR} -n ${NAMESPACE} apply ${NON_INTERACTIVE} ${REVEAL_SECRETS} From bd5e0f046e60c2d43d5d200761e42bb803421eb6 Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Mon, 5 Sep 2022 06:11:03 +0000 Subject: [PATCH 154/217] Retries for curl. --- ods-devenv/scripts/deploy.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 98193d04f..da80bf59f 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1059,6 +1059,7 @@ function configure_jira2crowd() { echo "Configure Jira against Crowd directory ..." # login to Jira curl -sS 'http://172.17.0.1:18080/login.jsp' \ + --retry 10 --retry-delay 5 --retry-max-time 60 --max-time 120 \ -b "${cookie_jar_path}" \ -c "${cookie_jar_path}" \ --data 'os_username=openshift&os_password=openshift&os_destination=&user_role=&atl_token=&login=Log+In' \ @@ -1072,7 +1073,8 @@ function configure_jira2crowd() { # docker logs --details jira || echo "Problem getting docker logs of jira container !! " login_page_fn="/tmp/login-page-`date +%Y%m%d_%H%M%S`.log" - curl -sS --insecure --location --connect-timeout 30 --max-time 120 --retry-delay 5 --retry 5 --verbose \ + curl -sS --insecure --location --connect-timeout 30 --verbose \ + --retry 10 --retry-delay 5 --retry-max-time 60 --max-time 120 \ 'http://172.17.0.1:18080/' -u "openshift:openshift" --output ${login_page_fn} if [ ! -f ${login_page_fn} ]; then echo "WARNING: File with login page (${login_page_fn}) is EMPTY or does NOT exist !!! " @@ -1083,6 +1085,7 @@ function configure_jira2crowd() { echo "Retrieving Jira xsrf atl_token to file ${atl_token_fn} ..." curl -sS --connect-timeout 30 --max-time 120 --retry-delay 5 --retry 5 --verbose \ 'http://172.17.0.1:18080/plugins/servlet/embedded-crowd/configure/new/' \ + --retry 10 --retry-delay 5 --retry-max-time 60 --max-time 120 \ -u "openshift:openshift" \ -b "${cookie_jar_path}" \ -c "${cookie_jar_path}" \ @@ -1120,6 +1123,7 @@ function configure_jira2crowd() { # WebSudo authentication - sign in as admin curl -sS 'http://172.17.0.1:18080/secure/admin/WebSudoAuthenticate.jspa' \ + --retry 10 --retry-delay 5 --retry-max-time 60 --max-time 120 \ -b "${cookie_jar_path}" \ -c "${cookie_jar_path}" \ --data "webSudoPassword=openshift&webSudoDestination=%2Fsecure%2Fadmin%2FViewApplicationProperties.jspa&webSudoIsPost=false&atl_token=${atl_token}" \ @@ -1132,6 +1136,7 @@ function configure_jira2crowd() { echo "Assuming crowd service listens at ${crowd_service_name}:8095" local crowd_directory_id crowd_directory_id=$(curl -sS 'http://172.17.0.1:18080/plugins/servlet/embedded-crowd/configure/crowd/' \ + --retry 10 --retry-delay 5 --retry-max-time 60 --max-time 120 \ -b "${cookie_jar_path}" \ -c "${cookie_jar_path}" \ --data "name=Crowd+Server&crowdServerUrl=http%3A%2F%2F${crowd_service_name}%3A8095%2Fcrowd%2F&applicationName=jira&applicationPassword=openshift&httpTimeout=&httpMaxConnections=&httpProxyHost=&httpProxyPort=&httpProxyUsername=&httpProxyPassword=&crowdPermissionOption=READ_ONLY&_nestedGroupsEnabled=visible&incrementalSyncEnabled=true&_incrementalSyncEnabled=visible&groupSyncOnAuthMode=ALWAYS&crowdServerSynchroniseIntervalInMin=60&save=Save+and+Test&atl_token=${atl_token}&directoryId=0" \ @@ -1144,6 +1149,7 @@ function configure_jira2crowd() { # sync bitbucket with crowd directory curl -sS "http://172.17.0.1:18080/plugins/servlet/embedded-crowd/directories/sync?directoryId=${crowd_directory_id}&atl_token=${atl_token}" \ + --retry 10 --retry-delay 5 --retry-max-time 60 --max-time 120 \ -b "${cookie_jar_path}" \ -c "${cookie_jar_path}" \ --compressed \ From 59c8daf2252e05f482dab579a2e19ecac15f448e Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 5 Sep 2022 15:39:25 +0200 Subject: [PATCH 155/217] Use java 11 as default java for jenkins slaves. --- jenkins/agent-base/Dockerfile.centos7 | 15 +++++++-- jenkins/agent-base/Dockerfile.ubi8 | 17 ++++++++-- jenkins/agent-base/ods-run-jnlp-client.sh | 4 +++ jenkins/agent-base/use-j11.sh | 38 +++++++++++++++++++++++ 4 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 jenkins/agent-base/use-j11.sh diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index bbfa9e12a..0f3ff265e 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -20,10 +20,21 @@ ENV JAVA_HOME=/usr/lib/jvm/jre RUN rm -fv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/origin-local-release.repo \ && yum -y install openssl \ - && yum -y install java-1.8.0-openjdk-devel.x86_64 \ + && yum -y install java-1.8.0-openjdk-devel.x86_64 java-11-openjdk-devel \ && yum -y update \ && yum clean all \ - && rm -rf /var/cache/yum/* + && rm -rf /var/cache/yum/* + +# Copy use java scripts. +COPY use-j*.sh /usr/local/bin/ +RUN chmod +x /usr/local/bin/use-j*.sh && \ + chmod ugo+s /usr/local/bin/use-j*.sh && \ + sh -c 'chmod ugo+s $(which alternatives)' && \ + ls -la /usr/local/bin/use-j*.sh && \ + echo "--- STARTS JDK 11 TESTS ---" && \ + use-j11.sh && \ + echo "--- ENDS JDK 11 TESTS ---" + COPY ./import_certs.sh /usr/local/bin/import_certs.sh RUN import_certs.sh diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index 1cdb5041b..239339c0d 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -8,8 +8,7 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ HELM_VERSION=3.5.3 \ HELM_PLUGIN_DIFF_VERSION=3.3.2 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ - GIT_LFS_VERSION=2.6.1 \ - JAVA_HOME=/usr/lib/jvm/jre + GIT_LFS_VERSION=2.6.1 ARG APP_DNS ARG SNYK_DISTRIBUTION_URL @@ -24,6 +23,20 @@ RUN cd /etc/yum.repos.d && rm -f localdev-* ci-rpm-mirrors.repo \ && yum clean all \ && rm -rf /var/cache/yum/* +# +# WARNING: We do not install java 8 nor java 11 in this image because they are already intalled in it. +# + +# Copy use java scripts. +COPY use-j*.sh /usr/local/bin/ +RUN chmod +x /usr/local/bin/use-j*.sh && \ + chmod ugo+s /usr/local/bin/use-j*.sh && \ + sh -c 'chmod ugo+s $(which alternatives)' && \ + ls -la /usr/local/bin/use-j*.sh && \ + echo "--- STARTS JDK 11 TESTS ---" && \ + use-j11.sh && \ + echo "--- ENDS JDK 11 TESTS ---" + COPY ./import_certs.sh /usr/local/bin/import_certs.sh RUN import_certs.sh diff --git a/jenkins/agent-base/ods-run-jnlp-client.sh b/jenkins/agent-base/ods-run-jnlp-client.sh index c63588260..e1677f712 100755 --- a/jenkins/agent-base/ods-run-jnlp-client.sh +++ b/jenkins/agent-base/ods-run-jnlp-client.sh @@ -12,4 +12,8 @@ else echo "INFO: skip import" fi +# Choose to use java 11 always +source use-j11.sh +export USE_JAVA_VERSION=java-11 + /usr/local/bin/openshift-run-jnlp-client diff --git a/jenkins/agent-base/use-j11.sh b/jenkins/agent-base/use-j11.sh new file mode 100644 index 000000000..f2eb428a4 --- /dev/null +++ b/jenkins/agent-base/use-j11.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +JAVA_HOME_FOLDER=$(ls -lah /usr/lib/jvm | grep "java-11-openjdk-11.*\.x86_64" | awk '{print $NF}' | head -1) +JAVA_VERSION="11" + +function msg_and_exit() { + echo "ERROR: ${1}" + exit 1 +} + +echo "Switching to java ${JAVA_VERSION}:" +JAVA_HOME="/usr/lib/jvm/${JAVA_HOME_FOLDER}" + +alternatives --set java ${JAVA_HOME}/bin/java || \ + msg_and_exit "Cannot configure java ${JAVA_VERSION} as the alternative to use for java." +java -version 2>&1 | grep -q "\s\+${JAVA_VERSION}" || msg_and_exit "Java version is not ${JAVA_VERSION}." + +if [ -x ${JAVA_HOME}/bin/javac ]; then + alternatives --set javac ${JAVA_HOME}/bin/javac || \ + msg_and_exit "Cannot configure javac ${JAVA_VERSION} as the alternative to use for javac." + javac -version 2>&1 | grep -q "\s\+${JAVA_VERSION}" || msg_and_exit "Javac version is not ${JAVA_VERSION}." +else + echo "WARNING: Not found binary for javac in path ${JAVA_HOME}/bin/javac " +fi + +java -version 2>&1 +if which 'javac'; then + javac -version 2>&1 +else + echo "WARNING: Binary javac is not available." +fi + +if [ -d ${JAVA_HOME}/bin/ ]; then + export JAVA_HOME +else + msg_and_exit "Cannot configure JAVA_HOME environment variable to ${JAVA_HOME}" +fi +echo "JAVA_HOME: $JAVA_HOME" From 13b3979241d65a28c476670addafb9a42f73b5f2 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 5 Sep 2022 15:40:57 +0200 Subject: [PATCH 156/217] Comments --- jenkins/agent-base/ods-run-jnlp-client.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/agent-base/ods-run-jnlp-client.sh b/jenkins/agent-base/ods-run-jnlp-client.sh index e1677f712..393331e57 100755 --- a/jenkins/agent-base/ods-run-jnlp-client.sh +++ b/jenkins/agent-base/ods-run-jnlp-client.sh @@ -12,7 +12,7 @@ else echo "INFO: skip import" fi -# Choose to use java 11 always +# Choose to use java 11 always source use-j11.sh export USE_JAVA_VERSION=java-11 From 7aa8e682895bac8a873bc894cb0757e15237a658 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 5 Sep 2022 16:00:23 +0200 Subject: [PATCH 157/217] Set default java home in jenkins base img. --- jenkins/agent-base/import_certs.sh | 6 ++++++ jenkins/agent-base/use-j11.sh | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/jenkins/agent-base/import_certs.sh b/jenkins/agent-base/import_certs.sh index 4a7977f7b..f2353dd92 100755 --- a/jenkins/agent-base/import_certs.sh +++ b/jenkins/agent-base/import_certs.sh @@ -1,6 +1,12 @@ #!/bin/bash set -eu +if [ -f /etc/profile.d/set-default-java.sh ]; then + source /etc/profile.d/set-default-java.sh +else + echo "WARNING: Not setting default java version." +fi + if [[ ! -z ${APP_DNS:=""} ]]; then echo "Setting up certificates from APP_DNS=${APP_DNS} ..."; \ diff --git a/jenkins/agent-base/use-j11.sh b/jenkins/agent-base/use-j11.sh index f2eb428a4..728f43a7c 100644 --- a/jenkins/agent-base/use-j11.sh +++ b/jenkins/agent-base/use-j11.sh @@ -36,3 +36,7 @@ else msg_and_exit "Cannot configure JAVA_HOME environment variable to ${JAVA_HOME}" fi echo "JAVA_HOME: $JAVA_HOME" + +rm -fv /etc/profile.d/set-default-java.sh +echo "export JAVA_HOME=${JAVA_HOME}" > /etc/profile.d/set-default-java.sh +chmod +x /etc/profile.d/set-default-java.sh From b742009bf279d433f49b1a4f3f3ad05fd792f725 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 5 Sep 2022 16:12:37 +0200 Subject: [PATCH 158/217] Setup correct permissions for cacerts folder. --- jenkins/agent-base/Dockerfile.centos7 | 1 - jenkins/agent-base/Dockerfile.ubi8 | 1 - jenkins/agent-base/import_certs.sh | 8 ++++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index 0f3ff265e..42961e295 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -127,4 +127,3 @@ RUN mkdir -p /home/jenkins/.config && chmod -R g+w /home/jenkins/.config \ && mkdir -p /home/jenkins/.cache && chmod -R g+w /home/jenkins/.cache \ && mkdir -p /home/jenkins/.sonar && chmod -R g+w /home/jenkins/.sonar -RUN chmod g+w $JAVA_HOME/lib/security/cacerts diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index 239339c0d..3ffa8d75e 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -127,4 +127,3 @@ RUN mkdir -p /home/jenkins/.config && chmod -R g+w /home/jenkins/.config \ && mkdir -p /home/jenkins/.cache && chmod -R g+w /home/jenkins/.cache \ && mkdir -p /home/jenkins/.sonar && chmod -R g+w /home/jenkins/.sonar -RUN chmod g+w $JAVA_HOME/lib/security/cacerts diff --git a/jenkins/agent-base/import_certs.sh b/jenkins/agent-base/import_certs.sh index f2353dd92..44e7161d4 100755 --- a/jenkins/agent-base/import_certs.sh +++ b/jenkins/agent-base/import_certs.sh @@ -29,3 +29,11 @@ if [[ ! -z ${APP_DNS:=""} ]]; then else echo 'No certificates to import' fi + +echo "Trying to setup correct permissions for cacerts folder... " +if [ ! -z "${JAVA_HOME}" ] && [ "" != "${JAVA_HOME}" ]; then + chmod -c g+w $JAVA_HOME/lib/security/cacerts +else + echo "WARNING: Cannot apply permissions 'chmod g+w' to JAVA_HOME/lib/security/cacerts " + echo "WARNING: JAVA_HOME=${JAVA_HOME}" +fi From 33131c1eae9c6abc9f721c804df9d5c2dd000170 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 5 Sep 2022 16:33:19 +0200 Subject: [PATCH 159/217] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b4a2130a..013396a74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ - Fixes Jenkins Memory problems reported ([#1161](https://github.com/opendevstack/ods-core/pull/1161)) - Update Aqua CLI version ([#1173](https://github.com/opendevstack/ods-core/pull/1173)) - Fix CI/CD problems in Jenkins pipelines ([#1177](https://github.com/opendevstack/ods-core/pull/1177)) +- Fixes Python agent does not seems to have java in the path ([#685](https://github.com/opendevstack/ods-quickstarters/issues/685)) ### Added From df46a8e624293253a50c985f5c5624cf4b53cb3b Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 5 Sep 2022 16:43:42 +0200 Subject: [PATCH 160/217] Initialize var if unset. --- jenkins/agent-base/import_certs.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jenkins/agent-base/import_certs.sh b/jenkins/agent-base/import_certs.sh index 44e7161d4..0e3bc39a5 100755 --- a/jenkins/agent-base/import_certs.sh +++ b/jenkins/agent-base/import_certs.sh @@ -1,6 +1,9 @@ #!/bin/bash set -eu +# Initialize JAVA_HOME if not set. +JAVA_HOME=${JAVA_HOME:-""} + if [ -f /etc/profile.d/set-default-java.sh ]; then source /etc/profile.d/set-default-java.sh else From 2576e502cdeb4972a761e9fdef21abd97a6b15ea Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 5 Sep 2022 16:49:07 +0200 Subject: [PATCH 161/217] Correct owner of cacerts folder. --- jenkins/agent-base/import_certs.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/jenkins/agent-base/import_certs.sh b/jenkins/agent-base/import_certs.sh index 0e3bc39a5..56bd718f9 100755 --- a/jenkins/agent-base/import_certs.sh +++ b/jenkins/agent-base/import_certs.sh @@ -35,6 +35,7 @@ fi echo "Trying to setup correct permissions for cacerts folder... " if [ ! -z "${JAVA_HOME}" ] && [ "" != "${JAVA_HOME}" ]; then + chown -c 1001:0 $JAVA_HOME/lib/security/cacerts chmod -c g+w $JAVA_HOME/lib/security/cacerts else echo "WARNING: Cannot apply permissions 'chmod g+w' to JAVA_HOME/lib/security/cacerts " From 78a5d2575b5b0e5f8da099146c1998a29bc7e4ca Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 5 Sep 2022 17:13:16 +0200 Subject: [PATCH 162/217] take default java set previously. --- jenkins/agent-base/ods-run-jnlp-client.sh | 13 +++++++++---- jenkins/agent-base/use-j11.sh | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/jenkins/agent-base/ods-run-jnlp-client.sh b/jenkins/agent-base/ods-run-jnlp-client.sh index 393331e57..0b7e02da4 100755 --- a/jenkins/agent-base/ods-run-jnlp-client.sh +++ b/jenkins/agent-base/ods-run-jnlp-client.sh @@ -1,6 +1,15 @@ #!/bin/bash set -ue +# Initialize JAVA_HOME if not set. +JAVA_HOME=${JAVA_HOME:-""} + +if [ -f /etc/profile.d/set-default-java.sh ]; then + source /etc/profile.d/set-default-java.sh +else + echo "WARNING: Not setting default java version." +fi + # Openshift default CA. See https://docs.openshift.com/container-platform/3.11/dev_guide/secrets.html#service-serving-certificate-secrets SERVICEACCOUNT_CA='/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt' if [[ -f $SERVICEACCOUNT_CA ]]; then @@ -12,8 +21,4 @@ else echo "INFO: skip import" fi -# Choose to use java 11 always -source use-j11.sh -export USE_JAVA_VERSION=java-11 - /usr/local/bin/openshift-run-jnlp-client diff --git a/jenkins/agent-base/use-j11.sh b/jenkins/agent-base/use-j11.sh index 728f43a7c..07954e82f 100644 --- a/jenkins/agent-base/use-j11.sh +++ b/jenkins/agent-base/use-j11.sh @@ -38,5 +38,6 @@ fi echo "JAVA_HOME: $JAVA_HOME" rm -fv /etc/profile.d/set-default-java.sh -echo "export JAVA_HOME=${JAVA_HOME}" > /etc/profile.d/set-default-java.sh +echo "export JAVA_HOME=${JAVA_HOME}" >> /etc/profile.d/set-default-java.sh +echo "export USE_JAVA_VERSION=java-11" >> /etc/profile.d/set-default-java.sh chmod +x /etc/profile.d/set-default-java.sh From 3d03471419215cebb435ad86463d9f62c31db443 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Tue, 6 Sep 2022 08:45:58 +0200 Subject: [PATCH 163/217] Try to retrieve jenkins master logs. --- tests/scripts/print-jenkins-log.sh | 32 ++++++++++++++++++++++++++++-- tests/utils/jenkins.go | 4 ++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index 47b6e1a9a..3ca7f4ec6 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -4,6 +4,7 @@ set -o pipefail ME="$(basename $0)" JENKINS_LOG_FILE="jenkins-downloaded-log.txt" +JENKINS_SERVER_LOG_FILE="jenkins-server-log.txt" echo " " echo " " @@ -17,7 +18,7 @@ echo " " TOKEN=$(oc -n ${PROJECT} get sa/jenkins --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc -n ${PROJECT} get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -d -) if [ -f ${JENKINS_LOG_FILE} ]; then - rm -fv ${JENKINS_LOG_FILE} || echo "Problem removing existing log file." + rm -fv ${JENKINS_LOG_FILE} || echo "Problem removing existing log file (${JENKINS_LOG_FILE})." fi echo "${ME}: Retrieving logs from url: ${LOG_URL}" @@ -35,6 +36,33 @@ while read -r line; do done < ${JENKINS_LOG_FILE} echo " " +sleep 5 + +if [ -f ${JENKINS_SERVER_LOG_FILE} ]; then + rm -fv ${JENKINS_SERVER_LOG_FILE} || echo "Problem removing existing log file (${JENKINS_SERVER_LOG_FILE})." +fi + +JENKINS_SERVER_PROTOCOL="$(echo \"${LOG_URL}\" | cut -d "/" -f 1)" +JENKINS_SERVER_HOSTNAME="$(echo \"${LOG_URL}\" | cut -d "/" -f 3)" +JENKINS_SERVER_LOGS_URL_TAIL="/manage/log/all" +JENKINS_SERVER_LOGS_URL="${JENKINS_SERVER_PROTOCOL}//${JENKINS_SERVER_HOSTNAME}${JENKINS_SERVER_LOGS_URL_TAIL}" + +echo "Jenkins server log url: ${JENKINS_SERVER_LOGS_URL}" +curl --insecure -sSL --header "Authorization: Bearer ${TOKEN}" ${JENKINS_SERVER_LOGS_URL} > ${JENKINS_SERVER_LOG_FILE} || \ + echo "${ME}: Error retrieving jenkins server logs with curl, needed to eval problem in failed job ( ${BUILD_NAME} ). " + echo " " echo " " -sleep 5 + +echo "** JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " +echo " " +while read -r line; do + echo "JNK_LOGS: $line "; +done < ${JENKINS_SERVER_LOG_FILE} + +echo " " +echo "ENDS JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " +echo " " +echo " " +echo " " +sleep 10 diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index 76f22b103..bbf91ed93 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -93,6 +93,7 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin fmt.Printf("Getting stages for build: %s in project: %s\n", buildName, jenkinsNamespace) + fmt.Printf("To get more info, use print-jenkins-log.sh %s %s \n", jenkinsNamespace, buildName) config, err := GetOCClient() if err != nil { @@ -125,8 +126,7 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin } } } else { - fmt.Printf("Waiting (%d/%d) for build to complete: %s. Current status: %s\n", count, max, buildName, build.Status.Phase) - fmt.Printf("To get more info, use print-jenkins-log.sh %s %s \n", jenkinsNamespace, buildName) + fmt.Printf("Waiting for build of %s to complete (%d/%d). Current status: %s\n", buildName, count, max, build.Status.Phase) } count++ } From eb75cb0eeaf24b1839ab36aa19770690599f98c3 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Tue, 6 Sep 2022 11:30:52 +0200 Subject: [PATCH 164/217] Improves logs --- jenkins/agent-base/ods-run-jnlp-client.sh | 2 ++ ods-devenv/scripts/deploy.sh | 36 +++++++++++++++-------- tests/smoketest/provision-api_test.go | 3 ++ tests/utils/provisioning.go | 2 ++ 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/jenkins/agent-base/ods-run-jnlp-client.sh b/jenkins/agent-base/ods-run-jnlp-client.sh index 0b7e02da4..00d648250 100755 --- a/jenkins/agent-base/ods-run-jnlp-client.sh +++ b/jenkins/agent-base/ods-run-jnlp-client.sh @@ -5,7 +5,9 @@ set -ue JAVA_HOME=${JAVA_HOME:-""} if [ -f /etc/profile.d/set-default-java.sh ]; then + set -x source /etc/profile.d/set-default-java.sh + set +x else echo "WARNING: Not setting default java version." fi diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 31796876e..957652ff7 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2161,15 +2161,18 @@ function install_ods_project() { function setup_nexus() { echo "make install-nexus: / apply-nexus:" pushd nexus/ocp-config - tailor apply --namespace "${NAMESPACE}" bc,is --non-interactive --verbose + tailor apply --namespace "${NAMESPACE}" bc,is --non-interactive + # --verbose popd echo "start-nexus-build:" - ocp-scripts/start-and-follow-build.sh --namespace "${NAMESPACE}" --build-config nexus --verbose + ocp-scripts/start-and-follow-build.sh --namespace "${NAMESPACE}" --build-config nexus + # --verbose echo "apply-nexus-deploy:" pushd nexus/ocp-config - tailor apply --namespace "${NAMESPACE}" --exclude bc,is --non-interactive --verbose + tailor apply --namespace "${NAMESPACE}" --exclude bc,is --non-interactive + # --verbose popd echo "make configure-nexus:" @@ -2180,7 +2183,8 @@ function setup_nexus() { nexus_port=$(oc -n ods get route nexus -ojsonpath='{.spec.port.targetPort}') nexus_port=${nexus_port%-*} # truncate -tcp from 8081-tcp - ./configure.sh --namespace ods --nexus="${nexus_url}" --insecure --verbose --admin-password openshift + ./configure.sh --namespace ods --nexus="${nexus_url}" --insecure --admin-password openshift + # --verbose popd } @@ -2198,11 +2202,13 @@ function setup_sonarqube() { sudo sysctl -w vm.max_map_count=262144 echo "apply-sonarqube-build:" pushd sonarqube/ocp-config - tailor apply --namespace ${NAMESPACE} bc,is --non-interactive --verbose + tailor apply --namespace ${NAMESPACE} bc,is --non-interactive + # --verbose popd echo "start-sonarqube-build:" - ocp-scripts/start-and-follow-build.sh --namespace ${NAMESPACE} --build-config sonarqube --verbose + ocp-scripts/start-and-follow-build.sh --namespace ${NAMESPACE} --build-config sonarqube + # --verbose return_value=$? if [[ "${return_value}" != "0" ]]; then echo "start-sonarqube-build failed." @@ -2211,7 +2217,8 @@ function setup_sonarqube() { echo "apply-sonarqube-deploy:" pushd sonarqube/ocp-config - tailor apply --namespace ${NAMESPACE} --exclude bc,is --non-interactive --verbose + tailor apply --namespace ${NAMESPACE} --exclude bc,is --non-interactive + # --verbose local sonarqube_url sonarqube_url=$(oc -n ${NAMESPACE} get route sonarqube --template 'http{{if .spec.tls}}s{{end}}://{{.spec.host}}') echo "Visit ${sonarqube_url}/setup to see if any update actions need to be taken." @@ -2219,11 +2226,12 @@ function setup_sonarqube() { echo "configure-sonarqube:" pushd sonarqube - ./configure.sh --sonarqube="${sonarqube_url}" --verbose --insecure \ + ./configure.sh --sonarqube="${sonarqube_url}" --insecure \ --pipeline-user openshift \ --pipeline-user-password openshift \ --admin-password openshift \ --write-to-config + # --verbose popd # retrieve sonar qube tokens from where configure.sh has put them @@ -2244,7 +2252,11 @@ function setup_sonarqube() { # None ####################################### function setup_jenkins() { - echo "Setting up Jenkins" + echo " " + echo "**********************" + echo "* Setting up Jenkins *" + echo "**********************" + echo " " oc policy add-role-to-user edit -z jenkins -n ${NAMESPACE} echo "make apply-jenkins-build:" @@ -2253,9 +2265,9 @@ function setup_jenkins() { popd echo "make start-jenkins-build:" - ocp-scripts/start-and-follow-build.sh --namespace ${NAMESPACE} --build-config jenkins-master --verbose & - ocp-scripts/start-and-follow-build.sh --namespace ${NAMESPACE} --build-config jenkins-agent-base --verbose & - ocp-scripts/start-and-follow-build.sh --namespace ${NAMESPACE} --build-config jenkins-webhook-proxy --verbose & + ocp-scripts/start-and-follow-build.sh --namespace ${NAMESPACE} --build-config jenkins-master --verbose + ocp-scripts/start-and-follow-build.sh --namespace ${NAMESPACE} --build-config jenkins-agent-base --verbose + ocp-scripts/start-and-follow-build.sh --namespace ${NAMESPACE} --build-config jenkins-webhook-proxy --verbose local fail_count=0 for job in $(jobs -p) diff --git a/tests/smoketest/provision-api_test.go b/tests/smoketest/provision-api_test.go index c6ec0941c..76d2fff00 100644 --- a/tests/smoketest/provision-api_test.go +++ b/tests/smoketest/provision-api_test.go @@ -8,6 +8,7 @@ import ( "runtime" "strings" "testing" + "time" "github.com/opendevstack/ods-core/tests/utils" projectClientV1 "github.com/openshift/client-go/project/clientset/versioned/typed/project/v1" @@ -58,6 +59,8 @@ func TestVerifyOdsProjectProvisionThruProvisionApi(t *testing.T) { values["ODS_NAMESPACE"], exJob.FullBuildName, ) if err != nil { + time.Sleep(10 * time.Second) + fmt.Printf("Error retrieving jenkins build stages for build: %s\n", projectName) t.Fatal(err) } fmt.Printf("Jenkins stages: \n'%s'\n", stages) diff --git a/tests/utils/provisioning.go b/tests/utils/provisioning.go index bb92aac53..d12076658 100644 --- a/tests/utils/provisioning.go +++ b/tests/utils/provisioning.go @@ -70,6 +70,7 @@ func (api *ProvisionAPI) CreateProject() ([]byte, error) { return nil, fmt.Errorf("Could not read response file?!, %s", err) } fmt.Printf("Provision results: %s\n", string(log)) + fmt.Printf("-----\n") return log, nil } @@ -130,5 +131,6 @@ func (api *ProvisionAPI) CreateComponent() ([]byte, error) { return nil, fmt.Errorf("Could not read response file?!, %w", err) } fmt.Printf("Provision results: %s\n", string(log)) + fmt.Printf("-----\n") return log, nil } From b33e71f103de192de0d0f995f7accfff1071ba1e Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Tue, 6 Sep 2022 11:47:09 +0200 Subject: [PATCH 165/217] gofmt --- tests/smoketest/provision-api_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/smoketest/provision-api_test.go b/tests/smoketest/provision-api_test.go index 76d2fff00..299a6e456 100644 --- a/tests/smoketest/provision-api_test.go +++ b/tests/smoketest/provision-api_test.go @@ -59,8 +59,8 @@ func TestVerifyOdsProjectProvisionThruProvisionApi(t *testing.T) { values["ODS_NAMESPACE"], exJob.FullBuildName, ) if err != nil { - time.Sleep(10 * time.Second) - fmt.Printf("Error retrieving jenkins build stages for build: %s\n", projectName) + time.Sleep(10 * time.Second) + fmt.Printf("Error retrieving jenkins build stages for build: %s\n", projectName) t.Fatal(err) } fmt.Printf("Jenkins stages: \n'%s'\n", stages) From 3192a3a55bb97822dcc669f04c403c65b72936f6 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Tue, 6 Sep 2022 12:53:17 +0200 Subject: [PATCH 166/217] Wait for manual intervention. --- tests/scripts/print-jenkins-log.sh | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index 3ca7f4ec6..b12ea2cdf 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -28,10 +28,14 @@ curl --insecure -sSL --header "Authorization: Bearer ${TOKEN}" ${LOG_URL} > ${JE # | xargs -n 1 echo "${BUILD_NAME}: " || \ # echo "Error retrieving jenkins logs of job run in ${BUILD_NAME} with curl." +NO_JOB_LOGS="true" echo " " echo " " # Appends current ${BUILD_NAME} to each log line. Improves readability. while read -r line; do + if [ ! -z "$line" ] && [ "" != "${line}" ]; then + NO_JOB_LOGS="false" + fi echo -e "${BUILD_NAME}: $line "; done < ${JENKINS_LOG_FILE} @@ -42,8 +46,8 @@ if [ -f ${JENKINS_SERVER_LOG_FILE} ]; then rm -fv ${JENKINS_SERVER_LOG_FILE} || echo "Problem removing existing log file (${JENKINS_SERVER_LOG_FILE})." fi -JENKINS_SERVER_PROTOCOL="$(echo \"${LOG_URL}\" | cut -d "/" -f 1)" -JENKINS_SERVER_HOSTNAME="$(echo \"${LOG_URL}\" | cut -d "/" -f 3)" +JENKINS_SERVER_PROTOCOL="$(echo ${LOG_URL} | cut -d "/" -f 1)" +JENKINS_SERVER_HOSTNAME="$(echo ${LOG_URL} | cut -d "/" -f 3)" JENKINS_SERVER_LOGS_URL_TAIL="/manage/log/all" JENKINS_SERVER_LOGS_URL="${JENKINS_SERVER_PROTOCOL}//${JENKINS_SERVER_HOSTNAME}${JENKINS_SERVER_LOGS_URL_TAIL}" @@ -56,7 +60,11 @@ echo " " echo "** JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " echo " " +NO_SERVER_LOGS="true" while read -r line; do + if [ ! -z "$line" ] && [ "" != "${line}" ]; then + NO_SERVER_LOGS="false" + fi echo "JNK_LOGS: $line "; done < ${JENKINS_SERVER_LOG_FILE} @@ -66,3 +74,19 @@ echo " " echo " " echo " " sleep 10 + +echo " " +echo "NO_JOB_LOGS=${NO_JOB_LOGS}" +echo "NO_SERVER_LOGS=${NO_SERVER_LOGS}" +echo " " +if [ "true" == "${NO_JOB_LOGS}" ] || [ "true" == "${NO_SERVER_LOGS}" ]; then + echo " " + echo "A problem was found while retrieving Jenkins job/server logs." + echo "Since we might need to enter the box and see what went wrong, this pipeline will wait for manual intervention. " + echo "Enjoy..." + echo "sleep 72000 ( 20h )" + sleep 72000 + echo " " + echo " " + echo " " +fi From 792aa3697482242926057eda2f85cdec770cf7a2 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 7 Sep 2022 09:05:57 +0200 Subject: [PATCH 167/217] Fixes Jenkins server logs not retrieved. --- tests/scripts/print-jenkins-log.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index b12ea2cdf..caad1a93f 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -75,11 +75,18 @@ echo " " echo " " sleep 10 +BAD_SERVER_LOGS="false" +if grep -q 'Still waiting to schedule task' ${JENKINS_LOG_FILE} ; then + if grep -q 'HTTP ERROR' ${JENKINS_SERVER_LOG_FILE} ; then + BAD_SERVER_LOGS="true" + fi +fi + echo " " echo "NO_JOB_LOGS=${NO_JOB_LOGS}" echo "NO_SERVER_LOGS=${NO_SERVER_LOGS}" echo " " -if [ "true" == "${NO_JOB_LOGS}" ] || [ "true" == "${NO_SERVER_LOGS}" ]; then +if [ "true" == "${NO_JOB_LOGS}" ] || [ "true" == "${NO_SERVER_LOGS}" ] || [ "true" == "${BAD_SERVER_LOGS}" ]; then echo " " echo "A problem was found while retrieving Jenkins job/server logs." echo "Since we might need to enter the box and see what went wrong, this pipeline will wait for manual intervention. " From 83f094dfcac36efa97eabd11083248e8825dd6cb Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 7 Sep 2022 13:14:22 +0200 Subject: [PATCH 168/217] Timeouts=10h. Need boxes to be alive to eval problems. --- tests/quickstarter-test.sh | 4 ++-- tests/smoke-test.sh | 4 ++-- tests/verify.sh | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/quickstarter-test.sh b/tests/quickstarter-test.sh index 9d8cb8a94..1527a4648 100755 --- a/tests/quickstarter-test.sh +++ b/tests/quickstarter-test.sh @@ -49,8 +49,8 @@ echo "${THIS_SCRIPT}: Running tests (${QUICKSTARTER}). Output will take a while echo " " # Should fix error " panic: test timed out after " -echo "${THIS_SCRIPT}: go test -v -count=1 -timeout 5h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER}" -go test -v -count=1 -timeout 5h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER} | tee test-quickstarter-results.txt 2>&1 +echo "${THIS_SCRIPT}: go test -v -count=1 -timeout 10h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER}" +go test -v -count=1 -timeout 10h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER} | tee test-quickstarter-results.txt 2>&1 exitcode="${PIPESTATUS[0]}" if [ -f test-quickstarter-results.txt ]; then go-junit-report < test-quickstarter-results.txt > test-quickstarter-report.xml diff --git a/tests/smoke-test.sh b/tests/smoke-test.sh index 5ed7db5e0..d1f9feeeb 100755 --- a/tests/smoke-test.sh +++ b/tests/smoke-test.sh @@ -24,8 +24,8 @@ fi sleep 5 echo " " -echo "${THIS_SCRIPT}: go test -v -count=1 -timeout 140m github.com/opendevstack/ods-core/tests/smoketest " -go test -v -count=1 -timeout 140m github.com/opendevstack/ods-core/tests/smoketest | tee test-smoketest-results.txt 2>&1 +echo "${THIS_SCRIPT}: go test -v -count=1 -timeout 10h github.com/opendevstack/ods-core/tests/smoketest " +go test -v -count=1 -timeout 10h github.com/opendevstack/ods-core/tests/smoketest | tee test-smoketest-results.txt 2>&1 exit_code=$? echo "${THIS_SCRIPT}: return value: ${exit_code}" diff --git a/tests/verify.sh b/tests/verify.sh index 8efd585fc..d357a53c7 100755 --- a/tests/verify.sh +++ b/tests/verify.sh @@ -15,7 +15,8 @@ fi if [ -f test-verify-results.txt ]; then rm test-verify-results.txt fi -go test -v -count=1 -timeout 60m github.com/opendevstack/ods-core/tests/ods-verify | tee test-verify-results.txt 2>&1 +echo "go test -v -count=1 -timeout 10h github.com/opendevstack/ods-core/tests/ods-verify" +go test -v -count=1 -timeout 10h github.com/opendevstack/ods-core/tests/ods-verify | tee test-verify-results.txt 2>&1 exitcode=$? if [ -f test-verify-results.txt ]; then set -e From d07de06964b3a72e3cdd1a1c1af245c136d6fa7c Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 8 Sep 2022 08:21:59 +0200 Subject: [PATCH 169/217] Timeout=30h so if it hangs we have time to see why. --- tests/quickstarter-test.sh | 4 ++-- tests/smoke-test.sh | 4 ++-- tests/verify.sh | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/quickstarter-test.sh b/tests/quickstarter-test.sh index 1527a4648..ff78c1db4 100755 --- a/tests/quickstarter-test.sh +++ b/tests/quickstarter-test.sh @@ -49,8 +49,8 @@ echo "${THIS_SCRIPT}: Running tests (${QUICKSTARTER}). Output will take a while echo " " # Should fix error " panic: test timed out after " -echo "${THIS_SCRIPT}: go test -v -count=1 -timeout 10h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER}" -go test -v -count=1 -timeout 10h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER} | tee test-quickstarter-results.txt 2>&1 +echo "${THIS_SCRIPT}: go test -v -count=1 -timeout 30h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER}" +go test -v -count=1 -timeout 30h -parallel ${PARALLEL} github.com/opendevstack/ods-core/tests/quickstarter -args ${QUICKSTARTER} | tee test-quickstarter-results.txt 2>&1 exitcode="${PIPESTATUS[0]}" if [ -f test-quickstarter-results.txt ]; then go-junit-report < test-quickstarter-results.txt > test-quickstarter-report.xml diff --git a/tests/smoke-test.sh b/tests/smoke-test.sh index d1f9feeeb..efb605975 100755 --- a/tests/smoke-test.sh +++ b/tests/smoke-test.sh @@ -24,8 +24,8 @@ fi sleep 5 echo " " -echo "${THIS_SCRIPT}: go test -v -count=1 -timeout 10h github.com/opendevstack/ods-core/tests/smoketest " -go test -v -count=1 -timeout 10h github.com/opendevstack/ods-core/tests/smoketest | tee test-smoketest-results.txt 2>&1 +echo "${THIS_SCRIPT}: go test -v -count=1 -timeout 30h github.com/opendevstack/ods-core/tests/smoketest " +go test -v -count=1 -timeout 30h github.com/opendevstack/ods-core/tests/smoketest | tee test-smoketest-results.txt 2>&1 exit_code=$? echo "${THIS_SCRIPT}: return value: ${exit_code}" diff --git a/tests/verify.sh b/tests/verify.sh index d357a53c7..9f551a061 100755 --- a/tests/verify.sh +++ b/tests/verify.sh @@ -15,8 +15,8 @@ fi if [ -f test-verify-results.txt ]; then rm test-verify-results.txt fi -echo "go test -v -count=1 -timeout 10h github.com/opendevstack/ods-core/tests/ods-verify" -go test -v -count=1 -timeout 10h github.com/opendevstack/ods-core/tests/ods-verify | tee test-verify-results.txt 2>&1 +echo "go test -v -count=1 -timeout 30h github.com/opendevstack/ods-core/tests/ods-verify" +go test -v -count=1 -timeout 30h github.com/opendevstack/ods-core/tests/ods-verify | tee test-verify-results.txt 2>&1 exitcode=$? if [ -f test-verify-results.txt ]; then set -e From 6b4ea15dc3f32b6141af2903fda2d5b20be80efe Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 8 Sep 2022 09:12:14 +0200 Subject: [PATCH 170/217] Obtain jenkins server logs. --- tests/scripts/print-jenkins-log.sh | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index caad1a93f..f6fbc1992 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -5,6 +5,7 @@ set -o pipefail ME="$(basename $0)" JENKINS_LOG_FILE="jenkins-downloaded-log.txt" JENKINS_SERVER_LOG_FILE="jenkins-server-log.txt" +WAIT_FOR_MANUAL_INTERVENTION="true" echo " " echo " " @@ -46,6 +47,10 @@ if [ -f ${JENKINS_SERVER_LOG_FILE} ]; then rm -fv ${JENKINS_SERVER_LOG_FILE} || echo "Problem removing existing log file (${JENKINS_SERVER_LOG_FILE})." fi +# Does not work :-( +# oc login -u developer -p anypwd +# TOKEN=$(oc -n ${PROJECT} get sa/jenkins --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc -n ${PROJECT} get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -d -) + JENKINS_SERVER_PROTOCOL="$(echo ${LOG_URL} | cut -d "/" -f 1)" JENKINS_SERVER_HOSTNAME="$(echo ${LOG_URL} | cut -d "/" -f 3)" JENKINS_SERVER_LOGS_URL_TAIL="/manage/log/all" @@ -91,9 +96,14 @@ if [ "true" == "${NO_JOB_LOGS}" ] || [ "true" == "${NO_SERVER_LOGS}" ] || [ "tru echo "A problem was found while retrieving Jenkins job/server logs." echo "Since we might need to enter the box and see what went wrong, this pipeline will wait for manual intervention. " echo "Enjoy..." - echo "sleep 72000 ( 20h )" - sleep 72000 + WAIT_FOR_MANUAL_INTERVENTION="true" +fi + +if [ "true" == "${WAIT_FOR_MANUAL_INTERVENTION}" ]; then echo " " + echo "WAITING FOR MANUAL INTERVENTION ( WAIT_FOR_MANUAL_INTERVENTION = true ) " + echo "sleep 72000 ( 20h )" echo " " echo " " + sleep 72000 fi From fdfb7f0bd17d5e746ba4b1dd1526c356cb71d14a Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 8 Sep 2022 12:32:47 +0200 Subject: [PATCH 171/217] Will show in jnk logs whats going on. --- jenkins/agent-base/Dockerfile.centos7 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index 42961e295..dcd4b6624 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -110,7 +110,9 @@ RUN if [ -z $AQUASEC_SCANNERCLI_URL ] ; then echo 'Skipping AquaSec installation COPY set_java_proxy.sh /tmp/set_java_proxy.sh RUN . /tmp/set_java_proxy.sh && echo $JAVA_OPTS -RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client +RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ + && sed -i 's|\#\!/bin/bash|\#\!/bin/bash -x|g' /usr/local/bin/openshift-run-jnlp-client \ + && head -n 10 /usr/local/bin/openshift-run-jnlp-client COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client # Add skopeo. From 363224559a2661b99380d4ac43c4337c78ec8f85 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 8 Sep 2022 16:23:19 +0200 Subject: [PATCH 172/217] Removes set of JAVA_TOOL_OPTIONS in script. --- jenkins/agent-base/Dockerfile.centos7 | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index dcd4b6624..74b198a54 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -10,7 +10,10 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ GIT_LFS_VERSION=2.6.1 \ SKOPEO_VERSION=0.1.37-3 \ - OSTREE_VERSION=2018.5-1 + OSTREE_VERSION=2018.5-1 \ + JAVA_TOOL_OPTIONS=-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled \ + -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions \ + -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true ARG APP_DNS ARG SNYK_DISTRIBUTION_URL @@ -20,7 +23,9 @@ ENV JAVA_HOME=/usr/lib/jvm/jre RUN rm -fv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/origin-local-release.repo \ && yum -y install openssl \ - && yum -y install java-1.8.0-openjdk-devel.x86_64 java-11-openjdk-devel \ + && yum -y install java-11-openjdk-devel \ + && yum list installed | grep java \ + && yum -y remove java-1.8* \ && yum -y update \ && yum clean all \ && rm -rf /var/cache/yum/* @@ -110,9 +115,18 @@ RUN if [ -z $AQUASEC_SCANNERCLI_URL ] ; then echo 'Skipping AquaSec installation COPY set_java_proxy.sh /tmp/set_java_proxy.sh RUN . /tmp/set_java_proxy.sh && echo $JAVA_OPTS +# The following line fix incorrect behaviours in the base image. +# It is setting the variable JAVA_TOOL_OPTIONS while it should not. +# Besides, we need to know if this variable has not been set. +# It is a problem very difficult to detect... RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ && sed -i 's|\#\!/bin/bash|\#\!/bin/bash -x|g' /usr/local/bin/openshift-run-jnlp-client \ - && head -n 10 /usr/local/bin/openshift-run-jnlp-client + && sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*|echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + /usr/local/bin/openshift-run-jnlp-client \ + && sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*|echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + /usr/local/bin/openshift-run-jnlp-client \ + && head -n 10 /usr/local/bin/openshift-run-jnlp-client \ + && grep -i 'JAVA_TOOL_OPTIONS' /usr/local/bin/openshift-run-jnlp-client COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client # Add skopeo. From e3ca1af9b33f24109c1921147a5fdd48a9346037 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 8 Sep 2022 16:35:33 +0200 Subject: [PATCH 173/217] Same for ubi8 imgs. --- jenkins/agent-base/Dockerfile.ubi8 | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index 3ffa8d75e..c4982e505 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -8,7 +8,10 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ HELM_VERSION=3.5.3 \ HELM_PLUGIN_DIFF_VERSION=3.3.2 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ - GIT_LFS_VERSION=2.6.1 + GIT_LFS_VERSION=2.6.1 \ + JAVA_TOOL_OPTIONS=-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled \ + -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions \ + -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true ARG APP_DNS ARG SNYK_DISTRIBUTION_URL @@ -113,7 +116,14 @@ COPY set_java_proxy.sh /tmp/set_java_proxy.sh RUN . /tmp/set_java_proxy.sh && echo $JAVA_OPTS # Customize entrypoint. -RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client +RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ + && sed -i 's|\#\!/bin/bash|\#\!/bin/bash -x|g' /usr/local/bin/openshift-run-jnlp-client \ + && sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*|echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + /usr/local/bin/openshift-run-jnlp-client \ + && sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*|echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + /usr/local/bin/openshift-run-jnlp-client \ + && head -n 10 /usr/local/bin/openshift-run-jnlp-client \ + && grep -i 'JAVA_TOOL_OPTIONS' /usr/local/bin/openshift-run-jnlp-client COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client # Add skopeo. From c8dbe2163ea114a94ccb87a205c1f26b59d04b9e Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 8 Sep 2022 17:15:30 +0200 Subject: [PATCH 174/217] Fixes flow-durability-hint.groovy --- .../configuration/init.groovy.d/flow-durability-hint.groovy | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jenkins/master/configuration/init.groovy.d/flow-durability-hint.groovy b/jenkins/master/configuration/init.groovy.d/flow-durability-hint.groovy index d99a61795..212ee002c 100644 --- a/jenkins/master/configuration/init.groovy.d/flow-durability-hint.groovy +++ b/jenkins/master/configuration/init.groovy.d/flow-durability-hint.groovy @@ -1,3 +1,4 @@ +import jenkins.model.Jenkins; import org.jenkinsci.plugins.workflow.flow.*; // See comments in https://github.com/opendevstack/ods-core/pull/1161 @@ -11,8 +12,9 @@ for (FlowDurabilityHint maybeHint : FlowDurabilityHint.values()) { println("\nPrevious value: ") println(GlobalDefaultFlowDurabilityLevel.getDefaultDurabilityHint()) +// https://javadoc.jenkins.io/jenkins/model/class-use/Jenkins.html Jenkins j = Jenkins.getInstanceOrNull() -def global_settings = j.getExtensionList(GlobalDefaultFlowDurabilityLevel.DescriptorImpl.class).get(0).durabilityHint = fdh; +j.getExtensionList(GlobalDefaultFlowDurabilityLevel.DescriptorImpl.class).get(0).durabilityHint = fdh; println("\nConfigured value: ") println(GlobalDefaultFlowDurabilityLevel.getDefaultDurabilityHint()) From 9ede78ade4d621e6ab1c88afe8ef30c71277c72d Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 8 Sep 2022 17:23:08 +0200 Subject: [PATCH 175/217] typo --- jenkins/agent-base/Dockerfile.centos7 | 4 +--- jenkins/agent-base/Dockerfile.ubi8 | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index 74b198a54..c80a6aa19 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -11,9 +11,7 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ GIT_LFS_VERSION=2.6.1 \ SKOPEO_VERSION=0.1.37-3 \ OSTREE_VERSION=2018.5-1 \ - JAVA_TOOL_OPTIONS=-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled \ - -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions \ - -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true + JAVA_TOOL_OPTIONS=-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true ARG APP_DNS ARG SNYK_DISTRIBUTION_URL diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index c4982e505..c19d19aec 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -9,9 +9,7 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ HELM_PLUGIN_DIFF_VERSION=3.3.2 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ GIT_LFS_VERSION=2.6.1 \ - JAVA_TOOL_OPTIONS=-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled \ - -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions \ - -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true + JAVA_TOOL_OPTIONS=-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true ARG APP_DNS ARG SNYK_DISTRIBUTION_URL From 19833fb2b5254ac8030802e592808d582f333d98 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 8 Sep 2022 17:34:06 +0200 Subject: [PATCH 176/217] typo --- jenkins/agent-base/Dockerfile.centos7 | 2 +- jenkins/agent-base/Dockerfile.ubi8 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index c80a6aa19..0526a63dd 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -11,7 +11,7 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ GIT_LFS_VERSION=2.6.1 \ SKOPEO_VERSION=0.1.37-3 \ OSTREE_VERSION=2018.5-1 \ - JAVA_TOOL_OPTIONS=-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true + JAVA_TOOL_OPTIONS="-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true" ARG APP_DNS ARG SNYK_DISTRIBUTION_URL diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index c19d19aec..b3ac3f222 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -9,7 +9,7 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ HELM_PLUGIN_DIFF_VERSION=3.3.2 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ GIT_LFS_VERSION=2.6.1 \ - JAVA_TOOL_OPTIONS=-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true + JAVA_TOOL_OPTIONS="-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true" ARG APP_DNS ARG SNYK_DISTRIBUTION_URL From 427165ae6b5283fc4b697e13d2a28c69adeeae81 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 00:13:51 +0200 Subject: [PATCH 177/217] Removes JAVA_GC_OPTS set in base containers. --- jenkins/agent-base/Dockerfile.centos7 | 9 +++++---- jenkins/agent-base/Dockerfile.ubi8 | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index 0526a63dd..40a37822f 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -119,12 +119,13 @@ RUN . /tmp/set_java_proxy.sh && echo $JAVA_OPTS # It is a problem very difficult to detect... RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ && sed -i 's|\#\!/bin/bash|\#\!/bin/bash -x|g' /usr/local/bin/openshift-run-jnlp-client \ - && sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*|echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + && sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ /usr/local/bin/openshift-run-jnlp-client \ - && sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*|echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + && sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ /usr/local/bin/openshift-run-jnlp-client \ - && head -n 10 /usr/local/bin/openshift-run-jnlp-client \ - && grep -i 'JAVA_TOOL_OPTIONS' /usr/local/bin/openshift-run-jnlp-client + && sed 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' /usr/local/bin/openshift-run-jnlp-client \ + && grep -B 3 -A 3 -i '\(bash\|JAVA_TOOL_OPTIONS\|JAVA_GC_OPTS\)' /usr/local/bin/openshift-run-jnlp-client + COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client # Add skopeo. diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index b3ac3f222..64af0fe21 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -116,12 +116,13 @@ RUN . /tmp/set_java_proxy.sh && echo $JAVA_OPTS # Customize entrypoint. RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ && sed -i 's|\#\!/bin/bash|\#\!/bin/bash -x|g' /usr/local/bin/openshift-run-jnlp-client \ - && sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*|echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + && sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ /usr/local/bin/openshift-run-jnlp-client \ - && sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*|echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + && sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ /usr/local/bin/openshift-run-jnlp-client \ - && head -n 10 /usr/local/bin/openshift-run-jnlp-client \ - && grep -i 'JAVA_TOOL_OPTIONS' /usr/local/bin/openshift-run-jnlp-client + && sed 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' /usr/local/bin/openshift-run-jnlp-client \ + && grep -B 3 -A 3 -i '\(bash\|JAVA_TOOL_OPTIONS\|JAVA_GC_OPTS\)' /usr/local/bin/openshift-run-jnlp-client + COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client # Add skopeo. From 71f8e0deb4477ebcf3f0b7fd84b373f7c68286f6 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 08:04:20 +0200 Subject: [PATCH 178/217] Improves logs readability. --- jenkins/agent-base/Dockerfile.centos7 | 14 +++++++------- jenkins/agent-base/Dockerfile.ubi8 | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index 40a37822f..a6ab7d4e2 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -44,7 +44,7 @@ RUN import_certs.sh # Install Sonar Scanner. RUN cd /tmp \ - && curl -LOv https://repo1.maven.org/maven2/org/sonarsource/scanner/cli/sonar-scanner-cli/${SONAR_SCANNER_VERSION}/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip \ + && curl -sSLOv https://repo1.maven.org/maven2/org/sonarsource/scanner/cli/sonar-scanner-cli/${SONAR_SCANNER_VERSION}/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip \ && unzip sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip \ && mv sonar-scanner-${SONAR_SCANNER_VERSION} /usr/local/sonar-scanner-cli \ && rm -rf sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip \ @@ -53,14 +53,14 @@ ENV PATH=/usr/local/sonar-scanner-cli/bin:$PATH # Add sq cnes report jar. RUN cd /tmp \ - && curl -Lv https://github.com/cnescatlab/sonar-cnes-report/releases/download/${CNES_REPORT_VERSION}/sonar-cnes-report-${CNES_REPORT_VERSION}.jar -o cnesreport.jar \ + && curl -sSLv https://github.com/cnescatlab/sonar-cnes-report/releases/download/${CNES_REPORT_VERSION}/sonar-cnes-report-${CNES_REPORT_VERSION}.jar -o cnesreport.jar \ && mkdir /usr/local/cnes \ && mv cnesreport.jar /usr/local/cnes/cnesreport.jar \ && chmod 777 /usr/local/cnes/cnesreport.jar # Install Tailor. RUN cd /tmp \ - && curl -LOv https://github.com/opendevstack/tailor/releases/download/v${TAILOR_VERSION}/tailor-linux-amd64 \ + && curl -sSLOv https://github.com/opendevstack/tailor/releases/download/v${TAILOR_VERSION}/tailor-linux-amd64 \ && mv tailor-linux-amd64 /usr/local/bin/tailor \ && chmod a+x /usr/local/bin/tailor \ && tailor version @@ -68,7 +68,7 @@ RUN cd /tmp \ # Install Helm. RUN cd /tmp \ && mkdir -p /tmp/helm \ - && curl -LO https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz \ + && curl -sSLO https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz \ && tar -zxvf helm-v${HELM_VERSION}-linux-amd64.tar.gz -C /tmp/helm \ && mv /tmp/helm/linux-amd64/helm /usr/local/bin/helm \ && chmod a+x /usr/local/bin/helm \ @@ -81,7 +81,7 @@ RUN cd /tmp \ # Install GIT-LFS extension https://git-lfs.github.com/. RUN cd /tmp \ && mkdir -p /tmp/git-lfs \ - && curl -LOv https://github.com/git-lfs/git-lfs/releases/download/v${GIT_LFS_VERSION}/git-lfs-linux-amd64-v${GIT_LFS_VERSION}.tar.gz \ + && curl -sSLOv https://github.com/git-lfs/git-lfs/releases/download/v${GIT_LFS_VERSION}/git-lfs-linux-amd64-v${GIT_LFS_VERSION}.tar.gz \ && tar -zxvf git-lfs-linux-amd64-v${GIT_LFS_VERSION}.tar.gz -C /tmp/git-lfs \ && bash /tmp/git-lfs/install.sh \ && git lfs version \ @@ -89,7 +89,7 @@ RUN cd /tmp \ # Optionally install snyk. RUN if [ -z $SNYK_DISTRIBUTION_URL ] ; then echo 'Skipping snyk installation!' ; else echo 'Installing snyk... getting binary from' $SNYK_DISTRIBUTION_URL \ - && curl -Lv $SNYK_DISTRIBUTION_URL --output snyk \ + && curl -sSLv $SNYK_DISTRIBUTION_URL --output snyk \ && mv snyk /usr/local/bin \ && chmod +rwx /usr/local/bin/snyk \ && mkdir -p $HOME/.config/configstore/ \ @@ -101,7 +101,7 @@ RUN if [ -z $SNYK_DISTRIBUTION_URL ] ; then echo 'Skipping snyk installation!' ; # Optionally install Aquasec. RUN if [ -z $AQUASEC_SCANNERCLI_URL ] ; then echo 'Skipping AquaSec installation!' ; else echo 'Installing AquaSec... getting binary from' $AQUASEC_SCANNERCLI_URL \ - && wget $AQUASEC_SCANNERCLI_URL -O aquasec \ + && curl -sSL $AQUASEC_SCANNERCLI_URL --output aquasec \ && mv aquasec /usr/local/bin \ && chmod +rwx /usr/local/bin/aquasec \ && echo 'AquaSec CLI version:' \ diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index 64af0fe21..d5f461d52 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -43,7 +43,7 @@ RUN import_certs.sh # Install Sonar Scanner. RUN cd /tmp \ - && curl -LO https://repo1.maven.org/maven2/org/sonarsource/scanner/cli/sonar-scanner-cli/${SONAR_SCANNER_VERSION}/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip \ + && curl -sSLO https://repo1.maven.org/maven2/org/sonarsource/scanner/cli/sonar-scanner-cli/${SONAR_SCANNER_VERSION}/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip \ && unzip sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip \ && mv sonar-scanner-${SONAR_SCANNER_VERSION} /usr/local/sonar-scanner-cli \ && rm -rf sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip \ @@ -52,14 +52,14 @@ ENV PATH=/usr/local/sonar-scanner-cli/bin:$PATH # Add sq cnes report jar. RUN cd /tmp \ - && curl -L https://github.com/cnescatlab/sonar-cnes-report/releases/download/${CNES_REPORT_VERSION}/sonar-cnes-report-${CNES_REPORT_VERSION}.jar -o cnesreport.jar \ + && curl -sSL https://github.com/cnescatlab/sonar-cnes-report/releases/download/${CNES_REPORT_VERSION}/sonar-cnes-report-${CNES_REPORT_VERSION}.jar -o cnesreport.jar \ && mkdir /usr/local/cnes \ && mv cnesreport.jar /usr/local/cnes/cnesreport.jar \ && chmod 777 /usr/local/cnes/cnesreport.jar # Install Tailor. RUN cd /tmp \ - && curl -LO https://github.com/opendevstack/tailor/releases/download/v${TAILOR_VERSION}/tailor-linux-amd64 \ + && curl -sSLO https://github.com/opendevstack/tailor/releases/download/v${TAILOR_VERSION}/tailor-linux-amd64 \ && mv tailor-linux-amd64 /usr/local/bin/tailor \ && chmod a+x /usr/local/bin/tailor \ && tailor version @@ -67,7 +67,7 @@ RUN cd /tmp \ # Install Helm. RUN cd /tmp \ && mkdir -p /tmp/helm \ - && curl -LO https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz \ + && curl -sSLO https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz \ && tar -zxvf helm-v${HELM_VERSION}-linux-amd64.tar.gz -C /tmp/helm \ && mv /tmp/helm/linux-amd64/helm /usr/local/bin/helm \ && chmod a+x /usr/local/bin/helm \ @@ -81,7 +81,7 @@ RUN cd /tmp \ # Install GIT-LFS extension https://git-lfs.github.com/. RUN cd /tmp \ && mkdir -p /tmp/git-lfs \ - && curl -LO https://github.com/git-lfs/git-lfs/releases/download/v${GIT_LFS_VERSION}/git-lfs-linux-amd64-v${GIT_LFS_VERSION}.tar.gz \ + && curl -sSLO https://github.com/git-lfs/git-lfs/releases/download/v${GIT_LFS_VERSION}/git-lfs-linux-amd64-v${GIT_LFS_VERSION}.tar.gz \ && tar -zxvf git-lfs-linux-amd64-v${GIT_LFS_VERSION}.tar.gz -C /tmp/git-lfs \ && bash /tmp/git-lfs/install.sh \ && git lfs version \ @@ -89,7 +89,7 @@ RUN cd /tmp \ # Optionally install snyk. RUN if [ -z $SNYK_DISTRIBUTION_URL ] ; then echo 'Skipping snyk installation!' ; else echo 'Installing snyk... getting binary from' $SNYK_DISTRIBUTION_URL \ - && curl -L $SNYK_DISTRIBUTION_URL --output snyk \ + && curl -sSL $SNYK_DISTRIBUTION_URL --output snyk \ && mv snyk /usr/local/bin \ && chmod +rwx /usr/local/bin/snyk \ && mkdir -p $HOME/.config/configstore/ \ @@ -101,7 +101,7 @@ RUN if [ -z $SNYK_DISTRIBUTION_URL ] ; then echo 'Skipping snyk installation!' ; # Optionally install Aquasec. RUN if [ -z $AQUASEC_SCANNERCLI_URL ] ; then echo 'Skipping AquaSec installation!' ; else echo 'Installing AquaSec... getting binary from' $AQUASEC_SCANNERCLI_URL \ - && wget $AQUASEC_SCANNERCLI_URL -O aquasec \ + && curl -sSL $AQUASEC_SCANNERCLI_URL --output aquasec \ && mv aquasec /usr/local/bin \ && chmod +rwx /usr/local/bin/aquasec \ && echo 'AquaSec CLI version:' \ From e2eee125743495d52dbdf8e2e6efc08263f516b7 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 08:20:05 +0200 Subject: [PATCH 179/217] Wait for manual intervention only if need to. --- tests/scripts/print-jenkins-log.sh | 8 ++++++-- tests/utils/jenkins.go | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index f6fbc1992..7b617225a 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -5,13 +5,16 @@ set -o pipefail ME="$(basename $0)" JENKINS_LOG_FILE="jenkins-downloaded-log.txt" JENKINS_SERVER_LOG_FILE="jenkins-server-log.txt" -WAIT_FOR_MANUAL_INTERVENTION="true" +WAIT_FOR_MANUAL_INTERVENTION="false" echo " " echo " " echo " " PROJECT=$1 BUILD_NAME=$2 +BUILD_SEEMS_TO_BE_COMPLETE=${3:-"false"} +echo "${ME}: Project: ${PROJECT} BuildName: ${BUILD_NAME} BuildSeemsToBeComplete: ${BUILD_SEEMS_TO_BE_COMPLETE} " +echo " " LOG_URL=$(oc -n ${PROJECT} get build ${BUILD_NAME} -o jsonpath='{.metadata.annotations.openshift\.io/jenkins-log-url}') echo " " echo "${ME}: Jenkins log url: ${LOG_URL}" @@ -91,7 +94,8 @@ echo " " echo "NO_JOB_LOGS=${NO_JOB_LOGS}" echo "NO_SERVER_LOGS=${NO_SERVER_LOGS}" echo " " -if [ "true" == "${NO_JOB_LOGS}" ] || [ "true" == "${NO_SERVER_LOGS}" ] || [ "true" == "${BAD_SERVER_LOGS}" ]; then +if [ "true" == "${NO_JOB_LOGS}" ] || [ "true" == "${NO_SERVER_LOGS}" ] || + [ "true" == "${BAD_SERVER_LOGS}" ] || [ "true" != "${BUILD_SEEMS_TO_BE_COMPLETE}" ]; then echo " " echo "A problem was found while retrieving Jenkins job/server logs." echo "Since we might need to enter the box and see what went wrong, this pipeline will wait for manual intervention. " diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index bbf91ed93..ae5393e8a 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -131,9 +131,11 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin count++ } + buildSeemsToBeComplete := true // in case the the build was sort of never really started - get the jenkins pod log, maybe there // is a plugin / sync problem? - if build.Status.Phase == v1.BuildPhaseNew || build.Status.Phase == v1.BuildPhasePending { + if (build.Status.Phase == v1.BuildPhaseNew || build.Status.Phase == v1.BuildPhasePending || build.Status.Phase == v1.BuildPhaseRunning) { + buildSeemsToBeComplete := false // get the jenkins pod log stdoutJPod, stderrJPod, errJPod := RunScriptFromBaseDir( "tests/scripts/print-jenkins-pod-log.sh", @@ -153,6 +155,7 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin []string{ jenkinsNamespace, buildName, + buildSeemsToBeComplete }, []string{}) if err != nil { From 380f74a33325423241edb25d001259e8ad1ef594 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 08:22:36 +0200 Subject: [PATCH 180/217] gofmt --- tests/scripts/print-jenkins-log.sh | 1 + tests/utils/jenkins.go | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index 7b617225a..624c93209 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -15,6 +15,7 @@ BUILD_NAME=$2 BUILD_SEEMS_TO_BE_COMPLETE=${3:-"false"} echo "${ME}: Project: ${PROJECT} BuildName: ${BUILD_NAME} BuildSeemsToBeComplete: ${BUILD_SEEMS_TO_BE_COMPLETE} " echo " " + LOG_URL=$(oc -n ${PROJECT} get build ${BUILD_NAME} -o jsonpath='{.metadata.annotations.openshift\.io/jenkins-log-url}') echo " " echo "${ME}: Jenkins log url: ${LOG_URL}" diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index ae5393e8a..f8903048b 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -131,11 +131,11 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin count++ } - buildSeemsToBeComplete := true + buildSeemsToBeComplete := true // in case the the build was sort of never really started - get the jenkins pod log, maybe there // is a plugin / sync problem? - if (build.Status.Phase == v1.BuildPhaseNew || build.Status.Phase == v1.BuildPhasePending || build.Status.Phase == v1.BuildPhaseRunning) { - buildSeemsToBeComplete := false + if build.Status.Phase == v1.BuildPhaseNew || build.Status.Phase == v1.BuildPhasePending || build.Status.Phase == v1.BuildPhaseRunning { + buildSeemsToBeComplete := false // get the jenkins pod log stdoutJPod, stderrJPod, errJPod := RunScriptFromBaseDir( "tests/scripts/print-jenkins-pod-log.sh", @@ -155,7 +155,7 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin []string{ jenkinsNamespace, buildName, - buildSeemsToBeComplete + buildSeemsToBeComplete, }, []string{}) if err != nil { From 7b9fe3580a0618781bac9616dd11d4008825a895 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 08:35:34 +0200 Subject: [PATCH 181/217] golangci-lint --- tests/utils/jenkins.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index f8903048b..117b499e0 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -149,13 +149,18 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin } } + buildSeemsToBeCompleteStr := "false" + if buildSeemsToBeComplete { + buildSeemsToBeCompleteStr := "true" + } + // get the jenkins run build log stdout, stderr, err := RunScriptFromBaseDir( "tests/scripts/print-jenkins-log.sh", []string{ jenkinsNamespace, buildName, - buildSeemsToBeComplete, + buildSeemsToBeCompleteStr, }, []string{}) if err != nil { From 1f19b250b1e87531e889dfe3840552aa82d9a447 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 08:49:17 +0200 Subject: [PATCH 182/217] golangci-lint fixes. --- tests/utils/jenkins.go | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index 117b499e0..d1c1b849e 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -153,6 +153,7 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin if buildSeemsToBeComplete { buildSeemsToBeCompleteStr := "true" } + fmt.Printf("Build seems to be complete ? : %s \n", buildSeemsToBeCompleteStr) // get the jenkins run build log stdout, stderr, err := RunScriptFromBaseDir( From c8de8e651c5f8933fd21aba66f0a16edce8664dd Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 09:13:02 +0200 Subject: [PATCH 183/217] typo or bug in golangci-lint ? --- tests/utils/jenkins.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index d1c1b849e..8e5137efc 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -131,11 +131,11 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin count++ } - buildSeemsToBeComplete := true + buildSeemsToBeComplete := "true" // in case the the build was sort of never really started - get the jenkins pod log, maybe there // is a plugin / sync problem? if build.Status.Phase == v1.BuildPhaseNew || build.Status.Phase == v1.BuildPhasePending || build.Status.Phase == v1.BuildPhaseRunning { - buildSeemsToBeComplete := false + buildSeemsToBeComplete := "false" // get the jenkins pod log stdoutJPod, stderrJPod, errJPod := RunScriptFromBaseDir( "tests/scripts/print-jenkins-pod-log.sh", @@ -149,11 +149,7 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin } } - buildSeemsToBeCompleteStr := "false" - if buildSeemsToBeComplete { - buildSeemsToBeCompleteStr := "true" - } - fmt.Printf("Build seems to be complete ? : %s \n", buildSeemsToBeCompleteStr) + fmt.Printf("Build seems to be complete ? : %s \n", buildSeemsToBeComplete) // get the jenkins run build log stdout, stderr, err := RunScriptFromBaseDir( @@ -161,7 +157,7 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin []string{ jenkinsNamespace, buildName, - buildSeemsToBeCompleteStr, + buildSeemsToBeComplete, }, []string{}) if err != nil { From 641703c89a00a41e81311b4d8a6d946efaacaddc Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 09:21:29 +0200 Subject: [PATCH 184/217] if not compared of passed to a method, not used. --- tests/utils/jenkins.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index 8e5137efc..510fc3ec5 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -149,7 +149,9 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin } } - fmt.Printf("Build seems to be complete ? : %s \n", buildSeemsToBeComplete) + if buildSeemsToBeComplete == "true" || buildSeemsToBeComplete != "true" { + fmt.Printf("Build seems to be complete ? : %s \n", buildSeemsToBeComplete) + } // get the jenkins run build log stdout, stderr, err := RunScriptFromBaseDir( From 24cf0faef72e8543927a421fa1f5503476de61fe Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 09:33:01 +0200 Subject: [PATCH 185/217] Upgrades golangci-lint to v1.49.0 --- .github/workflows/continuous-integration-workflow.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/continuous-integration-workflow.yml b/.github/workflows/continuous-integration-workflow.yml index 13201ee49..7e8b4ab4a 100644 --- a/.github/workflows/continuous-integration-workflow.yml +++ b/.github/workflows/continuous-integration-workflow.yml @@ -122,7 +122,7 @@ jobs: name: Download golangci-lint run: | curl -sSfL --output /tmp/golangci-lint.sh https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh - cat /tmp/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.46.2 + cat /tmp/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.49.0 - name: Run linter working-directory: jenkins/webhook-proxy @@ -201,7 +201,7 @@ jobs: name: Verify all Go tests pass linting uses: golangci/golangci-lint-action@v3 with: - version: v1.46.2 + version: v1.49.0 working-directory: tests args: --timeout=10m - From a95e7ae816d745bf892b2c5e759f9ad565099671 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 09:46:12 +0200 Subject: [PATCH 186/217] Use a method instead of a 'unused' var --- tests/utils/jenkins.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index 510fc3ec5..3905fdcf5 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -131,11 +131,9 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin count++ } - buildSeemsToBeComplete := "true" // in case the the build was sort of never really started - get the jenkins pod log, maybe there // is a plugin / sync problem? if build.Status.Phase == v1.BuildPhaseNew || build.Status.Phase == v1.BuildPhasePending || build.Status.Phase == v1.BuildPhaseRunning { - buildSeemsToBeComplete := "false" // get the jenkins pod log stdoutJPod, stderrJPod, errJPod := RunScriptFromBaseDir( "tests/scripts/print-jenkins-pod-log.sh", @@ -149,17 +147,13 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin } } - if buildSeemsToBeComplete == "true" || buildSeemsToBeComplete != "true" { - fmt.Printf("Build seems to be complete ? : %s \n", buildSeemsToBeComplete) - } - // get the jenkins run build log stdout, stderr, err := RunScriptFromBaseDir( "tests/scripts/print-jenkins-log.sh", []string{ jenkinsNamespace, buildName, - buildSeemsToBeComplete, + isBuildCompleteInPrinciple(build), }, []string{}) if err != nil { @@ -198,6 +192,16 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin return stdout, nil } +func isBuildCompleteInPrinciple(build) string { + if build.Status.Phase == v1.BuildPhaseNew || build.Status.Phase == v1.BuildPhasePending || build.Status.Phase == v1.BuildPhaseRunning { + fmt.Printf("Build seems to be complete ? : false \n") + return false + } + + fmt.Printf("Build seems to be complete ? : true \n") + return true +} + func VerifyJenkinsRunAttachments(projectName string, buildName string, artifactsToVerify []string) error { if len(artifactsToVerify) == 0 { return nil From a993e9e9a4b7aad6e988ae9a81f231d9e2c69b74 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 10:08:17 +0200 Subject: [PATCH 187/217] Go has execution contexts. --- tests/utils/jenkins.go | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index 3905fdcf5..64358dd17 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -131,9 +131,11 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin count++ } + buildSeemsToBeComplete := "true" // in case the the build was sort of never really started - get the jenkins pod log, maybe there // is a plugin / sync problem? if build.Status.Phase == v1.BuildPhaseNew || build.Status.Phase == v1.BuildPhasePending || build.Status.Phase == v1.BuildPhaseRunning { + buildSeemsToBeComplete = "false" // get the jenkins pod log stdoutJPod, stderrJPod, errJPod := RunScriptFromBaseDir( "tests/scripts/print-jenkins-pod-log.sh", @@ -147,13 +149,15 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin } } + fmt.Printf("Build seems to be complete ? : %s \n", buildSeemsToBeComplete) + // get the jenkins run build log stdout, stderr, err := RunScriptFromBaseDir( "tests/scripts/print-jenkins-log.sh", []string{ jenkinsNamespace, buildName, - isBuildCompleteInPrinciple(build), + buildSeemsToBeComplete, }, []string{}) if err != nil { @@ -192,16 +196,6 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin return stdout, nil } -func isBuildCompleteInPrinciple(build) string { - if build.Status.Phase == v1.BuildPhaseNew || build.Status.Phase == v1.BuildPhasePending || build.Status.Phase == v1.BuildPhaseRunning { - fmt.Printf("Build seems to be complete ? : false \n") - return false - } - - fmt.Printf("Build seems to be complete ? : true \n") - return true -} - func VerifyJenkinsRunAttachments(projectName string, buildName string, artifactsToVerify []string) error { if len(artifactsToVerify) == 0 { return nil From e1d15102af6bea4edd2badfc8c90a2e17ea4a03e Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 10:09:47 +0200 Subject: [PATCH 188/217] gofmt --- tests/utils/jenkins.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index 64358dd17..ffcfa6f9e 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -149,7 +149,7 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin } } - fmt.Printf("Build seems to be complete ? : %s \n", buildSeemsToBeComplete) + fmt.Printf("Build seems to be complete ? : %s \n", buildSeemsToBeComplete) // get the jenkins run build log stdout, stderr, err := RunScriptFromBaseDir( From a43d0c6b18332dfc28654a63f970cabe15f1c069 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 10:51:31 +0200 Subject: [PATCH 189/217] tlsConfig.BuildNameToCertificate() deprecated --- jenkins/webhook-proxy/main.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/jenkins/webhook-proxy/main.go b/jenkins/webhook-proxy/main.go index 64e302997..465d777d4 100644 --- a/jenkins/webhook-proxy/main.go +++ b/jenkins/webhook-proxy/main.go @@ -787,7 +787,11 @@ func getSecureClient() (*http.Client, error) { Certificates: []tls.Certificate{}, RootCAs: caCertPool, } - tlsConfig.BuildNameToCertificate() + // Deprecated. + // The Config.NameToCertificate field, which only supports associating a + // single certificate with a give name, is now deprecated and should be + // left as nil. https://go.dev/pkg/crypto/tls/ + // tlsConfig.BuildNameToCertificate() transport := &http.Transport{TLSClientConfig: tlsConfig} return &http.Client{Transport: transport, Timeout: 10 * time.Second}, nil } From 418c670e62c970691532b330b6cd2c377ada53fa Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 13:25:05 +0200 Subject: [PATCH 190/217] typo --- jenkins/agent-base/Dockerfile.centos7 | 2 +- jenkins/agent-base/Dockerfile.ubi8 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index a6ab7d4e2..3394c3bff 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -123,7 +123,7 @@ RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ /usr/local/bin/openshift-run-jnlp-client \ && sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ /usr/local/bin/openshift-run-jnlp-client \ - && sed 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' /usr/local/bin/openshift-run-jnlp-client \ + && sed -i 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' /usr/local/bin/openshift-run-jnlp-client \ && grep -B 3 -A 3 -i '\(bash\|JAVA_TOOL_OPTIONS\|JAVA_GC_OPTS\)' /usr/local/bin/openshift-run-jnlp-client COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index d5f461d52..bfb5a4c2b 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -120,7 +120,7 @@ RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ /usr/local/bin/openshift-run-jnlp-client \ && sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ /usr/local/bin/openshift-run-jnlp-client \ - && sed 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' /usr/local/bin/openshift-run-jnlp-client \ + && sed -i 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' /usr/local/bin/openshift-run-jnlp-client \ && grep -B 3 -A 3 -i '\(bash\|JAVA_TOOL_OPTIONS\|JAVA_GC_OPTS\)' /usr/local/bin/openshift-run-jnlp-client COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client From 13619ef0066aba28016b9709c9c0b0d571397a7d Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 9 Sep 2022 15:36:31 +0200 Subject: [PATCH 191/217] Do not wait for server logs (unavailable). --- tests/scripts/print-jenkins-log.sh | 41 +++++++++++++++++++----------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index 624c93209..32aa89023 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -2,7 +2,6 @@ set -eu set -o pipefail -ME="$(basename $0)" JENKINS_LOG_FILE="jenkins-downloaded-log.txt" JENKINS_SERVER_LOG_FILE="jenkins-server-log.txt" WAIT_FOR_MANUAL_INTERVENTION="false" @@ -13,6 +12,7 @@ echo " " PROJECT=$1 BUILD_NAME=$2 BUILD_SEEMS_TO_BE_COMPLETE=${3:-"false"} +ME="$(basename $0)[${BUILD_NAME}]" echo "${ME}: Project: ${PROJECT} BuildName: ${BUILD_NAME} BuildSeemsToBeComplete: ${BUILD_SEEMS_TO_BE_COMPLETE} " echo " " @@ -48,7 +48,8 @@ echo " " sleep 5 if [ -f ${JENKINS_SERVER_LOG_FILE} ]; then - rm -fv ${JENKINS_SERVER_LOG_FILE} || echo "Problem removing existing log file (${JENKINS_SERVER_LOG_FILE})." + rm -fv ${JENKINS_SERVER_LOG_FILE} || \ + echo "${ME}: Problem removing existing log file (${JENKINS_SERVER_LOG_FILE})." fi # Does not work :-( @@ -60,14 +61,15 @@ JENKINS_SERVER_HOSTNAME="$(echo ${LOG_URL} | cut -d "/" -f 3)" JENKINS_SERVER_LOGS_URL_TAIL="/manage/log/all" JENKINS_SERVER_LOGS_URL="${JENKINS_SERVER_PROTOCOL}//${JENKINS_SERVER_HOSTNAME}${JENKINS_SERVER_LOGS_URL_TAIL}" -echo "Jenkins server log url: ${JENKINS_SERVER_LOGS_URL}" +echo "${ME}: WARN: The following functionality is not working well yet... :(" +echo "${ME}: Jenkins server log url: ${JENKINS_SERVER_LOGS_URL}" curl --insecure -sSL --header "Authorization: Bearer ${TOKEN}" ${JENKINS_SERVER_LOGS_URL} > ${JENKINS_SERVER_LOG_FILE} || \ echo "${ME}: Error retrieving jenkins server logs with curl, needed to eval problem in failed job ( ${BUILD_NAME} ). " echo " " echo " " -echo "** JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " +echo "${ME}: ** JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " echo " " NO_SERVER_LOGS="true" while read -r line; do @@ -78,7 +80,7 @@ while read -r line; do done < ${JENKINS_SERVER_LOG_FILE} echo " " -echo "ENDS JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " +echo "${ME}: ENDS JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " echo " " echo " " echo " " @@ -92,23 +94,32 @@ if grep -q 'Still waiting to schedule task' ${JENKINS_LOG_FILE} ; then fi echo " " -echo "NO_JOB_LOGS=${NO_JOB_LOGS}" -echo "NO_SERVER_LOGS=${NO_SERVER_LOGS}" +echo "${ME}: NO_JOB_LOGS=${NO_JOB_LOGS}" +echo "${ME}: NO_SERVER_LOGS=${NO_SERVER_LOGS}" +echo "${ME}: BAD_SERVER_LOGS=${BAD_SERVER_LOGS}" echo " " -if [ "true" == "${NO_JOB_LOGS}" ] || [ "true" == "${NO_SERVER_LOGS}" ] || - [ "true" == "${BAD_SERVER_LOGS}" ] || [ "true" != "${BUILD_SEEMS_TO_BE_COMPLETE}" ]; then +if [ "true" == "${NO_JOB_LOGS}" ] || [ "true" == "${BAD_SERVER_LOGS}" ]; then echo " " - echo "A problem was found while retrieving Jenkins job/server logs." - echo "Since we might need to enter the box and see what went wrong, this pipeline will wait for manual intervention. " - echo "Enjoy..." + echo "${ME}: A problem was found while retrieving Jenkins job/server logs." + echo "${ME}: Since we might need to enter the box and see what went wrong, " + echo "${ME}: this pipeline will wait for manual intervention. " + echo "${ME}: If you just want to continue, kill the sleep process." + echo "${ME}: Enjoy..." WAIT_FOR_MANUAL_INTERVENTION="true" fi +echo "${BUILD_SEEMS_TO_BE_COMPLETE}" | grep -qi "true" || \ + echo "Build is not complete: ${BUILD_SEEMS_TO_BE_COMPLETE}" +echo "${BUILD_SEEMS_TO_BE_COMPLETE}" | grep -qi "true" || \ + WAIT_FOR_MANUAL_INTERVENTION="true" + if [ "true" == "${WAIT_FOR_MANUAL_INTERVENTION}" ]; then echo " " - echo "WAITING FOR MANUAL INTERVENTION ( WAIT_FOR_MANUAL_INTERVENTION = true ) " - echo "sleep 72000 ( 20h )" + echo "${ME}: WAITING FOR MANUAL INTERVENTION ( WAIT_FOR_MANUAL_INTERVENTION = true ) " + echo "${ME}: sleep 72000 ( 20h )" + echo " " + echo " " + sleep 72000 || echo "${ME}: Sleep returned value != 0. Maybe aborted ?? " echo " " echo " " - sleep 72000 fi From d773d3da8195e44131fa3d870c0c22d32d2abb4b Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 12 Sep 2022 09:28:28 +0200 Subject: [PATCH 192/217] Error only when timeout getting pod takes place. --- tests/scripts/print-jenkins-log.sh | 106 +++++++++++++---------------- tests/utils/jenkins.go | 45 ++++++++---- 2 files changed, 77 insertions(+), 74 deletions(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index 32aa89023..6c5909787 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -4,23 +4,30 @@ set -o pipefail JENKINS_LOG_FILE="jenkins-downloaded-log.txt" JENKINS_SERVER_LOG_FILE="jenkins-server-log.txt" -WAIT_FOR_MANUAL_INTERVENTION="false" +OC_ERROR="false" +LOG_URL="http://localhost" +TOKEN="none" echo " " echo " " echo " " PROJECT=$1 BUILD_NAME=$2 -BUILD_SEEMS_TO_BE_COMPLETE=${3:-"false"} ME="$(basename $0)[${BUILD_NAME}]" -echo "${ME}: Project: ${PROJECT} BuildName: ${BUILD_NAME} BuildSeemsToBeComplete: ${BUILD_SEEMS_TO_BE_COMPLETE} " +echo "${ME}: Project: ${PROJECT} BuildName: ${BUILD_NAME} " echo " " -LOG_URL=$(oc -n ${PROJECT} get build ${BUILD_NAME} -o jsonpath='{.metadata.annotations.openshift\.io/jenkins-log-url}') +LOG_URL=$(oc -n ${PROJECT} get build ${BUILD_NAME} -o jsonpath='{.metadata.annotations.openshift\.io/jenkins-log-url}' || echo "OC_ERROR" ) + echo " " echo "${ME}: Jenkins log url: ${LOG_URL}" echo " " -TOKEN=$(oc -n ${PROJECT} get sa/jenkins --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc -n ${PROJECT} get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -d -) +if [ "OC_ERROR" == "${LOG_URL}" ]; then + OC_ERROR="true" + TOKEN="OC_ERROR" +else + TOKEN=$(oc -n ${PROJECT} get sa/jenkins --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc -n ${PROJECT} get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -d -) +fi if [ -f ${JENKINS_LOG_FILE} ]; then rm -fv ${JENKINS_LOG_FILE} || echo "Problem removing existing log file (${JENKINS_LOG_FILE})." @@ -56,70 +63,51 @@ fi # oc login -u developer -p anypwd # TOKEN=$(oc -n ${PROJECT} get sa/jenkins --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc -n ${PROJECT} get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -d -) -JENKINS_SERVER_PROTOCOL="$(echo ${LOG_URL} | cut -d "/" -f 1)" -JENKINS_SERVER_HOSTNAME="$(echo ${LOG_URL} | cut -d "/" -f 3)" -JENKINS_SERVER_LOGS_URL_TAIL="/manage/log/all" -JENKINS_SERVER_LOGS_URL="${JENKINS_SERVER_PROTOCOL}//${JENKINS_SERVER_HOSTNAME}${JENKINS_SERVER_LOGS_URL_TAIL}" - -echo "${ME}: WARN: The following functionality is not working well yet... :(" -echo "${ME}: Jenkins server log url: ${JENKINS_SERVER_LOGS_URL}" -curl --insecure -sSL --header "Authorization: Bearer ${TOKEN}" ${JENKINS_SERVER_LOGS_URL} > ${JENKINS_SERVER_LOG_FILE} || \ - echo "${ME}: Error retrieving jenkins server logs with curl, needed to eval problem in failed job ( ${BUILD_NAME} ). " - -echo " " -echo " " - -echo "${ME}: ** JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " -echo " " -NO_SERVER_LOGS="true" -while read -r line; do - if [ ! -z "$line" ] && [ "" != "${line}" ]; then - NO_SERVER_LOGS="false" - fi - echo "JNK_LOGS: $line "; -done < ${JENKINS_SERVER_LOG_FILE} - -echo " " -echo "${ME}: ENDS JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " -echo " " -echo " " -echo " " -sleep 10 +# JENKINS_SERVER_PROTOCOL="$(echo ${LOG_URL} | cut -d "/" -f 1)" +# JENKINS_SERVER_HOSTNAME="$(echo ${LOG_URL} | cut -d "/" -f 3)" +# JENKINS_SERVER_LOGS_URL_TAIL="/manage/log/all" +# JENKINS_SERVER_LOGS_URL="${JENKINS_SERVER_PROTOCOL}//${JENKINS_SERVER_HOSTNAME}${JENKINS_SERVER_LOGS_URL_TAIL}" + +# echo "${ME}: WARN: The following functionality is not working well yet... :(" +# echo "${ME}: Jenkins server log url: ${JENKINS_SERVER_LOGS_URL}" +# curl --insecure -sSL --header "Authorization: Bearer ${TOKEN}" ${JENKINS_SERVER_LOGS_URL} > ${JENKINS_SERVER_LOG_FILE} || \ +# echo "${ME}: Error retrieving jenkins server logs with curl, needed to eval problem in failed job ( ${BUILD_NAME} ). " + +# echo " " +# echo " " + +# echo "${ME}: ** JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " +# echo " " +# NO_SERVER_LOGS="true" +# while read -r line; do +# if [ ! -z "$line" ] && [ "" != "${line}" ]; then +# NO_SERVER_LOGS="false" +# fi +# echo "JNK_LOGS: $line "; +# done < ${JENKINS_SERVER_LOG_FILE} + +# echo " " +# echo "${ME}: ENDS JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " +# echo " " +# echo " " +# echo " " +# sleep 10 BAD_SERVER_LOGS="false" if grep -q 'Still waiting to schedule task' ${JENKINS_LOG_FILE} ; then - if grep -q 'HTTP ERROR' ${JENKINS_SERVER_LOG_FILE} ; then +# if grep -q 'HTTP ERROR' ${JENKINS_SERVER_LOG_FILE} ; then BAD_SERVER_LOGS="true" - fi +# fi fi echo " " echo "${ME}: NO_JOB_LOGS=${NO_JOB_LOGS}" -echo "${ME}: NO_SERVER_LOGS=${NO_SERVER_LOGS}" +# echo "${ME}: NO_SERVER_LOGS=${NO_SERVER_LOGS}" echo "${ME}: BAD_SERVER_LOGS=${BAD_SERVER_LOGS}" echo " " if [ "true" == "${NO_JOB_LOGS}" ] || [ "true" == "${BAD_SERVER_LOGS}" ]; then - echo " " - echo "${ME}: A problem was found while retrieving Jenkins job/server logs." - echo "${ME}: Since we might need to enter the box and see what went wrong, " - echo "${ME}: this pipeline will wait for manual intervention. " - echo "${ME}: If you just want to continue, kill the sleep process." - echo "${ME}: Enjoy..." - WAIT_FOR_MANUAL_INTERVENTION="true" + echo "${ME}: ERROR: Logs retrieved are not good enough." + exit 1 fi -echo "${BUILD_SEEMS_TO_BE_COMPLETE}" | grep -qi "true" || \ - echo "Build is not complete: ${BUILD_SEEMS_TO_BE_COMPLETE}" -echo "${BUILD_SEEMS_TO_BE_COMPLETE}" | grep -qi "true" || \ - WAIT_FOR_MANUAL_INTERVENTION="true" - -if [ "true" == "${WAIT_FOR_MANUAL_INTERVENTION}" ]; then - echo " " - echo "${ME}: WAITING FOR MANUAL INTERVENTION ( WAIT_FOR_MANUAL_INTERVENTION = true ) " - echo "${ME}: sleep 72000 ( 20h )" - echo " " - echo " " - sleep 72000 || echo "${ME}: Sleep returned value != 0. Maybe aborted ?? " - echo " " - echo " " -fi +exit 0 diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index ffcfa6f9e..89c2b3b19 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -132,6 +132,8 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin } buildSeemsToBeComplete := "true" + errorGettingInfoNeeded := "false" + // in case the the build was sort of never really started - get the jenkins pod log, maybe there // is a plugin / sync problem? if build.Status.Phase == v1.BuildPhaseNew || build.Status.Phase == v1.BuildPhasePending || build.Status.Phase == v1.BuildPhaseRunning { @@ -143,7 +145,10 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin jenkinsNamespace, }, []string{}) if errJPod != nil { - fmt.Printf("Error getting jenkins pod logs: %s\nerr:%s", errJPod, stderrJPod) + fmt.Printf("Error getting jenkins pod logs using "+ + "tests/scripts/print-jenkins-pod-log.sh: %s\nerr:%s", + errJPod, stderrJPod) + errorGettingInfoNeeded = "true" } else { fmt.Printf("Jenkins pod logs: \n%s \nerr:%s", stdoutJPod, stderrJPod) } @@ -161,25 +166,16 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin }, []string{}) if err != nil { - return "", fmt.Errorf( - "Could not execute tests/scripts/print-jenkins-log.sh\n - err:%s\n - stderr:%s", + fmt.Printf("ERROR: Could not get Jenkins logs using "+ + "tests/scripts/print-jenkins-log.sh\n - err:%s\n - stderr:%s", err, - stderr, - ) + stderr) + errorGettingInfoNeeded = "true" } // print in any case, otherwise when err != nil no logs are shown fmt.Printf("buildlog: %s\n%s", buildName, stdout) - // still running, or we could not find it ... - if count >= max { - return "", fmt.Errorf( - "Timeout during build: %s\nStdOut: %s\nStdErr: %s", - buildName, - stdout, - stderr) - } - // get (executed) jenkins stages from run - the caller can compare against the golden record stdout, stderr, err = RunScriptFromBaseDir( "tests/scripts/print-jenkins-json-status.sh", @@ -189,8 +185,27 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin }, []string{}) if err != nil { - return "", fmt.Errorf("Error getting jenkins stages for: %s\rError: %s, %s, %s", + fmt.Printf("ERROR: Problem getting jenkins stages for: %s\rError: %s, %s, %s", buildName, err, stdout, stderr) + errorGettingInfoNeeded = "true" + } + + // still running, or we could not find it ... + if count >= max { + return "", fmt.Errorf( + "Timeout during build: %s\nStdOut: %s\nStdErr: %s", + buildName, + stdout, + stderr) + } + + if (errorGettingInfoNeeded == "true") || (buildSeemsToBeComplete == "false") { + if buildSeemsToBeComplete == "false" { + fmt.Printf("ERROR: Something went wrong. Look for the word ERROR above.") + fmt.Printf("ERROR: Sleeping for 20h to allow manual intervention.") + time.Sleep(20 * time.Hour) + } + return "", fmt.Errorf("ERROR: Something went wrong. Look for the word ERROR above.") } return stdout, nil From 6f1c8f1b98225a757fa7bd2d4d3699e458cdbb81 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 12 Sep 2022 12:47:26 +0200 Subject: [PATCH 193/217] Need to check in a more advanced way... --- tests/scripts/print-jenkins-json-status.sh | 10 +++++++++- tests/scripts/print-jenkins-log.sh | 9 ++++++--- tests/utils/jenkins.go | 21 ++++++++++++++++++++- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/tests/scripts/print-jenkins-json-status.sh b/tests/scripts/print-jenkins-json-status.sh index 281b1f72a..9d3502bde 100755 --- a/tests/scripts/print-jenkins-json-status.sh +++ b/tests/scripts/print-jenkins-json-status.sh @@ -2,6 +2,14 @@ set -eu set -o pipefail +OC_ERROR="false" oc get build $1 -n $2 \ -ojsonpath='{.metadata.annotations.openshift\.io/jenkins-status-json}' \ - | jq '[.stages[] | {stage: .name, status: .status}]' + | jq '[.stages[] | {stage: .name, status: .status}]' || OC_ERROR="true" + +if [ "false" == "${OC_ERROR}" ]; then + echo " " + echo "ERROR: Could not get oc build status named $1 in namespace $2 !!! " + echo " " +fi + diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index 6c5909787..d1dc0425a 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -95,9 +95,9 @@ fi BAD_SERVER_LOGS="false" if grep -q 'Still waiting to schedule task' ${JENKINS_LOG_FILE} ; then -# if grep -q 'HTTP ERROR' ${JENKINS_SERVER_LOG_FILE} ; then + if ! grep -q 'Finished: SUCCESS' ${JENKINS_LOG_FILE} ; then BAD_SERVER_LOGS="true" -# fi + fi fi echo " " @@ -106,8 +106,11 @@ echo "${ME}: NO_JOB_LOGS=${NO_JOB_LOGS}" echo "${ME}: BAD_SERVER_LOGS=${BAD_SERVER_LOGS}" echo " " if [ "true" == "${NO_JOB_LOGS}" ] || [ "true" == "${BAD_SERVER_LOGS}" ]; then + echo " " echo "${ME}: ERROR: Logs retrieved are not good enough." - exit 1 + echo " " + # WARNING: If we exit 1, the whole process aborts !!! + # exit 1 fi exit 0 diff --git a/tests/utils/jenkins.go b/tests/utils/jenkins.go index 89c2b3b19..c484c17e7 100644 --- a/tests/utils/jenkins.go +++ b/tests/utils/jenkins.go @@ -174,7 +174,18 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin } // print in any case, otherwise when err != nil no logs are shown - fmt.Printf("buildlog: %s\n%s", buildName, stdout) + fmt.Printf("[Jenkins buildlog]: buildName: %s\n%s", buildName, stdout) + + problematicSubString := "Still waiting to schedule task" + exceptionProblematicSubString := "Finished: SUCCESS" + if len(stdout) > 0 && (strings.Contains(stdout, problematicSubString)) { + if !strings.Contains(stdout, exceptionProblematicSubString) { + fmt.Printf("Jenkins log contains problematic substring ( %s ) and "+ + " it does not contain exception case string: ( %s ) \n", problematicSubString, + exceptionProblematicSubString) + errorGettingInfoNeeded = "true" + } + } // get (executed) jenkins stages from run - the caller can compare against the golden record stdout, stderr, err = RunScriptFromBaseDir( @@ -190,6 +201,14 @@ func RetrieveJenkinsBuildStagesForBuild(jenkinsNamespace string, buildName strin errorGettingInfoNeeded = "true" } + // print in any case, otherwise when err != nil no logs are shown + fmt.Printf("[get oc build status]: buildName: %s\n%s", buildName, stdout) + + problematicSubString2 := "ERROR: Could not get oc build status named" + if len(stdout) > 0 && (strings.Contains(stdout, problematicSubString2)) { + errorGettingInfoNeeded = "true" + } + // still running, or we could not find it ... if count >= max { return "", fmt.Errorf( From a2eed40c35718a649df952a81e32d6f710225471 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 12 Sep 2022 14:44:47 +0200 Subject: [PATCH 194/217] typo in comparison --- tests/scripts/print-jenkins-json-status.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/scripts/print-jenkins-json-status.sh b/tests/scripts/print-jenkins-json-status.sh index 9d3502bde..07edddea2 100755 --- a/tests/scripts/print-jenkins-json-status.sh +++ b/tests/scripts/print-jenkins-json-status.sh @@ -7,7 +7,7 @@ oc get build $1 -n $2 \ -ojsonpath='{.metadata.annotations.openshift\.io/jenkins-status-json}' \ | jq '[.stages[] | {stage: .name, status: .status}]' || OC_ERROR="true" -if [ "false" == "${OC_ERROR}" ]; then +if [ "false" != "${OC_ERROR}" ]; then echo " " echo "ERROR: Could not get oc build status named $1 in namespace $2 !!! " echo " " From bfc44750fabf70240147025b380ea37933f465c8 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 12 Sep 2022 15:31:30 +0200 Subject: [PATCH 195/217] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 013396a74..9ba6bf018 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ - Update Aqua CLI version ([#1173](https://github.com/opendevstack/ods-core/pull/1173)) - Fix CI/CD problems in Jenkins pipelines ([#1177](https://github.com/opendevstack/ods-core/pull/1177)) - Fixes Python agent does not seems to have java in the path ([#685](https://github.com/opendevstack/ods-quickstarters/issues/685)) +- Removes existing differences between jenkins agent base image in Centos 7 and UBI 8 ([#1181](https://github.com/opendevstack/ods-core/pull/1181)) ### Added From e01a8fadce25cb3c1216cea72765b37c5f58c60c Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Tue, 13 Sep 2022 12:47:55 +0200 Subject: [PATCH 196/217] Removes not working code. --- tests/scripts/print-jenkins-log.sh | 34 ------------------------------ 1 file changed, 34 deletions(-) diff --git a/tests/scripts/print-jenkins-log.sh b/tests/scripts/print-jenkins-log.sh index d1dc0425a..3da6d75bc 100755 --- a/tests/scripts/print-jenkins-log.sh +++ b/tests/scripts/print-jenkins-log.sh @@ -59,40 +59,6 @@ if [ -f ${JENKINS_SERVER_LOG_FILE} ]; then echo "${ME}: Problem removing existing log file (${JENKINS_SERVER_LOG_FILE})." fi -# Does not work :-( -# oc login -u developer -p anypwd -# TOKEN=$(oc -n ${PROJECT} get sa/jenkins --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc -n ${PROJECT} get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -d -) - -# JENKINS_SERVER_PROTOCOL="$(echo ${LOG_URL} | cut -d "/" -f 1)" -# JENKINS_SERVER_HOSTNAME="$(echo ${LOG_URL} | cut -d "/" -f 3)" -# JENKINS_SERVER_LOGS_URL_TAIL="/manage/log/all" -# JENKINS_SERVER_LOGS_URL="${JENKINS_SERVER_PROTOCOL}//${JENKINS_SERVER_HOSTNAME}${JENKINS_SERVER_LOGS_URL_TAIL}" - -# echo "${ME}: WARN: The following functionality is not working well yet... :(" -# echo "${ME}: Jenkins server log url: ${JENKINS_SERVER_LOGS_URL}" -# curl --insecure -sSL --header "Authorization: Bearer ${TOKEN}" ${JENKINS_SERVER_LOGS_URL} > ${JENKINS_SERVER_LOG_FILE} || \ -# echo "${ME}: Error retrieving jenkins server logs with curl, needed to eval problem in failed job ( ${BUILD_NAME} ). " - -# echo " " -# echo " " - -# echo "${ME}: ** JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " -# echo " " -# NO_SERVER_LOGS="true" -# while read -r line; do -# if [ ! -z "$line" ] && [ "" != "${line}" ]; then -# NO_SERVER_LOGS="false" -# fi -# echo "JNK_LOGS: $line "; -# done < ${JENKINS_SERVER_LOG_FILE} - -# echo " " -# echo "${ME}: ENDS JENKINS LOGS (JNK_LOGS) AFTER PROBLEM BUILDING JOB ${BUILD_NAME}: " -# echo " " -# echo " " -# echo " " -# sleep 10 - BAD_SERVER_LOGS="false" if grep -q 'Still waiting to schedule task' ${JENKINS_LOG_FILE} ; then if ! grep -q 'Finished: SUCCESS' ${JENKINS_LOG_FILE} ; then From 8b72ad2d217ff429cdf3b90b74f461460b7788ee Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 15 Sep 2022 09:21:27 +0200 Subject: [PATCH 197/217] When pods do not exist, trying to kill them has no success. --- ods-devenv/scripts/deploy.sh | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 957652ff7..9a66a5519 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1574,10 +1574,13 @@ function wait_until_http_svc_is_up() { local SVC_HTTP_URL="${2}" local CURL_SVC_OUTPUT_FILE="/tmp/result-curl-svc-${SVC_NAME}-output" local CURL_SVC_HEADERS_FILE="/tmp/result-curl-svc-${SVC_NAME}-headers" + local CURL_LOGS_CHECK_SVC_FILE="/tmp/result-curl-svc-${SVC_NAME}-curlresult" local retryMax=${3:-20} - wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" $retryMax - if [ 0 -ne $? ]; then + local RETURN_VALUE=0 + wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" \ + "${CURL_LOGS_CHECK_SVC_FILE}" $retryMax || RETURN_VALUE=1 + if [ 0 -ne ${RETURN_VALUE} ]; then echo "[STATUS CHECK] ERROR: Service is down and we cannot live without it: ${SVC_NAME}" return 1 fi @@ -1589,7 +1592,8 @@ function wait_until_http_svc_is_up_advanced() { local SVC_HTTP_URL="${2}" local CURL_SVC_OUTPUT_FILE="${3}" local CURL_SVC_HEADERS_FILE="${4}" - local retryMaxIn=${5:-20} + local CURL_LOGS_CHECK_SVC_FILE="${5}" + local retryMaxIn=${6:-20} local retryMax=$((retryMaxIn)) echo " " @@ -1620,14 +1624,18 @@ function wait_until_http_svc_is_up_advanced() { fi # Remove files from previous execution. - rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} || true + rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} ${CURL_LOGS_CHECK_SVC_FILE} || true if [ -f ${CURL_SVC_OUTPUT_FILE} ] || [ -f ${CURL_SVC_HEADERS_FILE} ]; then echo "[STATUS CHECK] WARNING: Could NOT remove files ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} " fi - if ! curl --insecure -sSL --retry-delay 2 --retry-max-time 20 --retry 10 --dump-header ${CURL_SVC_HEADERS_FILE} ${SVC_HTTP_URL} -o ${CURL_SVC_OUTPUT_FILE} ; then + local CURL_RETURN_VAL=0 + curl --insecure -sSL --retry-delay 2 --retry-max-time 20 --retry 10 --dump-header ${CURL_SVC_HEADERS_FILE} \ + -o ${CURL_SVC_OUTPUT_FILE} ${SVC_HTTP_URL} 2>&1 > ${CURL_LOGS_CHECK_SVC_FILE} || CURL_RETURN_VAL=1 + if [ 0 -ne ${CURL_RETURN_VAL} ]; then echo "Curl replied != 0 for query to ${SVC_HTTP_URL} " echo "Checking if it was caused by a redirect... " + grep -i 'HTTP' ${CURL_LOGS_CHECK_SVC_FILE} || true fi if ! grep -q '^\s*HTTP/[0-9\.]*\s*200[\s]*' ${CURL_SVC_HEADERS_FILE} ; then @@ -2703,9 +2711,12 @@ function check_pods_and_restart_if_necessary() { local retryMaxIn=${1:-5} local retryMaxHttpIn=${2:-10} - check_pod_and_restart_if_necessary 'sonarqube' 'ods/sonarqube' 'https://sonarqube-ods.ocp.odsbox.lan/' ${retryMaxIn} ${retryMaxHttpIn} - check_pod_and_restart_if_necessary 'prov-app' 'ods/ods-provisioning-app' 'https://prov-app-ods.ocp.odsbox.lan/' ${retryMaxIn} ${retryMaxHttpIn} - check_pod_and_restart_if_necessary 'nexus' 'ods/nexus' 'https://nexus-ods.ocp.odsbox.lan/' ${retryMaxIn} ${retryMaxHttpIn} + check_pod_and_restart_if_necessary 'sonarqube' 'ods/sonarqube' 'https://sonarqube-ods.ocp.odsbox.lan/' \ + ${retryMaxIn} ${retryMaxHttpIn} || restart_ods + check_pod_and_restart_if_necessary 'prov-app' 'ods/ods-provisioning-app' 'https://prov-app-ods.ocp.odsbox.lan/' \ + ${retryMaxIn} ${retryMaxHttpIn} || restart_ods + check_pod_and_restart_if_necessary 'nexus' 'ods/nexus' 'https://nexus-ods.ocp.odsbox.lan/' \ + ${retryMaxIn} ${retryMaxHttpIn} || restart_ods # https://jenkins-ods.ocp.odsbox.lan } @@ -2716,6 +2727,7 @@ function check_pod_and_restart_if_necessary() { local SVC_HTTP_URL="${3}" local CURL_SVC_OUTPUT_FILE="/tmp/result-curl-svc-${SVC_NAME}-output" local CURL_SVC_HEADERS_FILE="/tmp/result-curl-svc-${SVC_NAME}-headers" + local CURL_LOGS_CHECK_SVC_FILE="/tmp/result-curl-svc-${SVC_NAME}-curlresult" local retryMaxIn=${4:-5} local retryMax=$((retryMaxIn)) local retryMaxHttpIn=${5:-10} @@ -2735,7 +2747,8 @@ function check_pod_and_restart_if_necessary() { fi retVal=0 - wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" ${retryMaxHttpIn} || retVal=1 + wait_until_http_svc_is_up_advanced "$SVC_NAME" "$SVC_HTTP_URL" "$CURL_SVC_OUTPUT_FILE" "$CURL_SVC_HEADERS_FILE" \ + ${CURL_LOGS_CHECK_SVC_FILE} ${retryMaxHttpIn} || retVal=1 if [ 0 -ne ${retVal} ]; then echo "[STATUS CHECK] WARNING: Stopping pod so it restarts automatically. Service: ${SVC_NAME} " @@ -2749,7 +2762,10 @@ function check_pod_and_restart_if_necessary() { if [ "false" == "$docker_process_killed" ]; then echo "No docker process found for pod ${SVC_NAME} with ID ${SVC_POD_ID} " + echo "Current docker pods: " + docker ps -a | grep -v 'Exited .* ago' || true echo " " + return 1 fi fi From a567ea31a062781b061419a38c868e311188ec00 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 15 Sep 2022 12:04:37 +0200 Subject: [PATCH 198/217] fix_java_certs_permissions to be used in agents. --- jenkins/agent-base/Dockerfile.centos7 | 6 ++---- jenkins/agent-base/Dockerfile.ubi8 | 3 ++- .../agent-base/fix_java_certs_permissions.sh | 20 +++++++++++++++++++ jenkins/agent-base/import_certs.sh | 9 --------- ods-devenv/scripts/deploy.sh | 2 +- 5 files changed, 25 insertions(+), 15 deletions(-) create mode 100755 jenkins/agent-base/fix_java_certs_permissions.sh diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index 3394c3bff..fb46bf830 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -17,8 +17,6 @@ ARG APP_DNS ARG SNYK_DISTRIBUTION_URL ARG AQUASEC_SCANNERCLI_URL -ENV JAVA_HOME=/usr/lib/jvm/jre - RUN rm -fv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/origin-local-release.repo \ && yum -y install openssl \ && yum -y install java-11-openjdk-devel \ @@ -38,9 +36,9 @@ RUN chmod +x /usr/local/bin/use-j*.sh && \ use-j11.sh && \ echo "--- ENDS JDK 11 TESTS ---" - COPY ./import_certs.sh /usr/local/bin/import_certs.sh -RUN import_certs.sh +COPY ./fix_java_certs_permissions.sh /usr/local/bin/fix_java_certs_permissions.sh +RUN import_certs.sh && fix_java_certs_permissions.sh # Install Sonar Scanner. RUN cd /tmp \ diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index bfb5a4c2b..934bfab21 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -39,7 +39,8 @@ RUN chmod +x /usr/local/bin/use-j*.sh && \ echo "--- ENDS JDK 11 TESTS ---" COPY ./import_certs.sh /usr/local/bin/import_certs.sh -RUN import_certs.sh +COPY ./fix_java_certs_permissions.sh /usr/local/bin/fix_java_certs_permissions.sh +RUN import_certs.sh && fix_java_certs_permissions.sh # Install Sonar Scanner. RUN cd /tmp \ diff --git a/jenkins/agent-base/fix_java_certs_permissions.sh b/jenkins/agent-base/fix_java_certs_permissions.sh new file mode 100755 index 000000000..5ec50efe6 --- /dev/null +++ b/jenkins/agent-base/fix_java_certs_permissions.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -eu + +# Initialize JAVA_HOME if not set. +JAVA_HOME=${JAVA_HOME:-""} + +if [ -f /etc/profile.d/set-default-java.sh ]; then + source /etc/profile.d/set-default-java.sh +else + echo "WARNING: Not setting default java version." +fi + +echo "Trying to setup correct permissions for cacerts folder... " +if [ ! -z "${JAVA_HOME}" ] && [ "" != "${JAVA_HOME}" ]; then + chown -c 1001:0 $JAVA_HOME/lib/security/cacerts + chmod -c g+w $JAVA_HOME/lib/security/cacerts +else + echo "WARNING: Cannot apply permissions 'chmod g+w' to JAVA_HOME/lib/security/cacerts " + echo "WARNING: JAVA_HOME=${JAVA_HOME}" +fi diff --git a/jenkins/agent-base/import_certs.sh b/jenkins/agent-base/import_certs.sh index 56bd718f9..bcf771e75 100755 --- a/jenkins/agent-base/import_certs.sh +++ b/jenkins/agent-base/import_certs.sh @@ -32,12 +32,3 @@ if [[ ! -z ${APP_DNS:=""} ]]; then else echo 'No certificates to import' fi - -echo "Trying to setup correct permissions for cacerts folder... " -if [ ! -z "${JAVA_HOME}" ] && [ "" != "${JAVA_HOME}" ]; then - chown -c 1001:0 $JAVA_HOME/lib/security/cacerts - chmod -c g+w $JAVA_HOME/lib/security/cacerts -else - echo "WARNING: Cannot apply permissions 'chmod g+w' to JAVA_HOME/lib/security/cacerts " - echo "WARNING: JAVA_HOME=${JAVA_HOME}" -fi diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 9a66a5519..0b4a14f92 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -2763,7 +2763,7 @@ function check_pod_and_restart_if_necessary() { if [ "false" == "$docker_process_killed" ]; then echo "No docker process found for pod ${SVC_NAME} with ID ${SVC_POD_ID} " echo "Current docker pods: " - docker ps -a | grep -v 'Exited .* ago' || true + docker ps -a | grep -v 'Exited .* ago' || true echo " " return 1 fi From 83c5616aa44ce62fae1717347497dd02b55b3923 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 21 Sep 2022 09:44:55 +0200 Subject: [PATCH 199/217] Need a better logging for jenkins master. --- jenkins/master/Dockerfile.centos7 | 1 + jenkins/master/Dockerfile.rhel7 | 1 + jenkins/master/Dockerfile.ubi8 | 1 + jenkins/master/logging.properties | 11 +++++++++++ 4 files changed, 14 insertions(+) create mode 100644 jenkins/master/logging.properties diff --git a/jenkins/master/Dockerfile.centos7 b/jenkins/master/Dockerfile.centos7 index 4c298d69e..38cfd048d 100644 --- a/jenkins/master/Dockerfile.centos7 +++ b/jenkins/master/Dockerfile.centos7 @@ -25,6 +25,7 @@ RUN /usr/local/bin/install-plugins.sh /opt/openshift/configuration/plugins.txt \ && mv /usr/libexec/s2i/run /usr/libexec/s2i/openshift-run COPY configuration/ /opt/openshift/configuration/ COPY ods-run.sh /usr/libexec/s2i/run +COPY logging.properties /var/lib/jenkins/ RUN chown :0 /etc/pki/java/cacerts && chmod ugo+w /etc/pki/java/cacerts diff --git a/jenkins/master/Dockerfile.rhel7 b/jenkins/master/Dockerfile.rhel7 index 0fc33575f..1037e17e1 100644 --- a/jenkins/master/Dockerfile.rhel7 +++ b/jenkins/master/Dockerfile.rhel7 @@ -25,6 +25,7 @@ RUN /usr/local/bin/install-plugins.sh /opt/openshift/configuration/plugins.txt \ && mv /usr/libexec/s2i/run /usr/libexec/s2i/openshift-run COPY configuration/ /opt/openshift/configuration/ COPY ods-run.sh /usr/libexec/s2i/run +COPY logging.properties /var/lib/jenkins/ RUN chown :0 /etc/pki/java/cacerts && chmod ugo+w /etc/pki/java/cacerts diff --git a/jenkins/master/Dockerfile.ubi8 b/jenkins/master/Dockerfile.ubi8 index d6531ba23..6e1642577 100644 --- a/jenkins/master/Dockerfile.ubi8 +++ b/jenkins/master/Dockerfile.ubi8 @@ -25,6 +25,7 @@ RUN /usr/local/bin/install-plugins.sh /opt/openshift/configuration/plugins.txt \ && mv /usr/libexec/s2i/run /usr/libexec/s2i/openshift-run COPY configuration/ /opt/openshift/configuration/ COPY ods-run.sh /usr/libexec/s2i/run +COPY logging.properties /var/lib/jenkins/ RUN chown :0 /etc/pki/java/cacerts && chmod ugo+w /etc/pki/java/cacerts diff --git a/jenkins/master/logging.properties b/jenkins/master/logging.properties new file mode 100644 index 000000000..9b0c461c9 --- /dev/null +++ b/jenkins/master/logging.properties @@ -0,0 +1,11 @@ +handlers=java.util.logging.ConsoleHandler,java.util.logging.FileHandler + +java.util.logging.FileHandler.level=INFO +java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter +java.util.logging.FileHandler.pattern=/var/log/jenkins/jenkins-master.log +java.util.logging.FileHandler.append=true +java.util.logging.FileHandler.limit=10000000 +java.util.logging.FileHandler.count=5 + +java.util.logging.ConsoleHandler.level=INFO +java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter From 14bf28484f71bdc84b4e56f5b33932d6554febaa Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Wed, 21 Sep 2022 08:10:09 +0000 Subject: [PATCH 200/217] Modifies script to not remove tests if not requested to do it. --- tests/scripts/free-unused-resources.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tests/scripts/free-unused-resources.sh b/tests/scripts/free-unused-resources.sh index 4fdd24ac9..83890c00c 100755 --- a/tests/scripts/free-unused-resources.sh +++ b/tests/scripts/free-unused-resources.sh @@ -2,6 +2,8 @@ echo " " +ME=$(basename $0) + function clean_containers { echo "Removing docker containers no more used... " if docker ps -a | grep -q 'Exited .* ago' ; then @@ -27,6 +29,7 @@ function clean_tests { } function clean_odsverify { + echo "Cleaning projects ODS__VERIFY... " if [ "true" == "$CLEAN_ODS_VERIFY" ]; then echo "Removing ODS VERIFY projects..." oc projects | grep '^\s*odsverify.*' | while read -r line; do @@ -41,14 +44,14 @@ function clean_odsverify { } function clean_images { + echo "Cleaning OC images" echo "oc adm prune images --keep-tag-revisions=1 --keep-younger-than=30m --confirm" oc adm prune images --keep-tag-revisions=1 --keep-younger-than=30m --confirm || true } function usage { - ME=$(basename $0) echo " " - echo "usage: ${ME} [--odsVerify] [--omitTestsProject tes22]" + echo "usage: ${ME} [--odsVerify] [--omitTests] [--omitTestsProject tes22]" echo " " } @@ -59,6 +62,7 @@ function echo_error() { OMIT_TESTS_PROJECT=none CLEAN_ODS_VERIFY="false" +CLEAN_TESTS="false" while [[ "$#" -gt 0 ]]; do case $1 in @@ -71,11 +75,19 @@ while [[ "$#" -gt 0 ]]; do --omitTestsProject) OMIT_TESTS_PROJECT="$2"; echo "Tests to omit: $OMIT_TESTS_PROJECT"; shift;; + --cleanTests) CLEAN_TESTS="true";; + *) echo_error "Unknown parameter passed: $1"; exit 1;; esac; shift; done clean_containers -clean_tests +if [ "true" == "${CLEAN_TESTS}" ]; then + clean_tests +else + echo " " + echo "${ME}: INFO: Not cleaning tests" + echo " " +fi clean_odsverify clean_images From 86d8531860e7ddd57f0df792ecb54b4270d563ef Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 22 Sep 2022 11:34:14 +0200 Subject: [PATCH 201/217] New options for jenkins master and slave. --- jenkins/agent-base/Dockerfile.centos7 | 2 +- jenkins/agent-base/Dockerfile.ubi8 | 2 +- jenkins/ocp-config/deploy/jenkins-master.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index fb46bf830..9815cc246 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -11,7 +11,7 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ GIT_LFS_VERSION=2.6.1 \ SKOPEO_VERSION=0.1.37-3 \ OSTREE_VERSION=2018.5-1 \ - JAVA_TOOL_OPTIONS="-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true" + JAVA_TOOL_OPTIONS="-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:-UseContainerSupport -Dsun.zip.disableMemoryMapping=true" ARG APP_DNS ARG SNYK_DISTRIBUTION_URL diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index 934bfab21..d9b15b3df 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -9,7 +9,7 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ HELM_PLUGIN_DIFF_VERSION=3.3.2 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ GIT_LFS_VERSION=2.6.1 \ - JAVA_TOOL_OPTIONS="-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true" + JAVA_TOOL_OPTIONS="-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:-UseContainerSupport -Dsun.zip.disableMemoryMapping=true" ARG APP_DNS ARG SNYK_DISTRIBUTION_URL diff --git a/jenkins/ocp-config/deploy/jenkins-master.yml b/jenkins/ocp-config/deploy/jenkins-master.yml index cfbfb1029..756cdc7fe 100644 --- a/jenkins/ocp-config/deploy/jenkins-master.yml +++ b/jenkins/ocp-config/deploy/jenkins-master.yml @@ -17,7 +17,7 @@ parameters: - name: JENKINS_ENABLE_OAUTH value: "true" - name: JENKINS_MEMORY_LIMIT - value: 6Gi + value: 7Gi - name: JENKINS_MEMORY_REQUEST value: 4Gi - name: JENKINS_CPU_LIMIT @@ -27,7 +27,7 @@ parameters: - name: JENKINS_VOLUME_CAPACITY value: 5Gi - name: JENKINS_JAVA_GC_OPTS - value: "-server -XX:NativeMemoryTracking=summary -XX:MaxRAMPercentage=90 -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:MaxMetaspaceSize=1g -XX:MetaspaceSize=256M -XX:SoftRefLRUPolicyMSPerMB=1 -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1" + value: "-server -XX:NativeMemoryTracking=summary -XX:-UseContainerSupport -XX:MaxRAMPercentage=90 -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:MaxMetaspaceSize=1g -XX:MetaspaceSize=256M -XX:SoftRefLRUPolicyMSPerMB=1 -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/lib/jenkins" - name: JENKINS_JAVA_MAX_HEAP_PARAM value: "-Xms1024m -Xmx4g" - name: JENKINS_CONTAINER_HEAP_PERCENT From 000faf1ba377b4bd9e018e6ab912e3a6439f1c39 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Fri, 23 Sep 2022 12:29:29 +0200 Subject: [PATCH 202/217] Jenkins history limit set to 20. --- jenkins/ocp-config/build/bc.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/jenkins/ocp-config/build/bc.yml b/jenkins/ocp-config/build/bc.yml index 063f1ce3a..99eb4e219 100644 --- a/jenkins/ocp-config/build/bc.yml +++ b/jenkins/ocp-config/build/bc.yml @@ -72,7 +72,7 @@ objects: labels: app: jenkins spec: - failedBuildsHistoryLimit: 5 + failedBuildsHistoryLimit: 20 nodeSelector: null output: to: @@ -117,7 +117,7 @@ objects: from: kind: DockerImage name: ${JENKINS_MASTER_BASE_FROM_IMAGE} - successfulBuildsHistoryLimit: 5 + successfulBuildsHistoryLimit: 20 - kind: BuildConfig apiVersion: v1 metadata: @@ -125,7 +125,7 @@ objects: labels: app: jenkins spec: - failedBuildsHistoryLimit: 5 + failedBuildsHistoryLimit: 20 nodeSelector: null output: to: @@ -164,7 +164,7 @@ objects: name: ${JENKINS_AGENT_BASE_FROM_IMAGE} dockerfilePath: ${JENKINS_AGENT_DOCKERFILE_PATH} type: Docker - successfulBuildsHistoryLimit: 5 + successfulBuildsHistoryLimit: 20 - apiVersion: v1 kind: BuildConfig metadata: From 0aa24e0294314badd82db29be32723feb9889c12 Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Mon, 26 Sep 2022 11:28:30 +0000 Subject: [PATCH 203/217] Upgrades jenkins version in the boxes. --- jenkins/master/Dockerfile.centos7 | 12 +++++-- jenkins/master/install_java.sh | 30 ++++++++++++++++++ jenkins/master/install_jenkins_lts.sh | 45 +++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 2 deletions(-) create mode 100755 jenkins/master/install_java.sh create mode 100755 jenkins/master/install_jenkins_lts.sh diff --git a/jenkins/master/Dockerfile.centos7 b/jenkins/master/Dockerfile.centos7 index 38cfd048d..3852750c3 100644 --- a/jenkins/master/Dockerfile.centos7 +++ b/jenkins/master/Dockerfile.centos7 @@ -14,7 +14,15 @@ ENV TAILOR_VERSION=1.3.4 USER root COPY ./import_certs.sh /usr/local/bin/import_certs.sh -RUN import_certs.sh +COPY ./install_java.sh /usr/local/bin/install_java.sh +COPY ./install_jenkins_lts.sh /usr/local/bin/install_jenkins_lts.sh +RUN import_certs.sh \ + && install_java.sh \ + && install_jenkins_lts.sh + +# To debug. Warning: too much logs if we enable it. +#RUN sed -i 's|\#\!\s*/bin/bash.*|\#\!/bin/bash -xeu|g' /usr/local/bin/install-plugins.sh \ +# && head -n 10 /usr/local/bin/install-plugins.sh # Copy configuration and plugins. COPY plugins.centos7.txt /opt/openshift/configuration/plugins.txt @@ -31,7 +39,7 @@ RUN chown :0 /etc/pki/java/cacerts && chmod ugo+w /etc/pki/java/cacerts # Install Tailor. RUN cd /tmp \ - && curl -LOv https://github.com/opendevstack/tailor/releases/download/v${TAILOR_VERSION}/tailor-linux-amd64 \ + && curl -sSLO https://github.com/opendevstack/tailor/releases/download/v${TAILOR_VERSION}/tailor-linux-amd64 \ && mv tailor-linux-amd64 /usr/local/bin/tailor \ && chmod a+x /usr/local/bin/tailor diff --git a/jenkins/master/install_java.sh b/jenkins/master/install_java.sh new file mode 100755 index 000000000..a3c76f93d --- /dev/null +++ b/jenkins/master/install_java.sh @@ -0,0 +1,30 @@ +#!/bin/bash +set -eu -o pipefail + +ME="$(basename $0)" +JAVA_INSTALLED_PKGS_LOGS="/tmp/java_installed_pkgs.log" + +echo "${ME}: Listing versions of java installed: " +yum list installed | grep -i "\(java\|jre\)" | tee -a ${JAVA_INSTALLED_PKGS_LOGS} + +if grep -qi "java-1.8" "${JAVA_INSTALLED_PKGS_LOGS}" ; then + yum -y remove java-1.8* +else + echo "${ME}: No java 1.8 packages to remove." +fi + +rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key +yum -y update +yum clean all +rm -rf /var/cache/yum/* + +if grep -qi "java-11" "${JAVA_INSTALLED_PKGS_LOGS}" ; then + echo "${ME}: Not installing java 11 because already installed. " +else + yum -y install java-11* +fi + +echo " " +echo "${ME}: Checking java tool versions: " +jar --version +java --version diff --git a/jenkins/master/install_jenkins_lts.sh b/jenkins/master/install_jenkins_lts.sh new file mode 100755 index 000000000..540190edd --- /dev/null +++ b/jenkins/master/install_jenkins_lts.sh @@ -0,0 +1,45 @@ +#!/bin/bash +set -eu -o pipefail + +ME="$(basename $0)" +echo "${ME}: Upgrading Jenkins to latest LTS version available..." + +# sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo +# sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key +# sudo yum upgrade +# Add required dependencies for the jenkins package +# sudo yum install java-11-openjdk +# sudo yum install jenkins +# sudo systemctl daemon-reload + +DEFAULT_TARGET="/usr/lib/jenkins/jenkins.war" +TARGET="${DEFAULT_TARGET}" + +curl -sSLO https://get.jenkins.io/war-stable/latest/jenkins.war + +if [ ! -f "${TARGET}" ]; then + echo "${ME}: File does not exist: ${TARGET}" + TARGET="$(find /usr/ -name jenkins.war)" + echo "${ME}: New target: ${TARGET}" +fi + +if [ -f "${TARGET}" ]; then + echo "${ME}: Upgrading Jenkins to lates LTS version... " + rm -fv ${TARGET} + mv -vf jenkins.war ${TARGET} + ls -lah ${TARGET} +else + echo "${ME}: ERROR: Cannot upgrade Jenkins version." + exit 1 +fi + +if [ ! -f "${DEFAULT_TARGET}" ]; then + DEFAULT_TARGET_FOLDER="$(dirname ${DEFAULT_TARGET})" + if [ ! -d ${DEFAULT_TARGET_FOLDER} ]; then + mkdir -pv ${DEFAULT_TARGET_FOLDER} + fi + cd ${DEFAULT_TARGET_FOLDER} && ln -sv ${TARGET} . +fi +ls -la ${DEFAULT_TARGET} ${TARGET} +echo "${ME}: INFO: Jenkins was upgraded to latest LTS version." + From f8d6bc4d5ed86d58a9d6f7b8da83f9b0f4c61b74 Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Mon, 26 Sep 2022 15:46:17 +0000 Subject: [PATCH 204/217] Script than fixes openshift wrong cfgs. --- jenkins/master/Dockerfile.centos7 | 4 +++- jenkins/master/fix_openshift_scripts.sh | 25 +++++++++++++++++++++++++ jenkins/master/install_jenkins_lts.sh | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100755 jenkins/master/fix_openshift_scripts.sh diff --git a/jenkins/master/Dockerfile.centos7 b/jenkins/master/Dockerfile.centos7 index 3852750c3..d8a5203bd 100644 --- a/jenkins/master/Dockerfile.centos7 +++ b/jenkins/master/Dockerfile.centos7 @@ -16,9 +16,11 @@ USER root COPY ./import_certs.sh /usr/local/bin/import_certs.sh COPY ./install_java.sh /usr/local/bin/install_java.sh COPY ./install_jenkins_lts.sh /usr/local/bin/install_jenkins_lts.sh +COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh RUN import_certs.sh \ && install_java.sh \ - && install_jenkins_lts.sh + && install_jenkins_lts.sh \ + && fix_openshift_scripts.sh # To debug. Warning: too much logs if we enable it. #RUN sed -i 's|\#\!\s*/bin/bash.*|\#\!/bin/bash -xeu|g' /usr/local/bin/install-plugins.sh \ diff --git a/jenkins/master/fix_openshift_scripts.sh b/jenkins/master/fix_openshift_scripts.sh new file mode 100755 index 000000000..41d040d44 --- /dev/null +++ b/jenkins/master/fix_openshift_scripts.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -eu -o pipefail + +ME="$(basename $0)" +echo "${ME}: INFO: Fixing openshift scripts..." + +FILE_TO_MODIFY=${1-"/usr/libexec/s2i/run"} + +if [ -f ${FILE_TO_MODIFY} ]; then + sed -i 's|\#\!/bin/bash|\#\!/bin/bash -x|g' ${FILE_TO_MODIFY} + sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + ${FILE_TO_MODIFY} + sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + ${FILE_TO_MODIFY} + sed -i 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' ${FILE_TO_MODIFY} + grep -B 3 -A 3 -i '\(bash\|JAVA_TOOL_OPTIONS\|JAVA_GC_OPTS\)' ${FILE_TO_MODIFY} +else + echo " " + echo "${ME}: WARNING: Could not modify file because it does not exist: ${FILE_TO_MODIFY} " + echo " " + echo " " +fi + +echo "${ME}: INFO: Fixed openshift scripts." + diff --git a/jenkins/master/install_jenkins_lts.sh b/jenkins/master/install_jenkins_lts.sh index 540190edd..659c53fdd 100755 --- a/jenkins/master/install_jenkins_lts.sh +++ b/jenkins/master/install_jenkins_lts.sh @@ -24,7 +24,7 @@ if [ ! -f "${TARGET}" ]; then fi if [ -f "${TARGET}" ]; then - echo "${ME}: Upgrading Jenkins to lates LTS version... " + echo "${ME}: Upgrading Jenkins to latest LTS version... " rm -fv ${TARGET} mv -vf jenkins.war ${TARGET} ls -lah ${TARGET} From b58e95e26f95e60e52cfcfc2e06f2ba7a3d2b272 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Tue, 27 Sep 2022 16:21:27 +0200 Subject: [PATCH 205/217] Improves logs of jenkins startup... --- jenkins/master/ods-run.sh | 13 ++++++++++--- jenkins/master/plugins.centos7.txt | 10 ++++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/jenkins/master/ods-run.sh b/jenkins/master/ods-run.sh index f2e373348..0acca6aaf 100755 --- a/jenkins/master/ods-run.sh +++ b/jenkins/master/ods-run.sh @@ -81,18 +81,25 @@ if [ -e "${JENKINS_HOME}/plugins" ]; then echo "Copy audit-trail plugin configuration ..." cp -n /opt/openshift/configuration/audit-trail.xml ${JENKINS_HOME}/audit-trail.xml + echo " " + echo "Plugins version already installed in Jenkins: " + ls -la "${JENKINS_HOME}/plugins/" + + echo " " echo "Enforcing plugin versions defined in the image ..." if [ "$(ls /opt/openshift/plugins/* 2>/dev/null)" ]; then echo "Copying $(ls /opt/openshift/plugins/* | wc -l) files to ${JENKINS_HOME} ..." for FILENAME in /opt/openshift/plugins/* ; do # also need to nuke the metadir; it will get properly populated on jenkins startup basefilename=`basename $FILENAME .jpi` - rm -rf "${JENKINS_HOME}/plugins/${basefilename}" - cp --remove-destination $FILENAME ${JENKINS_HOME}/plugins + rm -rfv "${JENKINS_HOME}/plugins/${basefilename}" + cp -v --remove-destination $FILENAME ${JENKINS_HOME}/plugins done rm -rf /opt/openshift/plugins fi fi -echo "Booting Jenkins ..." +echo " " +echo "Booting Jenkins ( /usr/libexec/s2i/openshift-run ) ..." +echo " " /usr/libexec/s2i/openshift-run diff --git a/jenkins/master/plugins.centos7.txt b/jenkins/master/plugins.centos7.txt index 6e3638878..e205a1f3f 100644 --- a/jenkins/master/plugins.centos7.txt +++ b/jenkins/master/plugins.centos7.txt @@ -3,7 +3,13 @@ email-ext:2.69 sonar:2.6.1 ansicolor:0.7.0 blueocean:1.18.0 -kubernetes:1.18.2 +audit-trail:3.2 +parameterized-trigger:2.45 +pipeline-rest-api:2.24 +workflow-cps-global-lib:2.17 +junit:1.53 +token-macro:267.vcdaea6462991 +kubernetes:1.25.7 openshift-sync:1.0.44 pipeline-utility-steps:2.1.0 -audit-trail:3.2 \ No newline at end of file +bitbucket:1.1.30 From 43b6576d37f13a601060e18fadb08aa603678110 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 28 Sep 2022 09:08:46 +0200 Subject: [PATCH 206/217] Seeing what is not going well is more important than upgrading. --- jenkins/master/Dockerfile.centos7 | 2 -- jenkins/master/ods-run.sh | 13 ++++++++++++- jenkins/master/plugins.centos7.txt | 10 ++-------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/jenkins/master/Dockerfile.centos7 b/jenkins/master/Dockerfile.centos7 index d8a5203bd..618c571cf 100644 --- a/jenkins/master/Dockerfile.centos7 +++ b/jenkins/master/Dockerfile.centos7 @@ -15,11 +15,9 @@ USER root COPY ./import_certs.sh /usr/local/bin/import_certs.sh COPY ./install_java.sh /usr/local/bin/install_java.sh -COPY ./install_jenkins_lts.sh /usr/local/bin/install_jenkins_lts.sh COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh RUN import_certs.sh \ && install_java.sh \ - && install_jenkins_lts.sh \ && fix_openshift_scripts.sh # To debug. Warning: too much logs if we enable it. diff --git a/jenkins/master/ods-run.sh b/jenkins/master/ods-run.sh index 0acca6aaf..0697d4573 100755 --- a/jenkins/master/ods-run.sh +++ b/jenkins/master/ods-run.sh @@ -102,4 +102,15 @@ fi echo " " echo "Booting Jenkins ( /usr/libexec/s2i/openshift-run ) ..." echo " " -/usr/libexec/s2i/openshift-run +JENKINS_ERROR="false" +/usr/libexec/s2i/openshift-run || JENKINS_ERROR="true" + +if [ "false" != "${JENKINS_ERROR}" ]; then + echo " " + echo "Jenkins exit code was not 0. Something went wrong." + echo "Waiting 10 secs, so the pod does not die before showing in its log all jenkins logs." + echo " " + sleep 10 + exit 1 +fi + diff --git a/jenkins/master/plugins.centos7.txt b/jenkins/master/plugins.centos7.txt index e205a1f3f..6e3638878 100644 --- a/jenkins/master/plugins.centos7.txt +++ b/jenkins/master/plugins.centos7.txt @@ -3,13 +3,7 @@ email-ext:2.69 sonar:2.6.1 ansicolor:0.7.0 blueocean:1.18.0 -audit-trail:3.2 -parameterized-trigger:2.45 -pipeline-rest-api:2.24 -workflow-cps-global-lib:2.17 -junit:1.53 -token-macro:267.vcdaea6462991 -kubernetes:1.25.7 +kubernetes:1.18.2 openshift-sync:1.0.44 pipeline-utility-steps:2.1.0 -bitbucket:1.1.30 +audit-trail:3.2 \ No newline at end of file From 84da2e27d7a88588f82394dd685f2eac06c8b21c Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 28 Sep 2022 12:23:59 +0200 Subject: [PATCH 207/217] Script to ensure we use same java version in both images. --- jenkins/agent-base/Dockerfile.centos7 | 14 ++++------- jenkins/agent-base/Dockerfile.ubi8 | 11 ++++----- .../agent-base/ensure_java_jre_is_adequate.sh | 18 +++++++++++++++ .../fix_openshift_run_jnlp_client.sh | 23 +++++++++++++++++++ 4 files changed, 49 insertions(+), 17 deletions(-) create mode 100755 jenkins/agent-base/ensure_java_jre_is_adequate.sh create mode 100755 jenkins/agent-base/fix_openshift_run_jnlp_client.sh diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index 9815cc246..ab977691a 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -17,11 +17,10 @@ ARG APP_DNS ARG SNYK_DISTRIBUTION_URL ARG AQUASEC_SCANNERCLI_URL +COPY ensure_java_jre_is_adequate.sh /usr/local/bin/ RUN rm -fv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/origin-local-release.repo \ + && ensure_java_jre_is_adequate.sh \ && yum -y install openssl \ - && yum -y install java-11-openjdk-devel \ - && yum list installed | grep java \ - && yum -y remove java-1.8* \ && yum -y update \ && yum clean all \ && rm -rf /var/cache/yum/* @@ -115,14 +114,9 @@ RUN . /tmp/set_java_proxy.sh && echo $JAVA_OPTS # It is setting the variable JAVA_TOOL_OPTIONS while it should not. # Besides, we need to know if this variable has not been set. # It is a problem very difficult to detect... +COPY fix_openshift_run_jnlp_client.sh /usr/local/bin/fix_openshift_run_jnlp_client.sh RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ - && sed -i 's|\#\!/bin/bash|\#\!/bin/bash -x|g' /usr/local/bin/openshift-run-jnlp-client \ - && sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ - /usr/local/bin/openshift-run-jnlp-client \ - && sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ - /usr/local/bin/openshift-run-jnlp-client \ - && sed -i 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' /usr/local/bin/openshift-run-jnlp-client \ - && grep -B 3 -A 3 -i '\(bash\|JAVA_TOOL_OPTIONS\|JAVA_GC_OPTS\)' /usr/local/bin/openshift-run-jnlp-client + fix_openshift_run_jnlp_client.sh /usr/local/bin/openshift-run-jnlp-client COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index d9b15b3df..882ad4533 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -18,7 +18,9 @@ ARG AQUASEC_SCANNERCLI_URL # Add UBI repositories. COPY yum.repos.d/ubi.repo /etc/yum.repos.d/ubi.repo +COPY ensure_java_jre_is_adequate.sh /usr/local/bin/ RUN cd /etc/yum.repos.d && rm -f localdev-* ci-rpm-mirrors.repo \ + && ensure_java_jre_is_adequate.sh \ && yum -y install make glibc-langpack-en openssl \ && yum -y update \ && yum clean all \ @@ -115,14 +117,9 @@ COPY set_java_proxy.sh /tmp/set_java_proxy.sh RUN . /tmp/set_java_proxy.sh && echo $JAVA_OPTS # Customize entrypoint. +COPY fix_openshift_run_jnlp_client.sh /usr/local/bin/fix_openshift_run_jnlp_client.sh RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ - && sed -i 's|\#\!/bin/bash|\#\!/bin/bash -x|g' /usr/local/bin/openshift-run-jnlp-client \ - && sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ - /usr/local/bin/openshift-run-jnlp-client \ - && sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ - /usr/local/bin/openshift-run-jnlp-client \ - && sed -i 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' /usr/local/bin/openshift-run-jnlp-client \ - && grep -B 3 -A 3 -i '\(bash\|JAVA_TOOL_OPTIONS\|JAVA_GC_OPTS\)' /usr/local/bin/openshift-run-jnlp-client + fix_openshift_run_jnlp_client.sh /usr/local/bin/openshift-run-jnlp-client COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client diff --git a/jenkins/agent-base/ensure_java_jre_is_adequate.sh b/jenkins/agent-base/ensure_java_jre_is_adequate.sh new file mode 100755 index 000000000..33da3f22c --- /dev/null +++ b/jenkins/agent-base/ensure_java_jre_is_adequate.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -eu -o pipefail + +yum list installed | grep "\(java\|jre\|jdk\)" + +if ! yum list installed | grep -q "java-11" ; then + echo "Java-11 is *not* installed. Installing..." + yum -y install java-11-openjdk-headless +else + echo "Java-11 is already installed." +fi + +if yum list installed | grep -q "java-1.8" ; then + echo "Java-8 is installed. Removing..." + yum -y remove java-1.8* +else + echo "Java-8 is not installed. Correct." +fi diff --git a/jenkins/agent-base/fix_openshift_run_jnlp_client.sh b/jenkins/agent-base/fix_openshift_run_jnlp_client.sh new file mode 100755 index 000000000..5e143d143 --- /dev/null +++ b/jenkins/agent-base/fix_openshift_run_jnlp_client.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -eu -o pipefail + +FILEPATH=${1-"/usr/local/bin/openshift-run-jnlp-client"} + +if [ ! -f ${FILEPATH} ]; then + echo " " + echo "ERROR: File does not exist: ${FILEPATH}" + echo " " + exit 1 +fi + +sed -i 's|\#\!/bin/bash|\#\!/bin/bash -x|g' ${FILEPATH} +sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + ${FILEPATH} +sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ + ${FILEPATH} +sed -i 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' ${FILEPATH} +sed -i 's|curl\s*-sS\s*|curl -sSLv |g' ${FILEPATH} + +grep -B 3 -A 3 -i '\(bash\|JAVA_TOOL_OPTIONS\|JAVA_GC_OPTS\|curl\)' ${FILEPATH} + + From daadbf12ba008dc3fb89d90b43360c96176efcc4 Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Wed, 28 Sep 2022 10:50:36 +0000 Subject: [PATCH 208/217] typo --- jenkins/agent-base/Dockerfile.centos7 | 2 +- jenkins/agent-base/Dockerfile.ubi8 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index ab977691a..cea170d3a 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -116,7 +116,7 @@ RUN . /tmp/set_java_proxy.sh && echo $JAVA_OPTS # It is a problem very difficult to detect... COPY fix_openshift_run_jnlp_client.sh /usr/local/bin/fix_openshift_run_jnlp_client.sh RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ - fix_openshift_run_jnlp_client.sh /usr/local/bin/openshift-run-jnlp-client + && fix_openshift_run_jnlp_client.sh /usr/local/bin/openshift-run-jnlp-client COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index 882ad4533..9148e7c68 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -119,7 +119,7 @@ RUN . /tmp/set_java_proxy.sh && echo $JAVA_OPTS # Customize entrypoint. COPY fix_openshift_run_jnlp_client.sh /usr/local/bin/fix_openshift_run_jnlp_client.sh RUN mv /usr/local/bin/run-jnlp-client /usr/local/bin/openshift-run-jnlp-client \ - fix_openshift_run_jnlp_client.sh /usr/local/bin/openshift-run-jnlp-client + && fix_openshift_run_jnlp_client.sh /usr/local/bin/openshift-run-jnlp-client COPY ods-run-jnlp-client.sh /usr/local/bin/run-jnlp-client From 1c4b1021359e55de8cc6a6ed3c605b6cd293b76f Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Wed, 28 Sep 2022 11:33:54 +0000 Subject: [PATCH 209/217] Ensures java is version 11 in both master and slaves. --- .../agent-base/ensure_java_jre_is_adequate.sh | 30 ++++++++++++----- jenkins/master/Dockerfile.centos7 | 18 ++++++++--- jenkins/master/Dockerfile.rhel7 | 10 +++++- jenkins/master/Dockerfile.ubi8 | 10 +++++- jenkins/master/ensure_java_jre_is_adequate.sh | 32 +++++++++++++++++++ jenkins/master/install_java.sh | 30 ----------------- 6 files changed, 86 insertions(+), 44 deletions(-) create mode 100755 jenkins/master/ensure_java_jre_is_adequate.sh delete mode 100755 jenkins/master/install_java.sh diff --git a/jenkins/agent-base/ensure_java_jre_is_adequate.sh b/jenkins/agent-base/ensure_java_jre_is_adequate.sh index 33da3f22c..b9cede96e 100755 --- a/jenkins/agent-base/ensure_java_jre_is_adequate.sh +++ b/jenkins/agent-base/ensure_java_jre_is_adequate.sh @@ -1,18 +1,32 @@ #!/bin/bash set -eu -o pipefail -yum list installed | grep "\(java\|jre\|jdk\)" +ME="$(basename $0)" +JAVA_INSTALLED_PKGS_LOGS="/tmp/java_installed_pkgs.log" +JAVA_11_INSTALLED_PKGS_LOGS="/tmp/java_11_installed_pkgs.log" +rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_11_INSTALLED_PKGS_LOGS} -if ! yum list installed | grep -q "java-11" ; then - echo "Java-11 is *not* installed. Installing..." - yum -y install java-11-openjdk-headless +echo "${ME}: Listing versions of java installed: " +yum list installed | grep -i "\(java\|jre\)" | tee -a ${JAVA_INSTALLED_PKGS_LOGS} +grep -i "java-11" ${JAVA_INSTALLED_PKGS_LOGS} > ${JAVA_11_INSTALLED_PKGS_LOGS} + +if ! grep -qi "devel" ${JAVA_11_INSTALLED_PKGS_LOGS} ; then + echo "${ME}:Java-11 is *not* installed. Installing..." + yum -y install java-11-openjdk-devel else - echo "Java-11 is already installed." + echo "${ME}: Java-11 is already installed." fi -if yum list installed | grep -q "java-1.8" ; then - echo "Java-8 is installed. Removing..." +if grep -qi "java-1.8" ${JAVA_INSTALLED_PKGS_LOGS} ; then + echo "${ME}: Java-8 is installed. Removing..." yum -y remove java-1.8* else - echo "Java-8 is not installed. Correct." + echo "${ME}: Java-8 is not installed. Correct." fi + +rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_11_INSTALLED_PKGS_LOGS} + +echo " " +echo "${ME}: Checking java tool versions: " +jar --version +java -version diff --git a/jenkins/master/Dockerfile.centos7 b/jenkins/master/Dockerfile.centos7 index 618c571cf..ae89dadef 100644 --- a/jenkins/master/Dockerfile.centos7 +++ b/jenkins/master/Dockerfile.centos7 @@ -13,12 +13,22 @@ ENV TAILOR_VERSION=1.3.4 USER root +rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key +yum -y update +yum clean all +rm -rf /var/cache/yum/* + + COPY ./import_certs.sh /usr/local/bin/import_certs.sh -COPY ./install_java.sh /usr/local/bin/install_java.sh +COPY ./ensure_java_jre_is_adequate.sh /usr/local/bin/ensure_java_jre_is_adequate.sh COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh -RUN import_certs.sh \ - && install_java.sh \ - && fix_openshift_scripts.sh +RUN rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ + && yum -y update \ + && yum clean all \ + && import_certs.sh \ + && ensure_java_jre_is_adequate.sh \ + && fix_openshift_scripts.sh \ + && rm -rf /var/cache/yum/* # To debug. Warning: too much logs if we enable it. #RUN sed -i 's|\#\!\s*/bin/bash.*|\#\!/bin/bash -xeu|g' /usr/local/bin/install-plugins.sh \ diff --git a/jenkins/master/Dockerfile.rhel7 b/jenkins/master/Dockerfile.rhel7 index 1037e17e1..94fc287a7 100644 --- a/jenkins/master/Dockerfile.rhel7 +++ b/jenkins/master/Dockerfile.rhel7 @@ -14,7 +14,15 @@ ENV TAILOR_VERSION=1.3.4 USER root COPY ./import_certs.sh /usr/local/bin/import_certs.sh -RUN import_certs.sh +COPY ./ensure_java_jre_is_adequate.sh /usr/local/bin/ensure_java_jre_is_adequate.sh +COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh +RUN rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ + && yum -y update \ + && yum clean all \ + && import_certs.sh \ + && ensure_java_jre_is_adequate.sh \ + && fix_openshift_scripts.sh \ + && rm -rf /var/cache/yum/* # Copy configuration and plugins. COPY plugins.rhel7.txt /opt/openshift/configuration/plugins.txt diff --git a/jenkins/master/Dockerfile.ubi8 b/jenkins/master/Dockerfile.ubi8 index 6e1642577..2e326b194 100644 --- a/jenkins/master/Dockerfile.ubi8 +++ b/jenkins/master/Dockerfile.ubi8 @@ -14,7 +14,15 @@ ENV TAILOR_VERSION=1.3.4 USER root COPY ./import_certs.sh /usr/local/bin/import_certs.sh -RUN import_certs.sh +COPY ./ensure_java_jre_is_adequate.sh /usr/local/bin/ensure_java_jre_is_adequate.sh +COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh +RUN rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ + && yum -y update \ + && yum clean all \ + && import_certs.sh \ + && ensure_java_jre_is_adequate.sh \ + && fix_openshift_scripts.sh \ + && rm -rf /var/cache/yum/* # Copy configuration and plugins. COPY plugins.ubi8.txt /opt/openshift/configuration/plugins.txt diff --git a/jenkins/master/ensure_java_jre_is_adequate.sh b/jenkins/master/ensure_java_jre_is_adequate.sh new file mode 100755 index 000000000..b9cede96e --- /dev/null +++ b/jenkins/master/ensure_java_jre_is_adequate.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -eu -o pipefail + +ME="$(basename $0)" +JAVA_INSTALLED_PKGS_LOGS="/tmp/java_installed_pkgs.log" +JAVA_11_INSTALLED_PKGS_LOGS="/tmp/java_11_installed_pkgs.log" +rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_11_INSTALLED_PKGS_LOGS} + +echo "${ME}: Listing versions of java installed: " +yum list installed | grep -i "\(java\|jre\)" | tee -a ${JAVA_INSTALLED_PKGS_LOGS} +grep -i "java-11" ${JAVA_INSTALLED_PKGS_LOGS} > ${JAVA_11_INSTALLED_PKGS_LOGS} + +if ! grep -qi "devel" ${JAVA_11_INSTALLED_PKGS_LOGS} ; then + echo "${ME}:Java-11 is *not* installed. Installing..." + yum -y install java-11-openjdk-devel +else + echo "${ME}: Java-11 is already installed." +fi + +if grep -qi "java-1.8" ${JAVA_INSTALLED_PKGS_LOGS} ; then + echo "${ME}: Java-8 is installed. Removing..." + yum -y remove java-1.8* +else + echo "${ME}: Java-8 is not installed. Correct." +fi + +rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_11_INSTALLED_PKGS_LOGS} + +echo " " +echo "${ME}: Checking java tool versions: " +jar --version +java -version diff --git a/jenkins/master/install_java.sh b/jenkins/master/install_java.sh deleted file mode 100755 index a3c76f93d..000000000 --- a/jenkins/master/install_java.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -set -eu -o pipefail - -ME="$(basename $0)" -JAVA_INSTALLED_PKGS_LOGS="/tmp/java_installed_pkgs.log" - -echo "${ME}: Listing versions of java installed: " -yum list installed | grep -i "\(java\|jre\)" | tee -a ${JAVA_INSTALLED_PKGS_LOGS} - -if grep -qi "java-1.8" "${JAVA_INSTALLED_PKGS_LOGS}" ; then - yum -y remove java-1.8* -else - echo "${ME}: No java 1.8 packages to remove." -fi - -rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key -yum -y update -yum clean all -rm -rf /var/cache/yum/* - -if grep -qi "java-11" "${JAVA_INSTALLED_PKGS_LOGS}" ; then - echo "${ME}: Not installing java 11 because already installed. " -else - yum -y install java-11* -fi - -echo " " -echo "${ME}: Checking java tool versions: " -jar --version -java --version From d4537a30172247e2ea4b01d637c080d4f6c491fd Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Wed, 28 Sep 2022 13:20:27 +0000 Subject: [PATCH 210/217] Simplify the process of ensuring java 11 is used instead of java 8. --- .../agent-base/ensure_java_jre_is_adequate.sh | 35 ++++++++++++++++--- jenkins/master/Dockerfile.centos7 | 19 ++++------ jenkins/master/Dockerfile.rhel7 | 12 +++---- jenkins/master/Dockerfile.ubi8 | 12 +++---- jenkins/master/clean_yum_cache.sh | 7 ++++ jenkins/master/ensure_java_jre_is_adequate.sh | 35 ++++++++++++++++--- 6 files changed, 88 insertions(+), 32 deletions(-) create mode 100755 jenkins/master/clean_yum_cache.sh diff --git a/jenkins/agent-base/ensure_java_jre_is_adequate.sh b/jenkins/agent-base/ensure_java_jre_is_adequate.sh index b9cede96e..a9df9608e 100755 --- a/jenkins/agent-base/ensure_java_jre_is_adequate.sh +++ b/jenkins/agent-base/ensure_java_jre_is_adequate.sh @@ -6,13 +6,38 @@ JAVA_INSTALLED_PKGS_LOGS="/tmp/java_installed_pkgs.log" JAVA_11_INSTALLED_PKGS_LOGS="/tmp/java_11_installed_pkgs.log" rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_11_INSTALLED_PKGS_LOGS} +NEEDS_DEVEL=${1-""} +PKG_NAME_TAIL="headless" +if [ ! -z "${NEEDS_DEVEL}" ] && [ "" != "${NEEDS_DEVEL}" ]; then + NEEDS_DEVEL="true" + PKG_NAME_TAIL="devel" +else + NEEDS_DEVEL="false" + PKG_NAME_TAIL="headless" +fi + +echo "${ME}: Needs development packages? ${NEEDS_DEVEL}" +echo " " echo "${ME}: Listing versions of java installed: " yum list installed | grep -i "\(java\|jre\)" | tee -a ${JAVA_INSTALLED_PKGS_LOGS} -grep -i "java-11" ${JAVA_INSTALLED_PKGS_LOGS} > ${JAVA_11_INSTALLED_PKGS_LOGS} +touch ${JAVA_11_INSTALLED_PKGS_LOGS} +grep -i "java-11" ${JAVA_INSTALLED_PKGS_LOGS} > ${JAVA_11_INSTALLED_PKGS_LOGS} || echo "No java 11 packages found." -if ! grep -qi "devel" ${JAVA_11_INSTALLED_PKGS_LOGS} ; then +NEEDS_INSTALLATION="true" +if [ -f ${JAVA_11_INSTALLED_PKGS_LOGS} ]; then + if grep -qi "${PKG_NAME_TAIL}" ${JAVA_11_INSTALLED_PKGS_LOGS} ; then + NEEDS_INSTALLATION="false" + fi +fi + +# We need devel package in masters to have jar binary. +if [ "true" == "${NEEDS_INSTALLATION}" ]; then echo "${ME}:Java-11 is *not* installed. Installing..." - yum -y install java-11-openjdk-devel + if [ "true" == "${NEEDS_DEVEL}" ]; then + yum -y install java-11-openjdk-devel + else + yum -y install java-11-openjdk-headless + fi else echo "${ME}: Java-11 is already installed." fi @@ -28,5 +53,7 @@ rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_11_INSTALLED_PKGS_LOGS} echo " " echo "${ME}: Checking java tool versions: " -jar --version +if [ "true" == "${NEEDS_DEVEL}" ]; then + jar --version +fi java -version diff --git a/jenkins/master/Dockerfile.centos7 b/jenkins/master/Dockerfile.centos7 index ae89dadef..f2866928b 100644 --- a/jenkins/master/Dockerfile.centos7 +++ b/jenkins/master/Dockerfile.centos7 @@ -13,22 +13,17 @@ ENV TAILOR_VERSION=1.3.4 USER root -rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key -yum -y update -yum clean all -rm -rf /var/cache/yum/* - - COPY ./import_certs.sh /usr/local/bin/import_certs.sh COPY ./ensure_java_jre_is_adequate.sh /usr/local/bin/ensure_java_jre_is_adequate.sh COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh -RUN rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ - && yum -y update \ - && yum clean all \ - && import_certs.sh \ - && ensure_java_jre_is_adequate.sh \ +COPY ./clean_yum_cache.sh /usr/local/bin/clean_yum_cache.sh +RUN import_certs.sh \ + && rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ + && ensure_java_jre_is_adequate.sh master \ && fix_openshift_scripts.sh \ - && rm -rf /var/cache/yum/* + && yum -y update \ + && clean_yum_cache.sh + # To debug. Warning: too much logs if we enable it. #RUN sed -i 's|\#\!\s*/bin/bash.*|\#\!/bin/bash -xeu|g' /usr/local/bin/install-plugins.sh \ diff --git a/jenkins/master/Dockerfile.rhel7 b/jenkins/master/Dockerfile.rhel7 index 94fc287a7..778fe43fb 100644 --- a/jenkins/master/Dockerfile.rhel7 +++ b/jenkins/master/Dockerfile.rhel7 @@ -16,13 +16,13 @@ USER root COPY ./import_certs.sh /usr/local/bin/import_certs.sh COPY ./ensure_java_jre_is_adequate.sh /usr/local/bin/ensure_java_jre_is_adequate.sh COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh -RUN rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ - && yum -y update \ - && yum clean all \ - && import_certs.sh \ - && ensure_java_jre_is_adequate.sh \ +COPY ./clean_yum_cache.sh /usr/local/bin/clean_yum_cache.sh +RUN import_certs.sh \ + && rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ + && ensure_java_jre_is_adequate.sh master \ && fix_openshift_scripts.sh \ - && rm -rf /var/cache/yum/* + && yum -y update \ + && clean_yum_cache.sh # Copy configuration and plugins. COPY plugins.rhel7.txt /opt/openshift/configuration/plugins.txt diff --git a/jenkins/master/Dockerfile.ubi8 b/jenkins/master/Dockerfile.ubi8 index 2e326b194..fda195807 100644 --- a/jenkins/master/Dockerfile.ubi8 +++ b/jenkins/master/Dockerfile.ubi8 @@ -16,13 +16,13 @@ USER root COPY ./import_certs.sh /usr/local/bin/import_certs.sh COPY ./ensure_java_jre_is_adequate.sh /usr/local/bin/ensure_java_jre_is_adequate.sh COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh -RUN rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ - && yum -y update \ - && yum clean all \ - && import_certs.sh \ - && ensure_java_jre_is_adequate.sh \ +COPY ./clean_yum_cache.sh /usr/local/bin/clean_yum_cache.sh +RUN import_certs.sh \ + && rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ + && ensure_java_jre_is_adequate.sh master \ && fix_openshift_scripts.sh \ - && rm -rf /var/cache/yum/* + && yum -y update \ + && clean_yum_cache.sh # Copy configuration and plugins. COPY plugins.ubi8.txt /opt/openshift/configuration/plugins.txt diff --git a/jenkins/master/clean_yum_cache.sh b/jenkins/master/clean_yum_cache.sh new file mode 100755 index 000000000..a4ec6657e --- /dev/null +++ b/jenkins/master/clean_yum_cache.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -eu -o pipefail + +ME="$(basename $0)" + +yum clean all || true +rm -rf /var/cache/yum/* || true diff --git a/jenkins/master/ensure_java_jre_is_adequate.sh b/jenkins/master/ensure_java_jre_is_adequate.sh index b9cede96e..a9df9608e 100755 --- a/jenkins/master/ensure_java_jre_is_adequate.sh +++ b/jenkins/master/ensure_java_jre_is_adequate.sh @@ -6,13 +6,38 @@ JAVA_INSTALLED_PKGS_LOGS="/tmp/java_installed_pkgs.log" JAVA_11_INSTALLED_PKGS_LOGS="/tmp/java_11_installed_pkgs.log" rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_11_INSTALLED_PKGS_LOGS} +NEEDS_DEVEL=${1-""} +PKG_NAME_TAIL="headless" +if [ ! -z "${NEEDS_DEVEL}" ] && [ "" != "${NEEDS_DEVEL}" ]; then + NEEDS_DEVEL="true" + PKG_NAME_TAIL="devel" +else + NEEDS_DEVEL="false" + PKG_NAME_TAIL="headless" +fi + +echo "${ME}: Needs development packages? ${NEEDS_DEVEL}" +echo " " echo "${ME}: Listing versions of java installed: " yum list installed | grep -i "\(java\|jre\)" | tee -a ${JAVA_INSTALLED_PKGS_LOGS} -grep -i "java-11" ${JAVA_INSTALLED_PKGS_LOGS} > ${JAVA_11_INSTALLED_PKGS_LOGS} +touch ${JAVA_11_INSTALLED_PKGS_LOGS} +grep -i "java-11" ${JAVA_INSTALLED_PKGS_LOGS} > ${JAVA_11_INSTALLED_PKGS_LOGS} || echo "No java 11 packages found." -if ! grep -qi "devel" ${JAVA_11_INSTALLED_PKGS_LOGS} ; then +NEEDS_INSTALLATION="true" +if [ -f ${JAVA_11_INSTALLED_PKGS_LOGS} ]; then + if grep -qi "${PKG_NAME_TAIL}" ${JAVA_11_INSTALLED_PKGS_LOGS} ; then + NEEDS_INSTALLATION="false" + fi +fi + +# We need devel package in masters to have jar binary. +if [ "true" == "${NEEDS_INSTALLATION}" ]; then echo "${ME}:Java-11 is *not* installed. Installing..." - yum -y install java-11-openjdk-devel + if [ "true" == "${NEEDS_DEVEL}" ]; then + yum -y install java-11-openjdk-devel + else + yum -y install java-11-openjdk-headless + fi else echo "${ME}: Java-11 is already installed." fi @@ -28,5 +53,7 @@ rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_11_INSTALLED_PKGS_LOGS} echo " " echo "${ME}: Checking java tool versions: " -jar --version +if [ "true" == "${NEEDS_DEVEL}" ]; then + jar --version +fi java -version From ed75e257f69a464c6a984633b46221ed4d117a7c Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Wed, 28 Sep 2022 15:14:59 +0000 Subject: [PATCH 211/217] Ensure we use java 11 everywhere. --- jenkins/agent-base/ensure_java_jre_is_adequate.sh | 8 ++++++++ jenkins/master/Dockerfile.rhel7 | 1 - jenkins/master/Dockerfile.ubi8 | 3 +++ jenkins/master/ensure_java_jre_is_adequate.sh | 8 ++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/jenkins/agent-base/ensure_java_jre_is_adequate.sh b/jenkins/agent-base/ensure_java_jre_is_adequate.sh index a9df9608e..e47617519 100755 --- a/jenkins/agent-base/ensure_java_jre_is_adequate.sh +++ b/jenkins/agent-base/ensure_java_jre_is_adequate.sh @@ -56,4 +56,12 @@ echo "${ME}: Checking java tool versions: " if [ "true" == "${NEEDS_DEVEL}" ]; then jar --version fi + +NO_JAVA_LINK="false" +java -version || NO_JAVA_LINK="true" +if [ "true" == "${NO_JAVA_LINK}" ]; then + JAVA_HOME_FOLDER=$(ls -lah /usr/lib/jvm | grep "java-11-openjdk-11.*\.x86_64" | awk '{print $NF}' | head -1) + JAVA_HOME="/usr/lib/jvm/${JAVA_HOME_FOLDER}" + alternatives --set java ${JAVA_HOME}/bin/java +fi java -version diff --git a/jenkins/master/Dockerfile.rhel7 b/jenkins/master/Dockerfile.rhel7 index 778fe43fb..f5931f7ed 100644 --- a/jenkins/master/Dockerfile.rhel7 +++ b/jenkins/master/Dockerfile.rhel7 @@ -21,7 +21,6 @@ RUN import_certs.sh \ && rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ && ensure_java_jre_is_adequate.sh master \ && fix_openshift_scripts.sh \ - && yum -y update \ && clean_yum_cache.sh # Copy configuration and plugins. diff --git a/jenkins/master/Dockerfile.ubi8 b/jenkins/master/Dockerfile.ubi8 index fda195807..d87ab5747 100644 --- a/jenkins/master/Dockerfile.ubi8 +++ b/jenkins/master/Dockerfile.ubi8 @@ -19,6 +19,9 @@ COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh COPY ./clean_yum_cache.sh /usr/local/bin/clean_yum_cache.sh RUN import_certs.sh \ && rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ + && sed -i 's|enabled\s*=\s*1|enabled=0|g' /etc/yum.repos.d/ci-rpm-mirrors.repo \ + && sed -i 's|enabled\s*=\s*1|enabled=0|g' /etc/yum.repos.d/localdev-* \ + && sed -i 's|enabled\s*=\s*1|enabled=0|g' /etc/yum.repos.d/epel.repo \ && ensure_java_jre_is_adequate.sh master \ && fix_openshift_scripts.sh \ && yum -y update \ diff --git a/jenkins/master/ensure_java_jre_is_adequate.sh b/jenkins/master/ensure_java_jre_is_adequate.sh index a9df9608e..e47617519 100755 --- a/jenkins/master/ensure_java_jre_is_adequate.sh +++ b/jenkins/master/ensure_java_jre_is_adequate.sh @@ -56,4 +56,12 @@ echo "${ME}: Checking java tool versions: " if [ "true" == "${NEEDS_DEVEL}" ]; then jar --version fi + +NO_JAVA_LINK="false" +java -version || NO_JAVA_LINK="true" +if [ "true" == "${NO_JAVA_LINK}" ]; then + JAVA_HOME_FOLDER=$(ls -lah /usr/lib/jvm | grep "java-11-openjdk-11.*\.x86_64" | awk '{print $NF}' | head -1) + JAVA_HOME="/usr/lib/jvm/${JAVA_HOME_FOLDER}" + alternatives --set java ${JAVA_HOME}/bin/java +fi java -version From 58ceade6072bebf120b4bee06a3efec312a08d94 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Wed, 28 Sep 2022 17:31:06 +0200 Subject: [PATCH 212/217] If we do not remove files created by root, we cannot use them with openshift account. --- ods-devenv/scripts/deploy.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ods-devenv/scripts/deploy.sh b/ods-devenv/scripts/deploy.sh index 0b4a14f92..a82f3dc86 100755 --- a/ods-devenv/scripts/deploy.sh +++ b/ods-devenv/scripts/deploy.sh @@ -1603,11 +1603,11 @@ function wait_until_http_svc_is_up_advanced() { if [ -f ${CURL_SVC_OUTPUT_FILE} ] || [ -f ${CURL_SVC_HEADERS_FILE} ]; then echo "Removing files: rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} " - rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} || true + rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} ${CURL_LOGS_CHECK_SVC_FILE} || true - if [ -f ${CURL_SVC_OUTPUT_FILE} ] || [ -f ${CURL_SVC_HEADERS_FILE} ]; then - echo "Removing files (with sudo): rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} " - sudo rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} || true + if [ -f ${CURL_SVC_OUTPUT_FILE} ] || [ -f ${CURL_SVC_HEADERS_FILE} ] || [ -f ${CURL_LOGS_CHECK_SVC_FILE} ]; then + echo "Removing files (with sudo): rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} ${CURL_LOGS_CHECK_SVC_FILE}" + sudo rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} ${CURL_LOGS_CHECK_SVC_FILE} || true fi fi @@ -1625,8 +1625,8 @@ function wait_until_http_svc_is_up_advanced() { # Remove files from previous execution. rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} ${CURL_LOGS_CHECK_SVC_FILE} || true - if [ -f ${CURL_SVC_OUTPUT_FILE} ] || [ -f ${CURL_SVC_HEADERS_FILE} ]; then - echo "[STATUS CHECK] WARNING: Could NOT remove files ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} " + if [ -f ${CURL_SVC_OUTPUT_FILE} ] || [ -f ${CURL_SVC_HEADERS_FILE} ] || [ -f ${CURL_LOGS_CHECK_SVC_FILE} ]; then + echo "[STATUS CHECK] WARNING: Could NOT remove files ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} ${CURL_LOGS_CHECK_SVC_FILE}" fi local CURL_RETURN_VAL=0 @@ -1648,7 +1648,7 @@ function wait_until_http_svc_is_up_advanced() { done # Removes tmp files used for checking. - rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} || true + rm -fv ${CURL_SVC_OUTPUT_FILE} ${CURL_SVC_HEADERS_FILE} ${CURL_LOGS_CHECK_SVC_FILE} || true echo "Service ${SVC_NAME} is up at ${SVC_HTTP_URL}" echo " " From 2c08fee1a41d53dba9f5d2ad1325f6db60870341 Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Wed, 28 Sep 2022 15:39:48 +0000 Subject: [PATCH 213/217] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ba6bf018..17928037e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ - Fix CI/CD problems in Jenkins pipelines ([#1177](https://github.com/opendevstack/ods-core/pull/1177)) - Fixes Python agent does not seems to have java in the path ([#685](https://github.com/opendevstack/ods-quickstarters/issues/685)) - Removes existing differences between jenkins agent base image in Centos 7 and UBI 8 ([#1181](https://github.com/opendevstack/ods-core/pull/1181)) +- Upgrade to Java 11 Jenkins master and agents and increase logging to know why they sometimes die ([#1185](https://github.com/opendevstack/ods-core/pull/1185)) ### Added From b0229a61892cba904aa697dbc28d9ce35d8d11f0 Mon Sep 17 00:00:00 2001 From: "zxBCN Pablos_Ceruelo,Victor (IT EDS) EXTERNAL" Date: Wed, 28 Sep 2022 15:58:46 +0000 Subject: [PATCH 214/217] UBI imgs do not need yum update. --- jenkins/master/Dockerfile.ubi8 | 1 - 1 file changed, 1 deletion(-) diff --git a/jenkins/master/Dockerfile.ubi8 b/jenkins/master/Dockerfile.ubi8 index d87ab5747..8aab71aa4 100644 --- a/jenkins/master/Dockerfile.ubi8 +++ b/jenkins/master/Dockerfile.ubi8 @@ -24,7 +24,6 @@ RUN import_certs.sh \ && sed -i 's|enabled\s*=\s*1|enabled=0|g' /etc/yum.repos.d/epel.repo \ && ensure_java_jre_is_adequate.sh master \ && fix_openshift_scripts.sh \ - && yum -y update \ && clean_yum_cache.sh # Copy configuration and plugins. From 5cdbc912f571be6c68fd75ce489d6a640f2038af Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Thu, 29 Sep 2022 11:44:15 +0200 Subject: [PATCH 215/217] Fixes for different base images --- jenkins/master/Dockerfile.ubi8 | 6 +++--- jenkins/master/disable_yum_repository.sh | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100755 jenkins/master/disable_yum_repository.sh diff --git a/jenkins/master/Dockerfile.ubi8 b/jenkins/master/Dockerfile.ubi8 index 8aab71aa4..5c62d9c5d 100644 --- a/jenkins/master/Dockerfile.ubi8 +++ b/jenkins/master/Dockerfile.ubi8 @@ -17,11 +17,11 @@ COPY ./import_certs.sh /usr/local/bin/import_certs.sh COPY ./ensure_java_jre_is_adequate.sh /usr/local/bin/ensure_java_jre_is_adequate.sh COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh COPY ./clean_yum_cache.sh /usr/local/bin/clean_yum_cache.sh +COPY ./disable_yum_repository.sh /usr/local/bin/disable_yum_repository.sh RUN import_certs.sh \ && rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ - && sed -i 's|enabled\s*=\s*1|enabled=0|g' /etc/yum.repos.d/ci-rpm-mirrors.repo \ - && sed -i 's|enabled\s*=\s*1|enabled=0|g' /etc/yum.repos.d/localdev-* \ - && sed -i 's|enabled\s*=\s*1|enabled=0|g' /etc/yum.repos.d/epel.repo \ + && disable_yum_repository.sh /etc/yum.repos.d/ci-rpm-mirrors.repo \ + /etc/yum.repos.d/localdev-* /etc/yum.repos.d/epel.repo \ && ensure_java_jre_is_adequate.sh master \ && fix_openshift_scripts.sh \ && clean_yum_cache.sh diff --git a/jenkins/master/disable_yum_repository.sh b/jenkins/master/disable_yum_repository.sh new file mode 100755 index 000000000..df8cc2724 --- /dev/null +++ b/jenkins/master/disable_yum_repository.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -eu -o pipefail + +ME="$(basename $0)" + +for filepath in $@; do + if [ -f ${filepath} ]; then + sed -i 's|enabled\s*=\s*1|enabled=0|g' ${filepath} + grep --with-filename 'enabled\s*=' ${filepath} + else + echo "File does not exist: ${filepath}" + fi +done From f01554b7533bdc2704bcfff8e86d854da69fa077 Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 3 Oct 2022 08:53:06 +0200 Subject: [PATCH 216/217] Fixes https://github.com/opendevstack/ods-core/issues/1186 --- jenkins/agent-base/Dockerfile.centos7 | 7 ++++++- jenkins/agent-base/Dockerfile.ubi8 | 2 +- jenkins/agent-base/fix_openshift_run_jnlp_client.sh | 9 ++++----- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/jenkins/agent-base/Dockerfile.centos7 b/jenkins/agent-base/Dockerfile.centos7 index cea170d3a..e5dff4a8e 100644 --- a/jenkins/agent-base/Dockerfile.centos7 +++ b/jenkins/agent-base/Dockerfile.centos7 @@ -11,12 +11,17 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ GIT_LFS_VERSION=2.6.1 \ SKOPEO_VERSION=0.1.37-3 \ OSTREE_VERSION=2018.5-1 \ - JAVA_TOOL_OPTIONS="-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:-UseContainerSupport -Dsun.zip.disableMemoryMapping=true" + JNLP_JAVA_OPTIONS="-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true" ARG APP_DNS ARG SNYK_DISTRIBUTION_URL ARG AQUASEC_SCANNERCLI_URL +# Workaroud we use when running docker build behind proxy +# Basically we put the proxy certificates in certs folder +# COPY certs/* /etc/pki/ca-trust/source/anchors/ +# RUN update-ca-trust force-enable && update-ca-trust extract + COPY ensure_java_jre_is_adequate.sh /usr/local/bin/ RUN rm -fv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/origin-local-release.repo \ && ensure_java_jre_is_adequate.sh \ diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index 9148e7c68..dcd157f0e 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -9,7 +9,7 @@ ENV SONAR_SCANNER_VERSION=3.1.0.1141 \ HELM_PLUGIN_DIFF_VERSION=3.3.2 \ HELM_PLUGIN_SECRETS_VERSION=3.3.5 \ GIT_LFS_VERSION=2.6.1 \ - JAVA_TOOL_OPTIONS="-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:-UseContainerSupport -Dsun.zip.disableMemoryMapping=true" + JNLP_JAVA_OPTIONS="-XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true" ARG APP_DNS ARG SNYK_DISTRIBUTION_URL diff --git a/jenkins/agent-base/fix_openshift_run_jnlp_client.sh b/jenkins/agent-base/fix_openshift_run_jnlp_client.sh index 5e143d143..60038ecb0 100755 --- a/jenkins/agent-base/fix_openshift_run_jnlp_client.sh +++ b/jenkins/agent-base/fix_openshift_run_jnlp_client.sh @@ -11,13 +11,12 @@ if [ ! -f ${FILEPATH} ]; then fi sed -i 's|\#\!/bin/bash|\#\!/bin/bash -x|g' ${FILEPATH} -sed -i "s|^\s*JAVA_TOOL_OPTIONS\s*=.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ - ${FILEPATH} -sed -i "s|^\s*export\s*JAVA_TOOL_OPTIONS.*| echo 'WARNING: JAVA_TOOL_OPTIONS env variable is UNSET.'|g" \ - ${FILEPATH} +sed -i 's|^\(\s*\)set\s*-x\s*$|\1set -x\n\1echo "JNLP_JAVA_OPTIONS=\$JNLP_JAVA_OPTIONS"|g' ${FILEPATH} +sed -i "s|^\(\s*\)JAVA_TOOL_OPTIONS\s*=.*|\1JAVA_TOOL_OPTIONS=|g" ${FILEPATH} sed -i 's|^\(\s*\)JAVA_GC_OPTS\s*=.*|\1JAVA_GC_OPTS=|g' ${FILEPATH} sed -i 's|curl\s*-sS\s*|curl -sSLv |g' ${FILEPATH} -grep -B 3 -A 3 -i '\(bash\|JAVA_TOOL_OPTIONS\|JAVA_GC_OPTS\|curl\)' ${FILEPATH} +set -x +grep -B 5 -A 5 -i '\(bash\|JAVA_TOOL_OPTIONS\|JAVA_GC_OPTS\|JNLP_JAVA_OPTIONS\|curl\)' ${FILEPATH} From 1f6a160635cadea4b7ea4961c154e031cc2276ff Mon Sep 17 00:00:00 2001 From: Victor Pablos Ceruelo Date: Mon, 3 Oct 2022 15:19:58 +0200 Subject: [PATCH 217/217] Refactor to have less COPY cmds in docker images --- jenkins/master/Dockerfile.centos7 | 6 +----- jenkins/master/Dockerfile.rhel7 | 6 +----- jenkins/master/Dockerfile.ubi8 | 7 +------ .../{ => scripts_for_usr-local-bin}/clean_yum_cache.sh | 0 .../disable_yum_repository.sh | 0 .../ensure_java_jre_is_adequate.sh | 0 .../fix_openshift_scripts.sh | 0 .../master/{ => scripts_for_usr-local-bin}/import_certs.sh | 0 .../{ => scripts_for_usr-local-bin}/install_jenkins_lts.sh | 0 .../{ => scripts_for_usr-local-bin}/kube-slave-common.sh | 0 10 files changed, 3 insertions(+), 16 deletions(-) rename jenkins/master/{ => scripts_for_usr-local-bin}/clean_yum_cache.sh (100%) rename jenkins/master/{ => scripts_for_usr-local-bin}/disable_yum_repository.sh (100%) rename jenkins/master/{ => scripts_for_usr-local-bin}/ensure_java_jre_is_adequate.sh (100%) rename jenkins/master/{ => scripts_for_usr-local-bin}/fix_openshift_scripts.sh (100%) rename jenkins/master/{ => scripts_for_usr-local-bin}/import_certs.sh (100%) rename jenkins/master/{ => scripts_for_usr-local-bin}/install_jenkins_lts.sh (100%) rename jenkins/master/{ => scripts_for_usr-local-bin}/kube-slave-common.sh (100%) diff --git a/jenkins/master/Dockerfile.centos7 b/jenkins/master/Dockerfile.centos7 index f2866928b..817ca451c 100644 --- a/jenkins/master/Dockerfile.centos7 +++ b/jenkins/master/Dockerfile.centos7 @@ -13,10 +13,7 @@ ENV TAILOR_VERSION=1.3.4 USER root -COPY ./import_certs.sh /usr/local/bin/import_certs.sh -COPY ./ensure_java_jre_is_adequate.sh /usr/local/bin/ensure_java_jre_is_adequate.sh -COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh -COPY ./clean_yum_cache.sh /usr/local/bin/clean_yum_cache.sh +COPY ./scripts_for_usr-local-bin/* /usr/local/bin/ RUN import_certs.sh \ && rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ && ensure_java_jre_is_adequate.sh master \ @@ -31,7 +28,6 @@ RUN import_certs.sh \ # Copy configuration and plugins. COPY plugins.centos7.txt /opt/openshift/configuration/plugins.txt -COPY kube-slave-common.sh /usr/local/bin/kube-slave-common.sh RUN /usr/local/bin/install-plugins.sh /opt/openshift/configuration/plugins.txt \ && rm -r /opt/openshift/configuration/jobs/OpenShift* || true \ && touch /var/lib/jenkins/configured \ diff --git a/jenkins/master/Dockerfile.rhel7 b/jenkins/master/Dockerfile.rhel7 index f5931f7ed..f2549f23f 100644 --- a/jenkins/master/Dockerfile.rhel7 +++ b/jenkins/master/Dockerfile.rhel7 @@ -13,10 +13,7 @@ ENV TAILOR_VERSION=1.3.4 USER root -COPY ./import_certs.sh /usr/local/bin/import_certs.sh -COPY ./ensure_java_jre_is_adequate.sh /usr/local/bin/ensure_java_jre_is_adequate.sh -COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh -COPY ./clean_yum_cache.sh /usr/local/bin/clean_yum_cache.sh +COPY ./scripts_for_usr-local-bin/* /usr/local/bin/ RUN import_certs.sh \ && rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ && ensure_java_jre_is_adequate.sh master \ @@ -25,7 +22,6 @@ RUN import_certs.sh \ # Copy configuration and plugins. COPY plugins.rhel7.txt /opt/openshift/configuration/plugins.txt -COPY kube-slave-common.sh /usr/local/bin/kube-slave-common.sh RUN /usr/local/bin/install-plugins.sh /opt/openshift/configuration/plugins.txt \ && rm -r /opt/openshift/configuration/jobs/OpenShift* || true \ && touch /var/lib/jenkins/configured \ diff --git a/jenkins/master/Dockerfile.ubi8 b/jenkins/master/Dockerfile.ubi8 index 5c62d9c5d..e71724bbc 100644 --- a/jenkins/master/Dockerfile.ubi8 +++ b/jenkins/master/Dockerfile.ubi8 @@ -13,11 +13,7 @@ ENV TAILOR_VERSION=1.3.4 USER root -COPY ./import_certs.sh /usr/local/bin/import_certs.sh -COPY ./ensure_java_jre_is_adequate.sh /usr/local/bin/ensure_java_jre_is_adequate.sh -COPY ./fix_openshift_scripts.sh /usr/local/bin/fix_openshift_scripts.sh -COPY ./clean_yum_cache.sh /usr/local/bin/clean_yum_cache.sh -COPY ./disable_yum_repository.sh /usr/local/bin/disable_yum_repository.sh +COPY ./scripts_for_usr-local-bin/* /usr/local/bin/ RUN import_certs.sh \ && rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \ && disable_yum_repository.sh /etc/yum.repos.d/ci-rpm-mirrors.repo \ @@ -28,7 +24,6 @@ RUN import_certs.sh \ # Copy configuration and plugins. COPY plugins.ubi8.txt /opt/openshift/configuration/plugins.txt -COPY kube-slave-common.sh /usr/local/bin/kube-slave-common.sh RUN /usr/local/bin/install-plugins.sh /opt/openshift/configuration/plugins.txt \ && rm -r /opt/openshift/configuration/jobs/OpenShift* || true \ && touch /var/lib/jenkins/configured \ diff --git a/jenkins/master/clean_yum_cache.sh b/jenkins/master/scripts_for_usr-local-bin/clean_yum_cache.sh similarity index 100% rename from jenkins/master/clean_yum_cache.sh rename to jenkins/master/scripts_for_usr-local-bin/clean_yum_cache.sh diff --git a/jenkins/master/disable_yum_repository.sh b/jenkins/master/scripts_for_usr-local-bin/disable_yum_repository.sh similarity index 100% rename from jenkins/master/disable_yum_repository.sh rename to jenkins/master/scripts_for_usr-local-bin/disable_yum_repository.sh diff --git a/jenkins/master/ensure_java_jre_is_adequate.sh b/jenkins/master/scripts_for_usr-local-bin/ensure_java_jre_is_adequate.sh similarity index 100% rename from jenkins/master/ensure_java_jre_is_adequate.sh rename to jenkins/master/scripts_for_usr-local-bin/ensure_java_jre_is_adequate.sh diff --git a/jenkins/master/fix_openshift_scripts.sh b/jenkins/master/scripts_for_usr-local-bin/fix_openshift_scripts.sh similarity index 100% rename from jenkins/master/fix_openshift_scripts.sh rename to jenkins/master/scripts_for_usr-local-bin/fix_openshift_scripts.sh diff --git a/jenkins/master/import_certs.sh b/jenkins/master/scripts_for_usr-local-bin/import_certs.sh similarity index 100% rename from jenkins/master/import_certs.sh rename to jenkins/master/scripts_for_usr-local-bin/import_certs.sh diff --git a/jenkins/master/install_jenkins_lts.sh b/jenkins/master/scripts_for_usr-local-bin/install_jenkins_lts.sh similarity index 100% rename from jenkins/master/install_jenkins_lts.sh rename to jenkins/master/scripts_for_usr-local-bin/install_jenkins_lts.sh diff --git a/jenkins/master/kube-slave-common.sh b/jenkins/master/scripts_for_usr-local-bin/kube-slave-common.sh similarity index 100% rename from jenkins/master/kube-slave-common.sh rename to jenkins/master/scripts_for_usr-local-bin/kube-slave-common.sh