From 782cf9084d2ea80347aa14940dbc72b98ba7deeb Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 1 Jul 2021 14:56:28 +0300 Subject: [PATCH 01/67] add CSI IBM Driver operator CI --- .github/workflows/operator_ci.yaml | 158 ++++++++++++++++++++++++ build/ci/deploy_driver.sh | 30 +++++ build/ci/get_operator_github_branch.sh | 38 ++++++ build/ci/save_driver_pods_logs.sh | 9 ++ build/ci/setup_ci_dependencies.sh | 4 + build/ci/wait_for_driver_to_be_ready.sh | 24 ++++ build/ci/wait_for_k8s_ready.sh | 16 +++ 7 files changed, 279 insertions(+) create mode 100644 .github/workflows/operator_ci.yaml create mode 100755 build/ci/deploy_driver.sh create mode 100755 build/ci/get_operator_github_branch.sh create mode 100755 build/ci/save_driver_pods_logs.sh create mode 100755 build/ci/setup_ci_dependencies.sh create mode 100755 build/ci/wait_for_driver_to_be_ready.sh create mode 100755 build/ci/wait_for_k8s_ready.sh diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml new file mode 100644 index 000000000..6942e9408 --- /dev/null +++ b/.github/workflows/operator_ci.yaml @@ -0,0 +1,158 @@ +name: CSI IBM Driver operator CI +on: + push: + branches: + - develop + - master + pull_request: + branches: + - develop + - master +jobs: + prepare_env: + name: "prepare env" + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Setup dependencies + run: | + build/ci/setup_ci_dependencies.sh + - name: Save dependencies files + uses: actions/upload-artifact@v2 + with: + name: ci-dependencies + path: | + /home/runner/.bash_profile + retention-days: 1 + + Unit_testing: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Run unit tests + run: | + mkdir -p build/_output/reports && chmod 777 build/_output/reports + ./build/ci/run_unittests.sh + + Run_OLM_verifications: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Run OLM verifications + run: | + ./build/ci/run_olm_verification.sh + + CSI-Build-and-push-images: + runs-on: ubuntu-latest + needs: + - Unit_testing + - Run_OLM_verifications + strategy: + matrix: + image_type: ['nodeagent', 'operator'] + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1.3.0 + - uses: FranzDiebold/github-env-vars-action@v2 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: 'csiblock1' + password: '${{ secrets.CSIBLOCK_DOCKERHUB_PASSWORD }}' + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-${{ matrix.image_type }} + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + - name: Create github branch parameter + id: tested_github_branch + run: | + docker_image_branch_tag=`echo $CI_ACTION_REF_NAME| sed 's|/|.|g'` + echo "::set-output name=docker_image_branch_tag::${docker_image_branch_tag}" + - name: Build and push ${{ matrix.image_type }} + uses: docker/build-push-action@v2 + with: + context: . + platforms: linux/amd64,linux/ppc64le,linux/s390x + push: true + tags: | + csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ steps.tested_github_branch.outputs.docker_image_branch_tag }}_${{ github.run_number }} + csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ steps.tested_github_branch.outputs.docker_image_branch_tag }} + csiblock1/ibm-block-csi-${{ matrix.image_type }}:latest + file: build/Dockerfile.${{ matrix.image_type }} + cache-from: type=local,src=/tmp/.buildx-${{ matrix.image_type }} + cache-to: type=local,dest=/tmp/.buildx-new-${{ matrix.image_type }} + # Temp fix + # https://github.com/docker/build-push-action/issues/252 + # https://github.com/moby/buildkit/issues/1896 + - name: Move cache + run: | + [[ -G /tmp/.buildx-${{ matrix.image_type }} ]] && rm -rf /tmp/.buildx-${{ matrix.image_type }} + mv /tmp/.buildx-new-${{ matrix.image_type }} /tmp/.buildx-${{ matrix.image_type }} + outputs: + operator_image_tag_for_test: "${{ steps.tested_github_branch.outputs.docker_image_branch_tag }}_${{ github.run_number }}" + + create-cluster: + runs-on: ubuntu-latest + needs: CSI-Build-and-push-images + env: + csiblock_dockerhub_password: ${{ secrets.CSIBLOCK_DOCKERHUB_PASSWORD }} + controller_repository_for_test: csiblock1/ibm-block-csi-controller + node_repository_for_test: csiblock1/ibm-block-csi-node + operator_image_repository_for_test: csiblock1/ibm-block-csi-operator + timeout-minutes: 30 + steps: + - name: Checkout + uses: actions/checkout@v2 + - uses: FranzDiebold/github-env-vars-action@v2 + - name: Retrieve ci dependencies + uses: actions/download-artifact@v2 + with: + name: ci-dependencies + path: /home/runner + - name: Get the operator github branch + id: operator_github_branch + run: | + build/ci/get_operator_github_branch.sh + env: + github_token: ${{ secrets.CSIBLOCK_GITHUB_TOKEN }} + - name: Create k8s Kind Cluster + uses: helm/kind-action@v1.1.0 + with: + version: v0.11.1 + - name: Wait for k8s cluster to be ready + run: | + build/ci/wait_for_k8s_ready.sh + - name: Deploy ibm block csi driver + run: | + build/ci/deploy_driver.sh + env: + driver_images_tag: "${{ steps.operator_github_branch.outputs.docker_image_branch_tag }}" + operator_image_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" + operator_file: "deploy/installer/generated/ibm-block-csi-operator.yaml" + cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" + - name: Wait for csi ibm block driver to be ready + run: | + build/ci/wait_for_driver_to_be_ready.sh + - name: Save driver pods logs + if: always() + run: | + build/ci/save_driver_pods_logs.sh + - name: Upload driver pods logs + if: always() + uses: actions/upload-artifact@v2 + with: + name: Driver logs + path: | + /tmp/driver_*.txt + retention-days: 7 diff --git a/build/ci/deploy_driver.sh b/build/ci/deploy_driver.sh new file mode 100755 index 000000000..61750c8e0 --- /dev/null +++ b/build/ci/deploy_driver.sh @@ -0,0 +1,30 @@ +#!/bin/bash -xel +set +o pipefail + +if [ "$driver_images_tag" == "develop" ]; then + driver_images_tag=latest +fi +operator_image_for_test=$operator_image_repository_for_test:$operator_image_tag_for_test + +kind_node_name=`docker ps --format "{{.Names}}"` +docker exec -i $kind_node_name apt-get update +docker exec -i $kind_node_name apt -y install open-iscsi + +cd $(dirname $cr_file) +yq eval ".spec.controller.repository |= env(controller_repository_for_test)" $(basename $cr_file) -i +yq eval ".spec.controller.tag |= env(driver_images_tag)" $(basename $cr_file) -i +yq eval ".spec.node.repository |= env(node_repository_for_test)" $(basename $cr_file) -i +yq eval ".spec.node.tag |= env(driver_images_tag)" $(basename $cr_file) -i +cd - + +cd $(dirname $operator_file) +operator_image_in_branch=`yq eval '(.spec.template.spec.containers[0].image | select(. == "*ibmcom*"))' $(basename $operator_file)` +sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_file) +cd - + +cat $operator_file | grep image: +cat $cr_file | grep repository: +cat $cr_file | grep tag: + +kubectl apply -f $operator_file +kubectl apply -f $cr_file \ No newline at end of file diff --git a/build/ci/get_operator_github_branch.sh b/build/ci/get_operator_github_branch.sh new file mode 100755 index 000000000..829a2719c --- /dev/null +++ b/build/ci/get_operator_github_branch.sh @@ -0,0 +1,38 @@ +#!/bin/bash -xe +set +o pipefail + +operator_branch=develop + +token=`curl -X POST -H "Content-Type: application/json" -d '{"username": "csiblock1", "password": "'$csiblock_dockerhub_password'"}' https://hub.docker.com/v2/users/login | jq .token` +token=`echo ${token//\"}` +controller_image_tags=`curl -s -H "Authorization: JWT ${token}" https://hub.docker.com/v2/namespaces/csiblock1/repositories/ibm-block-csi-controller/images | jq .results[0] | jq .tags | jq -c '.[]' | jq .tag` +node_image_tags=`curl -s -H "Authorization: JWT ${token}" https://hub.docker.com/v2/namespaces/csiblock1/repositories/ibm-block-csi-node/images | jq .results[0] | jq .tags | jq -c '.[]' | jq .tag` +does_the_docker_image_has_tag(){ + image_tags=$@ + does_docker_image_has_tag=false + for tag in $image_tags + do + tag=`echo ${tag//\"}` + if [[ "$tag" == `echo $CI_ACTION_REF_NAME | sed 's|/|.|g'` ]]; then + does_docker_image_has_tag=true + fi + done + echo $does_docker_image_has_tag +} + +does_controller_docker_image_has_tag=$(does_the_docker_image_has_tag $controller_image_tags) +does_node_docker_image_has_tag=$(does_the_docker_image_has_tag $node_image_tags) + +if [ $does_controller_docker_image_has_tag == "true" ] && [ $does_node_docker_image_has_tag == "true" ]; then + operator_branches=`curl -H "Authorization: token $github_token" https://api.github.com/repos/IBM/ibm-block-csi-operator/branches | jq -c '.[]' | jq -r .name` + for branch_name in $operator_branches + do + if [ "$branch_name" == "$CI_ACTION_REF_NAME" ]; then + operator_branch=$CI_ACTION_REF_NAME + fi + + done +fi + +docker_image_branch_tag=`echo $operator_branch| sed 's|/|.|g'` +echo "::set-output name=docker_image_branch_tag::${docker_image_branch_tag}" diff --git a/build/ci/save_driver_pods_logs.sh b/build/ci/save_driver_pods_logs.sh new file mode 100755 index 000000000..8c7e31db2 --- /dev/null +++ b/build/ci/save_driver_pods_logs.sh @@ -0,0 +1,9 @@ +#!/bin/bash -x + +kubectl logs $(kubectl get pod -l csi | grep controller | awk '{print$1}') -c ibm-block-csi-controller > /tmp/driver_$(kubectl get pod -l csi | grep controller | awk '{print$1}')_logs.txt +kubectl logs $(kubectl get pod -l csi | grep node | awk '{print$1}') -c ibm-block-csi-node > /tmp/driver_$(kubectl get pod -l csi | grep node | awk '{print$1}')_logs.txt +kubectl logs $(kubectl get pod -l csi | grep operator | awk '{print$1}') > /tmp/driver_$(kubectl get pod -l csi | grep operator | awk '{print$1}')_logs.txt + +kubectl describe pod $(kubectl get pod -l csi | grep controller | awk '{print$1}') > /tmp/driver_$(kubectl get pod -l csi | grep controller | awk '{print$1}')_events.txt +kubectl describe pod $(kubectl get pod -l csi | grep node | awk '{print$1}') > /tmp/driver_$(kubectl get pod -l csi | grep node | awk '{print$1}')_events.txt +kubectl describe pod $(kubectl get pod -l csi | grep operator | awk '{print$1}') > /tmp/driver_$(kubectl get pod -l csi | grep operator | awk '{print$1}')_events.txt diff --git a/build/ci/setup_ci_dependencies.sh b/build/ci/setup_ci_dependencies.sh new file mode 100755 index 000000000..fa4dabf9d --- /dev/null +++ b/build/ci/setup_ci_dependencies.sh @@ -0,0 +1,4 @@ +#!/bin/bash -xe +set +o pipefail + +echo $'yq() {\n docker run --rm -e operator_image_for_test=$operator_image_for_test -e controller_repository_for_test=$controller_repository_for_test -e node_repository_for_test=$node_repository_for_test -e driver_images_tag=$driver_images_tag -i -v "${PWD}":/workdir mikefarah/yq:4 "$@"\n}' >> /home/runner/.bash_profile diff --git a/build/ci/wait_for_driver_to_be_ready.sh b/build/ci/wait_for_driver_to_be_ready.sh new file mode 100755 index 000000000..e0c502912 --- /dev/null +++ b/build/ci/wait_for_driver_to_be_ready.sh @@ -0,0 +1,24 @@ +#!/bin/bash -xe +set +o pipefail + +driver_is_ready=false +amount_of_seconds_that_driver_pods_are_running=0 +amount_of_seconds_that_driver_pods_should_be_running=10 +while [ "$(kubectl get pod -A -l csi | grep controller | wc -l)" -eq 0 ]; do + echo "The controller is not deployed" + sleep 1 +done +while [ $driver_is_ready == "false" ]; do + if [ "$(kubectl get pod -A -l csi | grep -iv running | grep -iv name | wc -l)" -eq 0 ]; then + ((amount_of_seconds_that_driver_pods_are_running=amount_of_seconds_that_driver_pods_are_running+1)) + if [ $amount_of_seconds_that_driver_pods_are_running -eq $amount_of_seconds_that_driver_pods_should_be_running ]; then + driver_is_ready=true + fi + else + amount_of_seconds_that_driver_pods_are_running=0 + fi + kubectl get pod -A -l csi | grep -iv running | grep -iv name + sleep 1 +done +echo Driver is running +kubectl get pod -A -l csi diff --git a/build/ci/wait_for_k8s_ready.sh b/build/ci/wait_for_k8s_ready.sh new file mode 100755 index 000000000..52287e007 --- /dev/null +++ b/build/ci/wait_for_k8s_ready.sh @@ -0,0 +1,16 @@ +#!/bin/bash -xe +set +o pipefail + +echo "Wait for all the pods to be in running state" +while [ "$(kubectl get pod -A | grep 0/ | grep -iv name | wc -l)" -gt 0 ]; do + echo Some pods did not start thier containers + kubectl get pod -A | grep 0/ | grep -iv name + sleep 5 +done +while [ "$(kubectl get pod -A | grep -iv running | grep -iv name | wc -l)" -gt 0 ]; do + echo Some pods are still not in running state + kubectl get pod -A | grep -iv running | grep -iv name + sleep 5 +done +echo Cluster is ready +kubectl get pod -A From ccd312e7d61842a2b164fceaed3d5573730c05ed Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 1 Jul 2021 15:03:49 +0300 Subject: [PATCH 02/67] change wait for driver script --- build/ci/wait_for_driver_to_be_ready.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/wait_for_driver_to_be_ready.sh b/build/ci/wait_for_driver_to_be_ready.sh index e0c502912..7f9dbe434 100755 --- a/build/ci/wait_for_driver_to_be_ready.sh +++ b/build/ci/wait_for_driver_to_be_ready.sh @@ -17,7 +17,7 @@ while [ $driver_is_ready == "false" ]; do else amount_of_seconds_that_driver_pods_are_running=0 fi - kubectl get pod -A -l csi | grep -iv running | grep -iv name + kubectl get pod -A -l csi sleep 1 done echo Driver is running From 3881a4e253241ef6684eb11b7a0f9a7d446e01cb Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 1 Jul 2021 16:47:30 +0300 Subject: [PATCH 03/67] change does_the_docker_image_has_tag --- build/ci/get_operator_github_branch.sh | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/build/ci/get_operator_github_branch.sh b/build/ci/get_operator_github_branch.sh index 829a2719c..bea0dd041 100755 --- a/build/ci/get_operator_github_branch.sh +++ b/build/ci/get_operator_github_branch.sh @@ -2,26 +2,25 @@ set +o pipefail operator_branch=develop +DOCKER_HUB_USERNAME=csiblock1 +DOCKER_HUB_PASSWORD=$csiblock_dockerhub_password +wanted_image_tag=`echo $CI_ACTION_REF_NAME | sed 's|/|.|g'` -token=`curl -X POST -H "Content-Type: application/json" -d '{"username": "csiblock1", "password": "'$csiblock_dockerhub_password'"}' https://hub.docker.com/v2/users/login | jq .token` -token=`echo ${token//\"}` -controller_image_tags=`curl -s -H "Authorization: JWT ${token}" https://hub.docker.com/v2/namespaces/csiblock1/repositories/ibm-block-csi-controller/images | jq .results[0] | jq .tags | jq -c '.[]' | jq .tag` -node_image_tags=`curl -s -H "Authorization: JWT ${token}" https://hub.docker.com/v2/namespaces/csiblock1/repositories/ibm-block-csi-node/images | jq .results[0] | jq .tags | jq -c '.[]' | jq .tag` does_the_docker_image_has_tag(){ - image_tags=$@ + driver_component=$1 does_docker_image_has_tag=false + image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $wanted_image_tag | awk '{print$2}'` for tag in $image_tags do - tag=`echo ${tag//\"}` - if [[ "$tag" == `echo $CI_ACTION_REF_NAME | sed 's|/|.|g'` ]]; then + if [[ "$tag" == "$wanted_image_tag" ]]; then does_docker_image_has_tag=true fi done echo $does_docker_image_has_tag } -does_controller_docker_image_has_tag=$(does_the_docker_image_has_tag $controller_image_tags) -does_node_docker_image_has_tag=$(does_the_docker_image_has_tag $node_image_tags) +does_controller_docker_image_has_tag=$(does_the_docker_image_has_tag controller) +does_node_docker_image_has_tag=$(does_the_docker_image_has_tag node) if [ $does_controller_docker_image_has_tag == "true" ] && [ $does_node_docker_image_has_tag == "true" ]; then operator_branches=`curl -H "Authorization: token $github_token" https://api.github.com/repos/IBM/ibm-block-csi-operator/branches | jq -c '.[]' | jq -r .name` From 11658a1e6dbd2fabd9b32f07d22fde8036c670f5 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 1 Jul 2021 16:58:19 +0300 Subject: [PATCH 04/67] add docker-hub command --- .github/workflows/operator_ci.yaml | 16 ++++++++++++++++ build/ci/setup_ci_dependencies.sh | 3 +++ 2 files changed, 19 insertions(+) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 6942e9408..1718e0735 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -15,9 +15,17 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' - name: Setup dependencies run: | build/ci/setup_ci_dependencies.sh + - uses: actions/cache@v2 + with: + path: ${{ env.pythonLocation }} + key: ${{ env.pythonLocation }}-${{ hashFiles('dev-requirements.txt') }} - name: Save dependencies files uses: actions/upload-artifact@v2 with: @@ -120,6 +128,14 @@ jobs: with: name: ci-dependencies path: /home/runner + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + - uses: actions/cache@v2 + with: + path: ${{ env.pythonLocation }} + key: ${{ env.pythonLocation }}-${{ hashFiles('dev-requirements.txt') }} - name: Get the operator github branch id: operator_github_branch run: | diff --git a/build/ci/setup_ci_dependencies.sh b/build/ci/setup_ci_dependencies.sh index fa4dabf9d..2a62b0323 100755 --- a/build/ci/setup_ci_dependencies.sh +++ b/build/ci/setup_ci_dependencies.sh @@ -1,4 +1,7 @@ #!/bin/bash -xe set +o pipefail +python -m pip install --upgrade pip docker-hub==2.2.0 +echo yq > dev-requirements.txt + echo $'yq() {\n docker run --rm -e operator_image_for_test=$operator_image_for_test -e controller_repository_for_test=$controller_repository_for_test -e node_repository_for_test=$node_repository_for_test -e driver_images_tag=$driver_images_tag -i -v "${PWD}":/workdir mikefarah/yq:4 "$@"\n}' >> /home/runner/.bash_profile From b32d494f1fb2b8ee98c5f40cd7aa75fd2b97d793 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 1 Jul 2021 17:41:20 +0300 Subject: [PATCH 05/67] not fail on getting the image tags --- build/ci/get_operator_github_branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/get_operator_github_branch.sh b/build/ci/get_operator_github_branch.sh index bea0dd041..690742a96 100755 --- a/build/ci/get_operator_github_branch.sh +++ b/build/ci/get_operator_github_branch.sh @@ -9,7 +9,7 @@ wanted_image_tag=`echo $CI_ACTION_REF_NAME | sed 's|/|.|g'` does_the_docker_image_has_tag(){ driver_component=$1 does_docker_image_has_tag=false - image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $wanted_image_tag | awk '{print$2}'` + export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $wanted_image_tag | awk '{print$2}'` for tag in $image_tags do if [[ "$tag" == "$wanted_image_tag" ]]; then From 0cf10150c76a0eeb32a7b1ea1354652736fcb291 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 5 Jul 2021 11:17:51 +0300 Subject: [PATCH 06/67] add break in does_the_docker_image_has_tag --- build/ci/deploy_driver.sh | 2 +- build/ci/get_operator_github_branch.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/build/ci/deploy_driver.sh b/build/ci/deploy_driver.sh index 61750c8e0..88dc45c74 100755 --- a/build/ci/deploy_driver.sh +++ b/build/ci/deploy_driver.sh @@ -27,4 +27,4 @@ cat $cr_file | grep repository: cat $cr_file | grep tag: kubectl apply -f $operator_file -kubectl apply -f $cr_file \ No newline at end of file +kubectl apply -f $cr_file diff --git a/build/ci/get_operator_github_branch.sh b/build/ci/get_operator_github_branch.sh index 690742a96..0b1d86e1d 100755 --- a/build/ci/get_operator_github_branch.sh +++ b/build/ci/get_operator_github_branch.sh @@ -14,6 +14,7 @@ does_the_docker_image_has_tag(){ do if [[ "$tag" == "$wanted_image_tag" ]]; then does_docker_image_has_tag=true + break fi done echo $does_docker_image_has_tag From b6dd4ece8c4c6f524c7da53181f286fca7a09f76 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 8 Jul 2021 09:14:59 +0300 Subject: [PATCH 07/67] add permissions to edit cr files --- build/ci/deploy_driver.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build/ci/deploy_driver.sh b/build/ci/deploy_driver.sh index 88dc45c74..4ac2ee382 100755 --- a/build/ci/deploy_driver.sh +++ b/build/ci/deploy_driver.sh @@ -11,10 +11,10 @@ docker exec -i $kind_node_name apt-get update docker exec -i $kind_node_name apt -y install open-iscsi cd $(dirname $cr_file) -yq eval ".spec.controller.repository |= env(controller_repository_for_test)" $(basename $cr_file) -i -yq eval ".spec.controller.tag |= env(driver_images_tag)" $(basename $cr_file) -i -yq eval ".spec.node.repository |= env(node_repository_for_test)" $(basename $cr_file) -i -yq eval ".spec.node.tag |= env(driver_images_tag)" $(basename $cr_file) -i +sudo yq eval ".spec.controller.repository |= env(controller_repository_for_test)" $(basename $cr_file) -i +sudo yq eval ".spec.controller.tag |= env(driver_images_tag)" $(basename $cr_file) -i +sudo yq eval ".spec.node.repository |= env(node_repository_for_test)" $(basename $cr_file) -i +sudo yq eval ".spec.node.tag |= env(driver_images_tag)" $(basename $cr_file) -i cd - cd $(dirname $operator_file) From 9546870becc479adc8cfc1b7d4bc7b9c509d3621 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 8 Jul 2021 10:02:21 +0300 Subject: [PATCH 08/67] change olm verification to olm validation --- .github/workflows/operator_ci.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 1718e0735..96641cdc3 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -44,20 +44,20 @@ jobs: mkdir -p build/_output/reports && chmod 777 build/_output/reports ./build/ci/run_unittests.sh - Run_OLM_verifications: + Run_OLM_validation: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - - name: Run OLM verifications + - name: Run OLM validation run: | - ./build/ci/run_olm_verification.sh + ./build/ci/run_olm_validation.sh CSI-Build-and-push-images: runs-on: ubuntu-latest needs: - Unit_testing - - Run_OLM_verifications + - Run_OLM_validation strategy: matrix: image_type: ['nodeagent', 'operator'] From a420bee241e2e1855d6b621cdb20341b96863e1e Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 8 Jul 2021 10:46:12 +0300 Subject: [PATCH 09/67] remove sudo from changing the cr files --- build/ci/deploy_driver.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/build/ci/deploy_driver.sh b/build/ci/deploy_driver.sh index 4ac2ee382..967ed6567 100755 --- a/build/ci/deploy_driver.sh +++ b/build/ci/deploy_driver.sh @@ -11,10 +11,11 @@ docker exec -i $kind_node_name apt-get update docker exec -i $kind_node_name apt -y install open-iscsi cd $(dirname $cr_file) -sudo yq eval ".spec.controller.repository |= env(controller_repository_for_test)" $(basename $cr_file) -i -sudo yq eval ".spec.controller.tag |= env(driver_images_tag)" $(basename $cr_file) -i -sudo yq eval ".spec.node.repository |= env(node_repository_for_test)" $(basename $cr_file) -i -sudo yq eval ".spec.node.tag |= env(driver_images_tag)" $(basename $cr_file) -i +chmod 777 $(basename $cr_file) +yq eval ".spec.controller.repository |= env(controller_repository_for_test)" $(basename $cr_file) -i +yq eval ".spec.controller.tag |= env(driver_images_tag)" $(basename $cr_file) -i +yq eval ".spec.node.repository |= env(node_repository_for_test)" $(basename $cr_file) -i +yq eval ".spec.node.tag |= env(driver_images_tag)" $(basename $cr_file) -i cd - cd $(dirname $operator_file) From 359459bf6f49b1e0b2de3ceaa582bb41db6686c9 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 12 Jul 2021 12:15:58 +0300 Subject: [PATCH 10/67] answer some code review comments --- build/ci/deploy_driver.sh | 2 +- build/ci/setup_ci_dependencies.sh | 10 ++++++++- build/ci/wait_for_driver_to_be_ready.sh | 6 +++--- build/ci/wait_for_k8s_ready.sh | 28 ++++++++++++++----------- 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/build/ci/deploy_driver.sh b/build/ci/deploy_driver.sh index 967ed6567..f4a6ef6f2 100755 --- a/build/ci/deploy_driver.sh +++ b/build/ci/deploy_driver.sh @@ -11,7 +11,7 @@ docker exec -i $kind_node_name apt-get update docker exec -i $kind_node_name apt -y install open-iscsi cd $(dirname $cr_file) -chmod 777 $(basename $cr_file) +chmod 547 $(basename $cr_file) yq eval ".spec.controller.repository |= env(controller_repository_for_test)" $(basename $cr_file) -i yq eval ".spec.controller.tag |= env(driver_images_tag)" $(basename $cr_file) -i yq eval ".spec.node.repository |= env(node_repository_for_test)" $(basename $cr_file) -i diff --git a/build/ci/setup_ci_dependencies.sh b/build/ci/setup_ci_dependencies.sh index 2a62b0323..f21e6744b 100755 --- a/build/ci/setup_ci_dependencies.sh +++ b/build/ci/setup_ci_dependencies.sh @@ -4,4 +4,12 @@ set +o pipefail python -m pip install --upgrade pip docker-hub==2.2.0 echo yq > dev-requirements.txt -echo $'yq() {\n docker run --rm -e operator_image_for_test=$operator_image_for_test -e controller_repository_for_test=$controller_repository_for_test -e node_repository_for_test=$node_repository_for_test -e driver_images_tag=$driver_images_tag -i -v "${PWD}":/workdir mikefarah/yq:4 "$@"\n}' >> /home/runner/.bash_profile +cat >>/home/runner/.bash_profile <<'EOL' +yq() { + docker run --rm -e operator_image_for_test=$operator_image_for_test\ + -e controller_repository_for_test=$controller_repository_for_test\ + -e node_repository_for_test=$node_repository_for_test\ + -e driver_images_tag=$driver_images_tag\ + -i -v "${PWD}":/workdir mikefarah/yq "$@" +} +EOL \ No newline at end of file diff --git a/build/ci/wait_for_driver_to_be_ready.sh b/build/ci/wait_for_driver_to_be_ready.sh index 7f9dbe434..07651962f 100755 --- a/build/ci/wait_for_driver_to_be_ready.sh +++ b/build/ci/wait_for_driver_to_be_ready.sh @@ -2,15 +2,15 @@ set +o pipefail driver_is_ready=false -amount_of_seconds_that_driver_pods_are_running=0 -amount_of_seconds_that_driver_pods_should_be_running=10 +actual_driver_running_time_in_seconds=0 +minimum_driver_running_time_in_seconds=10 while [ "$(kubectl get pod -A -l csi | grep controller | wc -l)" -eq 0 ]; do echo "The controller is not deployed" sleep 1 done while [ $driver_is_ready == "false" ]; do if [ "$(kubectl get pod -A -l csi | grep -iv running | grep -iv name | wc -l)" -eq 0 ]; then - ((amount_of_seconds_that_driver_pods_are_running=amount_of_seconds_that_driver_pods_are_running+1)) + ((amount_of_seconds_that_driver_pods_are_running++)) if [ $amount_of_seconds_that_driver_pods_are_running -eq $amount_of_seconds_that_driver_pods_should_be_running ]; then driver_is_ready=true fi diff --git a/build/ci/wait_for_k8s_ready.sh b/build/ci/wait_for_k8s_ready.sh index 52287e007..565f83f4e 100755 --- a/build/ci/wait_for_k8s_ready.sh +++ b/build/ci/wait_for_k8s_ready.sh @@ -1,16 +1,20 @@ #!/bin/bash -xe set +o pipefail -echo "Wait for all the pods to be in running state" -while [ "$(kubectl get pod -A | grep 0/ | grep -iv name | wc -l)" -gt 0 ]; do - echo Some pods did not start thier containers - kubectl get pod -A | grep 0/ | grep -iv name - sleep 5 -done -while [ "$(kubectl get pod -A | grep -iv running | grep -iv name | wc -l)" -gt 0 ]; do - echo Some pods are still not in running state - kubectl get pod -A | grep -iv running | grep -iv name - sleep 5 +is_kubernetes_cluster_ready (){ + pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` + all_the_containers_are_runninig=true + for pod in $pods; do + running_containers=`echo $pod | awk -F / '{print$1}'` + wanted_containers=`echo $pod | awk -F / '{print$2}'` + if [ $running_containers != $wanted_containers ]; then + all_the_containers_are_runninig=false + break + fi + done + echo $all_the_containers_are_runninig +} + +while [[ `is_kubernetes_cluster_ready` == "false" ]]; do + kubectl get pods -A done -echo Cluster is ready -kubectl get pod -A From 564df3e4ca3b66bd57994c45933dc02b58fff018 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 12 Jul 2021 13:31:58 +0300 Subject: [PATCH 11/67] change the image tag --- .github/workflows/operator_ci.yaml | 14 +++++++++----- build/ci/get_operator_github_branch.sh | 11 ++++++----- build/ci/save_driver_pods_logs.sh | 22 ++++++++++++++++------ build/ci/setup_ci_dependencies.sh | 8 +++++++- build/ci/wait_for_driver_to_be_ready.sh | 6 +++--- 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 96641cdc3..437ad4b8e 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -1,4 +1,4 @@ -name: CSI IBM Driver operator CI +name: Operator Build on: push: branches: @@ -9,7 +9,7 @@ on: - develop - master jobs: - prepare_env: + Prepare_env: name: "prepare env" runs-on: ubuntu-latest steps: @@ -20,6 +20,7 @@ jobs: with: python-version: '3.x' - name: Setup dependencies + id: setup_dependencies run: | build/ci/setup_ci_dependencies.sh - uses: actions/cache@v2 @@ -33,6 +34,8 @@ jobs: path: | /home/runner/.bash_profile retention-days: 1 + outputs: + image_version: "${{ steps.setup_dependencies.outputs.image_version }}" Unit_testing: runs-on: ubuntu-latest @@ -58,6 +61,7 @@ jobs: needs: - Unit_testing - Run_OLM_validation + - Prepare_env strategy: matrix: image_type: ['nodeagent', 'operator'] @@ -94,7 +98,7 @@ jobs: platforms: linux/amd64,linux/ppc64le,linux/s390x push: true tags: | - csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ steps.tested_github_branch.outputs.docker_image_branch_tag }}_${{ github.run_number }} + csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.image_version }}_b${{ github.run_number }}_${{ steps.tested_github_branch.outputs.docker_image_branch_tag }} csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ steps.tested_github_branch.outputs.docker_image_branch_tag }} csiblock1/ibm-block-csi-${{ matrix.image_type }}:latest file: build/Dockerfile.${{ matrix.image_type }} @@ -108,9 +112,9 @@ jobs: [[ -G /tmp/.buildx-${{ matrix.image_type }} ]] && rm -rf /tmp/.buildx-${{ matrix.image_type }} mv /tmp/.buildx-new-${{ matrix.image_type }} /tmp/.buildx-${{ matrix.image_type }} outputs: - operator_image_tag_for_test: "${{ steps.tested_github_branch.outputs.docker_image_branch_tag }}_${{ github.run_number }}" + operator_image_tag_for_test: "${{ needs.Prepare_env.outputs.image_version }}_b${{ github.run_number }}_${{ steps.tested_github_branch.outputs.docker_image_branch_tag }}" - create-cluster: + Create-cluster: runs-on: ubuntu-latest needs: CSI-Build-and-push-images env: diff --git a/build/ci/get_operator_github_branch.sh b/build/ci/get_operator_github_branch.sh index 0b1d86e1d..f4da84179 100755 --- a/build/ci/get_operator_github_branch.sh +++ b/build/ci/get_operator_github_branch.sh @@ -4,15 +4,16 @@ set +o pipefail operator_branch=develop DOCKER_HUB_USERNAME=csiblock1 DOCKER_HUB_PASSWORD=$csiblock_dockerhub_password -wanted_image_tag=`echo $CI_ACTION_REF_NAME | sed 's|/|.|g'` +triggering_branch=$CI_ACTION_REF_NAME +target_image_tag=`echo $triggering_branch | sed 's|/|.|g'` does_the_docker_image_has_tag(){ driver_component=$1 does_docker_image_has_tag=false - export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $wanted_image_tag | awk '{print$2}'` + export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $target_image_tag | awk '{print$2}'` for tag in $image_tags do - if [[ "$tag" == "$wanted_image_tag" ]]; then + if [[ "$tag" == "$target_image_tag" ]]; then does_docker_image_has_tag=true break fi @@ -27,8 +28,8 @@ if [ $does_controller_docker_image_has_tag == "true" ] && [ $does_node_docker_im operator_branches=`curl -H "Authorization: token $github_token" https://api.github.com/repos/IBM/ibm-block-csi-operator/branches | jq -c '.[]' | jq -r .name` for branch_name in $operator_branches do - if [ "$branch_name" == "$CI_ACTION_REF_NAME" ]; then - operator_branch=$CI_ACTION_REF_NAME + if [ "$branch_name" == "$triggering_branch" ]; then + operator_branch=$triggering_branch fi done diff --git a/build/ci/save_driver_pods_logs.sh b/build/ci/save_driver_pods_logs.sh index 8c7e31db2..39c982c14 100755 --- a/build/ci/save_driver_pods_logs.sh +++ b/build/ci/save_driver_pods_logs.sh @@ -1,9 +1,19 @@ #!/bin/bash -x -kubectl logs $(kubectl get pod -l csi | grep controller | awk '{print$1}') -c ibm-block-csi-controller > /tmp/driver_$(kubectl get pod -l csi | grep controller | awk '{print$1}')_logs.txt -kubectl logs $(kubectl get pod -l csi | grep node | awk '{print$1}') -c ibm-block-csi-node > /tmp/driver_$(kubectl get pod -l csi | grep node | awk '{print$1}')_logs.txt -kubectl logs $(kubectl get pod -l csi | grep operator | awk '{print$1}') > /tmp/driver_$(kubectl get pod -l csi | grep operator | awk '{print$1}')_logs.txt +get_pod_logs_or_events (){ + pod_name=$1 + information_type=$2 + kubectl $information_type $(kubectl get pod -l csi | grep $pod_name | awk '{print$1}') -c ibm-block-csi-$pod_name > /tmp/driver_$(kubectl get pod -l csi | grep $pod_name | awk '{print$1}')_$information_type.txt +} -kubectl describe pod $(kubectl get pod -l csi | grep controller | awk '{print$1}') > /tmp/driver_$(kubectl get pod -l csi | grep controller | awk '{print$1}')_events.txt -kubectl describe pod $(kubectl get pod -l csi | grep node | awk '{print$1}') > /tmp/driver_$(kubectl get pod -l csi | grep node | awk '{print$1}')_events.txt -kubectl describe pod $(kubectl get pod -l csi | grep operator | awk '{print$1}') > /tmp/driver_$(kubectl get pod -l csi | grep operator | awk '{print$1}')_events.txt +declare -a pod_types=( + "node" + "controller" + "operator" +) + +for pod_type in "${pod_types[@]}" +do + get_pod_logs_or_events $pod_type logs + get_pod_logs_or_events $pod_type describe +done diff --git a/build/ci/setup_ci_dependencies.sh b/build/ci/setup_ci_dependencies.sh index f21e6744b..0cbb148da 100755 --- a/build/ci/setup_ci_dependencies.sh +++ b/build/ci/setup_ci_dependencies.sh @@ -12,4 +12,10 @@ yq() { -e driver_images_tag=$driver_images_tag\ -i -v "${PWD}":/workdir mikefarah/yq "$@" } -EOL \ No newline at end of file +EOL + +source /home/runner/.bash_profile +cd common +image_version=`yq eval .channels[0].currentCSV ibm-block-csi-operator.package.yaml` +image_version=`echo ${image_version//ibm-block-csi-operator.v}` +echo "::set-output name=image_version::${image_version}" \ No newline at end of file diff --git a/build/ci/wait_for_driver_to_be_ready.sh b/build/ci/wait_for_driver_to_be_ready.sh index 07651962f..fb9e6d580 100755 --- a/build/ci/wait_for_driver_to_be_ready.sh +++ b/build/ci/wait_for_driver_to_be_ready.sh @@ -10,12 +10,12 @@ while [ "$(kubectl get pod -A -l csi | grep controller | wc -l)" -eq 0 ]; do done while [ $driver_is_ready == "false" ]; do if [ "$(kubectl get pod -A -l csi | grep -iv running | grep -iv name | wc -l)" -eq 0 ]; then - ((amount_of_seconds_that_driver_pods_are_running++)) - if [ $amount_of_seconds_that_driver_pods_are_running -eq $amount_of_seconds_that_driver_pods_should_be_running ]; then + ((actual_driver_running_time_in_seconds++)) + if [ $actual_driver_running_time_in_seconds -eq $minimum_driver_running_time_in_seconds ]; then driver_is_ready=true fi else - amount_of_seconds_that_driver_pods_are_running=0 + actual_driver_running_time_in_seconds=0 fi kubectl get pod -A -l csi sleep 1 From 8dad6ff4de0416d84ec92895f29f59ca891a0da8 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 12 Jul 2021 13:49:38 +0300 Subject: [PATCH 12/67] change the directory that it will check the image_version --- build/ci/setup_ci_dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/setup_ci_dependencies.sh b/build/ci/setup_ci_dependencies.sh index 0cbb148da..44ef41d69 100755 --- a/build/ci/setup_ci_dependencies.sh +++ b/build/ci/setup_ci_dependencies.sh @@ -15,7 +15,7 @@ yq() { EOL source /home/runner/.bash_profile -cd common +cd deploy/olm-catalog/ibm-block-csi-operator-community image_version=`yq eval .channels[0].currentCSV ibm-block-csi-operator.package.yaml` image_version=`echo ${image_version//ibm-block-csi-operator.v}` echo "::set-output name=image_version::${image_version}" \ No newline at end of file From 80b68d96e8814a6e59a8024aeefc61103cb5b7dc Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 12 Jul 2021 13:57:06 +0300 Subject: [PATCH 13/67] change the image_version check to certified dir --- build/ci/setup_ci_dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/setup_ci_dependencies.sh b/build/ci/setup_ci_dependencies.sh index 44ef41d69..79be53e92 100755 --- a/build/ci/setup_ci_dependencies.sh +++ b/build/ci/setup_ci_dependencies.sh @@ -15,7 +15,7 @@ yq() { EOL source /home/runner/.bash_profile -cd deploy/olm-catalog/ibm-block-csi-operator-community +cd deploy/olm-catalog/ibm-block-csi-operator image_version=`yq eval .channels[0].currentCSV ibm-block-csi-operator.package.yaml` image_version=`echo ${image_version//ibm-block-csi-operator.v}` echo "::set-output name=image_version::${image_version}" \ No newline at end of file From 69cd6900b00ecd7a894a5702f88db25da8be6c47 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 12 Jul 2021 14:49:59 +0300 Subject: [PATCH 14/67] change saving driver logs script --- build/ci/save_driver_pods_logs.sh | 12 +++++++----- build/ci/setup_ci_dependencies.sh | 2 +- build/ci/wait_for_driver_to_be_ready.sh | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/build/ci/save_driver_pods_logs.sh b/build/ci/save_driver_pods_logs.sh index 39c982c14..79a249107 100755 --- a/build/ci/save_driver_pods_logs.sh +++ b/build/ci/save_driver_pods_logs.sh @@ -1,9 +1,11 @@ #!/bin/bash -x -get_pod_logs_or_events (){ +run_action_on_pod (){ pod_name=$1 - information_type=$2 - kubectl $information_type $(kubectl get pod -l csi | grep $pod_name | awk '{print$1}') -c ibm-block-csi-$pod_name > /tmp/driver_$(kubectl get pod -l csi | grep $pod_name | awk '{print$1}')_$information_type.txt + action=$2 + extra_args=$3 + get_all_pods_by_type="kubectl get pod -l csi | grep $pod_name | awk '{print$1}'" + kubectl $action $($get_all_pods_by_type) $extra_args -c ibm-block-csi-$pod_name > /tmp/driver_$($get_all_pods_by_type)_$action.txt } declare -a pod_types=( @@ -14,6 +16,6 @@ declare -a pod_types=( for pod_type in "${pod_types[@]}" do - get_pod_logs_or_events $pod_type logs - get_pod_logs_or_events $pod_type describe + get_pod_logs_or_events $pod_type logs "-c ibm-block-csi-$pod_name" + get_pod_logs_or_events $pod_type describe "" done diff --git a/build/ci/setup_ci_dependencies.sh b/build/ci/setup_ci_dependencies.sh index 79be53e92..28ae86f6a 100755 --- a/build/ci/setup_ci_dependencies.sh +++ b/build/ci/setup_ci_dependencies.sh @@ -18,4 +18,4 @@ source /home/runner/.bash_profile cd deploy/olm-catalog/ibm-block-csi-operator image_version=`yq eval .channels[0].currentCSV ibm-block-csi-operator.package.yaml` image_version=`echo ${image_version//ibm-block-csi-operator.v}` -echo "::set-output name=image_version::${image_version}" \ No newline at end of file +echo "::set-output name=image_version::${image_version}" diff --git a/build/ci/wait_for_driver_to_be_ready.sh b/build/ci/wait_for_driver_to_be_ready.sh index fb9e6d580..144444ed3 100755 --- a/build/ci/wait_for_driver_to_be_ready.sh +++ b/build/ci/wait_for_driver_to_be_ready.sh @@ -10,7 +10,7 @@ while [ "$(kubectl get pod -A -l csi | grep controller | wc -l)" -eq 0 ]; do done while [ $driver_is_ready == "false" ]; do if [ "$(kubectl get pod -A -l csi | grep -iv running | grep -iv name | wc -l)" -eq 0 ]; then - ((actual_driver_running_time_in_seconds++)) + ((++actual_driver_running_time_in_seconds)) if [ $actual_driver_running_time_in_seconds -eq $minimum_driver_running_time_in_seconds ]; then driver_is_ready=true fi From bba693e2dc12819d16880f499f9b92a36ea41ff3 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 12 Jul 2021 15:48:06 +0300 Subject: [PATCH 15/67] use run_action_on_pod function --- build/ci/save_driver_pods_logs.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/ci/save_driver_pods_logs.sh b/build/ci/save_driver_pods_logs.sh index 79a249107..1cb557aa3 100755 --- a/build/ci/save_driver_pods_logs.sh +++ b/build/ci/save_driver_pods_logs.sh @@ -16,6 +16,6 @@ declare -a pod_types=( for pod_type in "${pod_types[@]}" do - get_pod_logs_or_events $pod_type logs "-c ibm-block-csi-$pod_name" - get_pod_logs_or_events $pod_type describe "" + run_action_on_pod $pod_type logs "-c ibm-block-csi-$pod_name" + run_action_on_pod $pod_type describe "" done From 5ded798e862ae1699e722044f870efe61ebf6b06 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 12 Jul 2021 17:22:42 +0300 Subject: [PATCH 16/67] fix save logs --- .github/workflows/operator_ci.yaml | 8 ++++---- ...thub_branch.sh => get_driver_github_branch.sh} | 15 ++++----------- build/ci/save_driver_pods_logs.sh | 11 ++++++++--- 3 files changed, 16 insertions(+), 18 deletions(-) rename build/ci/{get_operator_github_branch.sh => get_driver_github_branch.sh} (63%) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 437ad4b8e..05fa62aaa 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -140,10 +140,10 @@ jobs: with: path: ${{ env.pythonLocation }} key: ${{ env.pythonLocation }}-${{ hashFiles('dev-requirements.txt') }} - - name: Get the operator github branch - id: operator_github_branch + - name: Get the driver github branch + id: driver_github_branch run: | - build/ci/get_operator_github_branch.sh + build/ci/get_driver_github_branch.sh env: github_token: ${{ secrets.CSIBLOCK_GITHUB_TOKEN }} - name: Create k8s Kind Cluster @@ -157,7 +157,7 @@ jobs: run: | build/ci/deploy_driver.sh env: - driver_images_tag: "${{ steps.operator_github_branch.outputs.docker_image_branch_tag }}" + driver_images_tag: "${{ steps.driver_github_branch.outputs.docker_image_branch_tag }}" operator_image_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" operator_file: "deploy/installer/generated/ibm-block-csi-operator.yaml" cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" diff --git a/build/ci/get_operator_github_branch.sh b/build/ci/get_driver_github_branch.sh similarity index 63% rename from build/ci/get_operator_github_branch.sh rename to build/ci/get_driver_github_branch.sh index f4da84179..d6187e2e1 100755 --- a/build/ci/get_operator_github_branch.sh +++ b/build/ci/get_driver_github_branch.sh @@ -7,7 +7,7 @@ DOCKER_HUB_PASSWORD=$csiblock_dockerhub_password triggering_branch=$CI_ACTION_REF_NAME target_image_tag=`echo $triggering_branch | sed 's|/|.|g'` -does_the_docker_image_has_tag(){ +does_triggering_branch_in_docker_image_tags(){ driver_component=$1 does_docker_image_has_tag=false export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $target_image_tag | awk '{print$2}'` @@ -21,18 +21,11 @@ does_the_docker_image_has_tag(){ echo $does_docker_image_has_tag } -does_controller_docker_image_has_tag=$(does_the_docker_image_has_tag controller) -does_node_docker_image_has_tag=$(does_the_docker_image_has_tag node) +does_controller_docker_image_has_tag=$(does_triggering_branch_in_docker_image_tags controller) +does_node_docker_image_has_tag=$(does_triggering_branch_in_docker_image_tags node) if [ $does_controller_docker_image_has_tag == "true" ] && [ $does_node_docker_image_has_tag == "true" ]; then - operator_branches=`curl -H "Authorization: token $github_token" https://api.github.com/repos/IBM/ibm-block-csi-operator/branches | jq -c '.[]' | jq -r .name` - for branch_name in $operator_branches - do - if [ "$branch_name" == "$triggering_branch" ]; then - operator_branch=$triggering_branch - fi - - done + operator_branch=$triggering_branch fi docker_image_branch_tag=`echo $operator_branch| sed 's|/|.|g'` diff --git a/build/ci/save_driver_pods_logs.sh b/build/ci/save_driver_pods_logs.sh index 1cb557aa3..f56d1d822 100755 --- a/build/ci/save_driver_pods_logs.sh +++ b/build/ci/save_driver_pods_logs.sh @@ -1,11 +1,16 @@ #!/bin/bash -x +get_all_pods_by_type (){ + pod_name=$1 + kubectl get pod -l csi | grep $pod_name | awk '{print$1}' +} + run_action_on_pod (){ pod_name=$1 action=$2 extra_args=$3 - get_all_pods_by_type="kubectl get pod -l csi | grep $pod_name | awk '{print$1}'" - kubectl $action $($get_all_pods_by_type) $extra_args -c ibm-block-csi-$pod_name > /tmp/driver_$($get_all_pods_by_type)_$action.txt + kubectl $action $(get_all_pods_by_type $pod_name) $extra_args > "/tmp/driver_$(get_all_pods_by_type $pod_name)_${action}.txt" + } declare -a pod_types=( @@ -17,5 +22,5 @@ declare -a pod_types=( for pod_type in "${pod_types[@]}" do run_action_on_pod $pod_type logs "-c ibm-block-csi-$pod_name" - run_action_on_pod $pod_type describe "" + run_action_on_pod $pod_type "describe pod" "" done From 0485341945d889e8cd9a8f74210643f12c544275 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 12 Jul 2021 18:24:02 +0300 Subject: [PATCH 17/67] cahnge the edit of the cr file --- build/ci/deploy_driver.sh | 14 ++++++++++---- build/ci/get_driver_github_branch.sh | 2 +- build/ci/save_driver_pods_logs.sh | 2 +- build/ci/setup_ci_dependencies.sh | 4 +--- build/ci/wait_for_k8s_ready.sh | 17 +++++++++++------ 5 files changed, 24 insertions(+), 15 deletions(-) diff --git a/build/ci/deploy_driver.sh b/build/ci/deploy_driver.sh index f4a6ef6f2..3210b9ca1 100755 --- a/build/ci/deploy_driver.sh +++ b/build/ci/deploy_driver.sh @@ -12,10 +12,16 @@ docker exec -i $kind_node_name apt -y install open-iscsi cd $(dirname $cr_file) chmod 547 $(basename $cr_file) -yq eval ".spec.controller.repository |= env(controller_repository_for_test)" $(basename $cr_file) -i -yq eval ".spec.controller.tag |= env(driver_images_tag)" $(basename $cr_file) -i -yq eval ".spec.node.repository |= env(node_repository_for_test)" $(basename $cr_file) -i -yq eval ".spec.node.tag |= env(driver_images_tag)" $(basename $cr_file) -i +declare -A cr_image_fields=( + [".spec.controller.repository"]="$controller_repository_for_test" + [".spec.controller.tag"]="$driver_images_tag" + ["node_repository_for_test"]="$node_repository_for_test" + [".spec.node.tag"]="$driver_images_tag" +) +for image_field in ${!cr_image_fields[@]}; do + cr_image_value=${cr_image_fields[${image_field}]} + yq eval "${image_field} |= env(test)" $(basename $cr_file) -i +done cd - cd $(dirname $operator_file) diff --git a/build/ci/get_driver_github_branch.sh b/build/ci/get_driver_github_branch.sh index d6187e2e1..24f33a7a4 100755 --- a/build/ci/get_driver_github_branch.sh +++ b/build/ci/get_driver_github_branch.sh @@ -7,7 +7,7 @@ DOCKER_HUB_PASSWORD=$csiblock_dockerhub_password triggering_branch=$CI_ACTION_REF_NAME target_image_tag=`echo $triggering_branch | sed 's|/|.|g'` -does_triggering_branch_in_docker_image_tags(){ +is_private_branch_component_image_exist(){ driver_component=$1 does_docker_image_has_tag=false export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $target_image_tag | awk '{print$2}'` diff --git a/build/ci/save_driver_pods_logs.sh b/build/ci/save_driver_pods_logs.sh index f56d1d822..1019734df 100755 --- a/build/ci/save_driver_pods_logs.sh +++ b/build/ci/save_driver_pods_logs.sh @@ -21,6 +21,6 @@ declare -a pod_types=( for pod_type in "${pod_types[@]}" do - run_action_on_pod $pod_type logs "-c ibm-block-csi-$pod_name" + run_action_on_pod $pod_type logs "-c ibm-block-csi-$pod_type" run_action_on_pod $pod_type "describe pod" "" done diff --git a/build/ci/setup_ci_dependencies.sh b/build/ci/setup_ci_dependencies.sh index 28ae86f6a..1f4766701 100755 --- a/build/ci/setup_ci_dependencies.sh +++ b/build/ci/setup_ci_dependencies.sh @@ -7,9 +7,7 @@ echo yq > dev-requirements.txt cat >>/home/runner/.bash_profile <<'EOL' yq() { docker run --rm -e operator_image_for_test=$operator_image_for_test\ - -e controller_repository_for_test=$controller_repository_for_test\ - -e node_repository_for_test=$node_repository_for_test\ - -e driver_images_tag=$driver_images_tag\ + -e cr_image_value=$cr_image_value\ -i -v "${PWD}":/workdir mikefarah/yq "$@" } EOL diff --git a/build/ci/wait_for_k8s_ready.sh b/build/ci/wait_for_k8s_ready.sh index 565f83f4e..f54cd33e9 100755 --- a/build/ci/wait_for_k8s_ready.sh +++ b/build/ci/wait_for_k8s_ready.sh @@ -3,16 +3,21 @@ set +o pipefail is_kubernetes_cluster_ready (){ pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` - all_the_containers_are_runninig=true + all_containers_are_running=false + has_not_ready_pod=false for pod in $pods; do - running_containers=`echo $pod | awk -F / '{print$1}'` - wanted_containers=`echo $pod | awk -F / '{print$2}'` - if [ $running_containers != $wanted_containers ]; then - all_the_containers_are_runninig=false + running_containers_count=`echo $pod | awk -F / '{print$1}'` + total_containers_count=`echo $pod | awk -F / '{print$2}'` + if [ $running_containers_count != $total_containers_count ]; then + has_not_ready_pod=true break fi done - echo $all_the_containers_are_runninig + if [[ "$has_not_ready_pod" == "false" ]]: then + all_containers_are_running=true + fi + + echo $all_containers_are_running } while [[ `is_kubernetes_cluster_ready` == "false" ]]; do From d30934db0b5510a2d67a420927083e25e21a9594 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 12 Jul 2021 19:05:11 +0300 Subject: [PATCH 18/67] fix some problems --- build/ci/deploy_driver.sh | 30 +++++++++++++++++------------- build/ci/save_driver_pods_logs.sh | 8 ++++---- build/ci/setup_ci_dependencies.sh | 7 +++---- build/ci/wait_for_k8s_ready.sh | 18 ++++++++++++------ 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/build/ci/deploy_driver.sh b/build/ci/deploy_driver.sh index 3210b9ca1..5a0741aff 100755 --- a/build/ci/deploy_driver.sh +++ b/build/ci/deploy_driver.sh @@ -10,19 +10,23 @@ kind_node_name=`docker ps --format "{{.Names}}"` docker exec -i $kind_node_name apt-get update docker exec -i $kind_node_name apt -y install open-iscsi -cd $(dirname $cr_file) -chmod 547 $(basename $cr_file) -declare -A cr_image_fields=( - [".spec.controller.repository"]="$controller_repository_for_test" - [".spec.controller.tag"]="$driver_images_tag" - ["node_repository_for_test"]="$node_repository_for_test" - [".spec.node.tag"]="$driver_images_tag" -) -for image_field in ${!cr_image_fields[@]}; do - cr_image_value=${cr_image_fields[${image_field}]} - yq eval "${image_field} |= env(test)" $(basename $cr_file) -i -done -cd - +edit_cr_images (){ + cd $(dirname $cr_file) + chmod 547 $(basename $cr_file) + declare -A cr_image_fields=( + [".spec.controller.repository"]="$controller_repository_for_test" + [".spec.controller.tag"]="$driver_images_tag" + ["node_repository_for_test"]="$node_repository_for_test" + [".spec.node.tag"]="$driver_images_tag" + ) + for image_field in ${!cr_image_fields[@]}; do + cr_image_value=${cr_image_fields[${image_field}]} + yq eval "${image_field} |= env(cr_image_value)" $(basename $cr_file) -i + done + cd - +} + +edit_cr_images cd $(dirname $operator_file) operator_image_in_branch=`yq eval '(.spec.template.spec.containers[0].image | select(. == "*ibmcom*"))' $(basename $operator_file)` diff --git a/build/ci/save_driver_pods_logs.sh b/build/ci/save_driver_pods_logs.sh index 1019734df..c565882b3 100755 --- a/build/ci/save_driver_pods_logs.sh +++ b/build/ci/save_driver_pods_logs.sh @@ -1,15 +1,15 @@ #!/bin/bash -x get_all_pods_by_type (){ - pod_name=$1 - kubectl get pod -l csi | grep $pod_name | awk '{print$1}' + pod_type=$1 + kubectl get pod -l csi | grep $pod_type | awk '{print$1}' } run_action_on_pod (){ - pod_name=$1 + pod_type=$1 action=$2 extra_args=$3 - kubectl $action $(get_all_pods_by_type $pod_name) $extra_args > "/tmp/driver_$(get_all_pods_by_type $pod_name)_${action}.txt" + kubectl $action $(get_all_pods_by_type $pod_type) $extra_args > "/tmp/driver_$(get_all_pods_by_type $pod_type)_${action}.txt" } diff --git a/build/ci/setup_ci_dependencies.sh b/build/ci/setup_ci_dependencies.sh index 1f4766701..6bde91f82 100755 --- a/build/ci/setup_ci_dependencies.sh +++ b/build/ci/setup_ci_dependencies.sh @@ -12,8 +12,7 @@ yq() { } EOL -source /home/runner/.bash_profile -cd deploy/olm-catalog/ibm-block-csi-operator -image_version=`yq eval .channels[0].currentCSV ibm-block-csi-operator.package.yaml` -image_version=`echo ${image_version//ibm-block-csi-operator.v}` +image_version=`cat version/version.go | grep -i driverversion | awk -F = '{print $2}'` +image_version=`echo ${image_version//\"}` +# CSI-3173 - move image_version value into a common config file echo "::set-output name=image_version::${image_version}" diff --git a/build/ci/wait_for_k8s_ready.sh b/build/ci/wait_for_k8s_ready.sh index f54cd33e9..00a981812 100755 --- a/build/ci/wait_for_k8s_ready.sh +++ b/build/ci/wait_for_k8s_ready.sh @@ -1,19 +1,25 @@ #!/bin/bash -xe set +o pipefail -is_kubernetes_cluster_ready (){ - pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` - all_containers_are_running=false - has_not_ready_pod=false +is_pod_ready (){ + pods=$1 + are_all_pods_ready=false for pod in $pods; do running_containers_count=`echo $pod | awk -F / '{print$1}'` total_containers_count=`echo $pod | awk -F / '{print$2}'` if [ $running_containers_count != $total_containers_count ]; then - has_not_ready_pod=true + are_all_pods_ready=true break fi done - if [[ "$has_not_ready_pod" == "false" ]]: then +} + +is_kubernetes_cluster_ready (){ + pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` + all_containers_are_running=false + are_all_pods_ready=false + are_all_pods_ready=$(is_pod_ready $pods) + if [[ "$are_all_pods_ready" == "false" ]]: then all_containers_are_running=true fi From 0f5f33c9fbf5ca20c23bb4af2e3ad043c92af31d Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 12 Jul 2021 19:19:26 +0300 Subject: [PATCH 19/67] create github_actions firectory --- .github/workflows/operator_ci.yaml | 12 ++++++------ .../ci/{ => github_actions/driver}/deploy_driver.sh | 0 .../driver}/get_driver_github_branch.sh | 0 .../driver}/save_driver_pods_logs.sh | 0 .../driver}/wait_for_driver_to_be_ready.sh | 0 .../driver}/wait_for_k8s_ready.sh | 0 .../ci/{ => github_actions}/setup_ci_dependencies.sh | 0 7 files changed, 6 insertions(+), 6 deletions(-) rename build/ci/{ => github_actions/driver}/deploy_driver.sh (100%) rename build/ci/{ => github_actions/driver}/get_driver_github_branch.sh (100%) rename build/ci/{ => github_actions/driver}/save_driver_pods_logs.sh (100%) rename build/ci/{ => github_actions/driver}/wait_for_driver_to_be_ready.sh (100%) rename build/ci/{ => github_actions/driver}/wait_for_k8s_ready.sh (100%) rename build/ci/{ => github_actions}/setup_ci_dependencies.sh (100%) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 05fa62aaa..6346e398a 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -22,7 +22,7 @@ jobs: - name: Setup dependencies id: setup_dependencies run: | - build/ci/setup_ci_dependencies.sh + build/ci/github_actions/setup_ci_dependencies.sh - uses: actions/cache@v2 with: path: ${{ env.pythonLocation }} @@ -143,7 +143,7 @@ jobs: - name: Get the driver github branch id: driver_github_branch run: | - build/ci/get_driver_github_branch.sh + build/ci/github_actions/driver/get_driver_github_branch.sh env: github_token: ${{ secrets.CSIBLOCK_GITHUB_TOKEN }} - name: Create k8s Kind Cluster @@ -152,10 +152,10 @@ jobs: version: v0.11.1 - name: Wait for k8s cluster to be ready run: | - build/ci/wait_for_k8s_ready.sh + build/ci/github_actions/driver/wait_for_k8s_ready.sh - name: Deploy ibm block csi driver run: | - build/ci/deploy_driver.sh + build/ci/github_actions/driver/deploy_driver.sh env: driver_images_tag: "${{ steps.driver_github_branch.outputs.docker_image_branch_tag }}" operator_image_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" @@ -163,11 +163,11 @@ jobs: cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" - name: Wait for csi ibm block driver to be ready run: | - build/ci/wait_for_driver_to_be_ready.sh + build/ci/github_actions/driver/wait_for_driver_to_be_ready.sh - name: Save driver pods logs if: always() run: | - build/ci/save_driver_pods_logs.sh + build/ci/github_actions/driver/save_driver_pods_logs.sh - name: Upload driver pods logs if: always() uses: actions/upload-artifact@v2 diff --git a/build/ci/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh similarity index 100% rename from build/ci/deploy_driver.sh rename to build/ci/github_actions/driver/deploy_driver.sh diff --git a/build/ci/get_driver_github_branch.sh b/build/ci/github_actions/driver/get_driver_github_branch.sh similarity index 100% rename from build/ci/get_driver_github_branch.sh rename to build/ci/github_actions/driver/get_driver_github_branch.sh diff --git a/build/ci/save_driver_pods_logs.sh b/build/ci/github_actions/driver/save_driver_pods_logs.sh similarity index 100% rename from build/ci/save_driver_pods_logs.sh rename to build/ci/github_actions/driver/save_driver_pods_logs.sh diff --git a/build/ci/wait_for_driver_to_be_ready.sh b/build/ci/github_actions/driver/wait_for_driver_to_be_ready.sh similarity index 100% rename from build/ci/wait_for_driver_to_be_ready.sh rename to build/ci/github_actions/driver/wait_for_driver_to_be_ready.sh diff --git a/build/ci/wait_for_k8s_ready.sh b/build/ci/github_actions/driver/wait_for_k8s_ready.sh similarity index 100% rename from build/ci/wait_for_k8s_ready.sh rename to build/ci/github_actions/driver/wait_for_k8s_ready.sh diff --git a/build/ci/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh similarity index 100% rename from build/ci/setup_ci_dependencies.sh rename to build/ci/github_actions/setup_ci_dependencies.sh From 4081c4925c00fa2877a5da1c2312dd69fe3ebc90 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 13 Jul 2021 09:08:30 +0300 Subject: [PATCH 20/67] fix syntax errors in wait for k8s cluster --- build/ci/github_actions/driver/get_driver_github_branch.sh | 4 ++-- build/ci/github_actions/driver/wait_for_k8s_ready.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/ci/github_actions/driver/get_driver_github_branch.sh b/build/ci/github_actions/driver/get_driver_github_branch.sh index 24f33a7a4..dbee6c9b3 100755 --- a/build/ci/github_actions/driver/get_driver_github_branch.sh +++ b/build/ci/github_actions/driver/get_driver_github_branch.sh @@ -21,8 +21,8 @@ is_private_branch_component_image_exist(){ echo $does_docker_image_has_tag } -does_controller_docker_image_has_tag=$(does_triggering_branch_in_docker_image_tags controller) -does_node_docker_image_has_tag=$(does_triggering_branch_in_docker_image_tags node) +does_controller_docker_image_has_tag=$(is_private_branch_component_image_exist controller) +does_node_docker_image_has_tag=$(is_private_branch_component_image_exist node) if [ $does_controller_docker_image_has_tag == "true" ] && [ $does_node_docker_image_has_tag == "true" ]; then operator_branch=$triggering_branch diff --git a/build/ci/github_actions/driver/wait_for_k8s_ready.sh b/build/ci/github_actions/driver/wait_for_k8s_ready.sh index 00a981812..2a1c5ed4a 100755 --- a/build/ci/github_actions/driver/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/driver/wait_for_k8s_ready.sh @@ -19,7 +19,7 @@ is_kubernetes_cluster_ready (){ all_containers_are_running=false are_all_pods_ready=false are_all_pods_ready=$(is_pod_ready $pods) - if [[ "$are_all_pods_ready" == "false" ]]: then + if [ $are_all_pods_ready == "false" ]; then all_containers_are_running=true fi From e6d3c1d0092456abccf2c2f14dca5bbd6286c0f6 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 13 Jul 2021 10:44:02 +0300 Subject: [PATCH 21/67] fix is_pod_ready function --- build/ci/github_actions/driver/wait_for_k8s_ready.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/ci/github_actions/driver/wait_for_k8s_ready.sh b/build/ci/github_actions/driver/wait_for_k8s_ready.sh index 2a1c5ed4a..6c5ab42aa 100755 --- a/build/ci/github_actions/driver/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/driver/wait_for_k8s_ready.sh @@ -2,7 +2,7 @@ set +o pipefail is_pod_ready (){ - pods=$1 + pods=$@ are_all_pods_ready=false for pod in $pods; do running_containers_count=`echo $pod | awk -F / '{print$1}'` @@ -12,6 +12,7 @@ is_pod_ready (){ break fi done + echo $are_all_pods_ready } is_kubernetes_cluster_ready (){ From 5e0087524c78e606defce754a67872555168f32c Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 14 Jul 2021 09:34:31 +0300 Subject: [PATCH 22/67] fix some syntax errors in deploy driver --- build/ci/github_actions/driver/deploy_driver.sh | 2 +- build/ci/github_actions/driver/wait_for_k8s_ready.sh | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index 5a0741aff..32de1de5e 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -16,7 +16,7 @@ edit_cr_images (){ declare -A cr_image_fields=( [".spec.controller.repository"]="$controller_repository_for_test" [".spec.controller.tag"]="$driver_images_tag" - ["node_repository_for_test"]="$node_repository_for_test" + [".node_repository_for_test"]="$node_repository_for_test" [".spec.node.tag"]="$driver_images_tag" ) for image_field in ${!cr_image_fields[@]}; do diff --git a/build/ci/github_actions/driver/wait_for_k8s_ready.sh b/build/ci/github_actions/driver/wait_for_k8s_ready.sh index 6c5ab42aa..5b918ab80 100755 --- a/build/ci/github_actions/driver/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/driver/wait_for_k8s_ready.sh @@ -1,7 +1,7 @@ #!/bin/bash -xe set +o pipefail -is_pod_ready (){ +is_pods_ready (){ pods=$@ are_all_pods_ready=false for pod in $pods; do @@ -18,8 +18,7 @@ is_pod_ready (){ is_kubernetes_cluster_ready (){ pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` all_containers_are_running=false - are_all_pods_ready=false - are_all_pods_ready=$(is_pod_ready $pods) + are_all_pods_ready=$(is_pods_ready $pods) if [ $are_all_pods_ready == "false" ]; then all_containers_are_running=true fi From f7b7c6b8f573f4ac2e5901d76d35474cefbfa8e3 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 14 Jul 2021 13:24:32 +0300 Subject: [PATCH 23/67] change the node ripository yaml path --- build/ci/github_actions/driver/deploy_driver.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index 32de1de5e..7e0bf6200 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -16,7 +16,7 @@ edit_cr_images (){ declare -A cr_image_fields=( [".spec.controller.repository"]="$controller_repository_for_test" [".spec.controller.tag"]="$driver_images_tag" - [".node_repository_for_test"]="$node_repository_for_test" + [".spec.node.repository"]="$node_repository_for_test" [".spec.node.tag"]="$driver_images_tag" ) for image_field in ${!cr_image_fields[@]}; do From ed5a5a4a5e2f9d8267698435b420056b145372d8 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 21 Jul 2021 17:23:02 +0300 Subject: [PATCH 24/67] remove cluster setup from driver repository --- .github/workflows/operator_ci.yaml | 29 ++++++++++--------- build/ci/build_push_image.sh | 4 +-- build/ci/get_image_tag_from_branch.sh | 8 +++++ .../{driver => operator}/deploy_driver.sh | 0 .../get_driver_github_branch.sh | 0 .../save_driver_pods_logs.sh | 0 .../wait_for_driver_to_be_ready.sh | 0 .../wait_for_k8s_ready.sh | 2 +- .../github_actions/setup_ci_dependencies.sh | 6 +++- 9 files changed, 31 insertions(+), 18 deletions(-) create mode 100755 build/ci/get_image_tag_from_branch.sh rename build/ci/github_actions/{driver => operator}/deploy_driver.sh (100%) rename build/ci/github_actions/{driver => operator}/get_driver_github_branch.sh (100%) rename build/ci/github_actions/{driver => operator}/save_driver_pods_logs.sh (100%) rename build/ci/github_actions/{driver => operator}/wait_for_driver_to_be_ready.sh (100%) rename build/ci/github_actions/{driver => operator}/wait_for_k8s_ready.sh (97%) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 6346e398a..baaa9fc53 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -19,6 +19,7 @@ jobs: uses: actions/setup-python@v2 with: python-version: '3.x' + - uses: FranzDiebold/github-env-vars-action@v2 - name: Setup dependencies id: setup_dependencies run: | @@ -35,10 +36,12 @@ jobs: /home/runner/.bash_profile retention-days: 1 outputs: - image_version: "${{ steps.setup_dependencies.outputs.image_version }}" + docker_image_branch_tag: "${{ steps.setup_dependencies.outputs.docker_image_branch_tag }}" + driver_images_tag: "${{ steps.setup_dependencies.outputs.driver_images_tag }}" Unit_testing: runs-on: ubuntu-latest + name: "Unit testing" steps: - name: Checkout uses: actions/checkout@v2 @@ -49,6 +52,7 @@ jobs: Run_OLM_validation: runs-on: ubuntu-latest + name: "Run OLM validation" steps: - name: Checkout uses: actions/checkout@v2 @@ -57,6 +61,7 @@ jobs: ./build/ci/run_olm_validation.sh CSI-Build-and-push-images: + name: "CSI Build and push images" runs-on: ubuntu-latest needs: - Unit_testing @@ -86,11 +91,6 @@ jobs: key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - - name: Create github branch parameter - id: tested_github_branch - run: | - docker_image_branch_tag=`echo $CI_ACTION_REF_NAME| sed 's|/|.|g'` - echo "::set-output name=docker_image_branch_tag::${docker_image_branch_tag}" - name: Build and push ${{ matrix.image_type }} uses: docker/build-push-action@v2 with: @@ -98,8 +98,8 @@ jobs: platforms: linux/amd64,linux/ppc64le,linux/s390x push: true tags: | - csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.image_version }}_b${{ github.run_number }}_${{ steps.tested_github_branch.outputs.docker_image_branch_tag }} - csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ steps.tested_github_branch.outputs.docker_image_branch_tag }} + csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.operator_image_tag_for_test }} + csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.docker_image_branch_tag }} csiblock1/ibm-block-csi-${{ matrix.image_type }}:latest file: build/Dockerfile.${{ matrix.image_type }} cache-from: type=local,src=/tmp/.buildx-${{ matrix.image_type }} @@ -116,13 +116,14 @@ jobs: Create-cluster: runs-on: ubuntu-latest + name: "Create cluster" needs: CSI-Build-and-push-images env: csiblock_dockerhub_password: ${{ secrets.CSIBLOCK_DOCKERHUB_PASSWORD }} controller_repository_for_test: csiblock1/ibm-block-csi-controller node_repository_for_test: csiblock1/ibm-block-csi-node operator_image_repository_for_test: csiblock1/ibm-block-csi-operator - timeout-minutes: 30 + timeout-minutes: 7 steps: - name: Checkout uses: actions/checkout@v2 @@ -143,7 +144,7 @@ jobs: - name: Get the driver github branch id: driver_github_branch run: | - build/ci/github_actions/driver/get_driver_github_branch.sh + build/ci/github_actions/operator/get_driver_github_branch.sh env: github_token: ${{ secrets.CSIBLOCK_GITHUB_TOKEN }} - name: Create k8s Kind Cluster @@ -152,10 +153,10 @@ jobs: version: v0.11.1 - name: Wait for k8s cluster to be ready run: | - build/ci/github_actions/driver/wait_for_k8s_ready.sh + build/ci/github_actions/operator/wait_for_k8s_ready.sh - name: Deploy ibm block csi driver run: | - build/ci/github_actions/driver/deploy_driver.sh + build/ci/github_actions/operator/deploy_driver.sh env: driver_images_tag: "${{ steps.driver_github_branch.outputs.docker_image_branch_tag }}" operator_image_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" @@ -163,11 +164,11 @@ jobs: cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" - name: Wait for csi ibm block driver to be ready run: | - build/ci/github_actions/driver/wait_for_driver_to_be_ready.sh + build/ci/github_actions/operator/wait_for_driver_to_be_ready.sh - name: Save driver pods logs if: always() run: | - build/ci/github_actions/driver/save_driver_pods_logs.sh + build/ci/github_actions/operator/save_driver_pods_logs.sh - name: Upload driver pods logs if: always() uses: actions/upload-artifact@v2 diff --git a/build/ci/build_push_image.sh b/build/ci/build_push_image.sh index 9fe59b9f5..0444310df 100755 --- a/build/ci/build_push_image.sh +++ b/build/ci/build_push_image.sh @@ -9,8 +9,8 @@ done NODE_IMAGE=ibm-node-agent # Prepare specific tag for the image -branch=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version -specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${branch}" +specific_tag=`build/ci/get_image_tag_from_branch.sh ${IMAGE_VERSION} ${BUILD_NUMBER} ${GIT_BRANCH}` +specific_tag=`echo $specific_tag | awk '{print$1}'` # Set latest tag only if its from develop branch or master and prepare tags [ "$GIT_BRANCH" = "develop" -o "$GIT_BRANCH" = "origin/develop" -o "$GIT_BRANCH" = "master" ] && tag_latest="true" || tag_latest="false" diff --git a/build/ci/get_image_tag_from_branch.sh b/build/ci/get_image_tag_from_branch.sh new file mode 100755 index 000000000..475dfd619 --- /dev/null +++ b/build/ci/get_image_tag_from_branch.sh @@ -0,0 +1,8 @@ +#!/bin/bash -xe +IMAGE_VERSION=$1 +BUILD_NUMBER=$2 +GIT_BRANCH=$3 +branch=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version +specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${branch}" +echo $specific_tag +echo $branch diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/operator/deploy_driver.sh similarity index 100% rename from build/ci/github_actions/driver/deploy_driver.sh rename to build/ci/github_actions/operator/deploy_driver.sh diff --git a/build/ci/github_actions/driver/get_driver_github_branch.sh b/build/ci/github_actions/operator/get_driver_github_branch.sh similarity index 100% rename from build/ci/github_actions/driver/get_driver_github_branch.sh rename to build/ci/github_actions/operator/get_driver_github_branch.sh diff --git a/build/ci/github_actions/driver/save_driver_pods_logs.sh b/build/ci/github_actions/operator/save_driver_pods_logs.sh similarity index 100% rename from build/ci/github_actions/driver/save_driver_pods_logs.sh rename to build/ci/github_actions/operator/save_driver_pods_logs.sh diff --git a/build/ci/github_actions/driver/wait_for_driver_to_be_ready.sh b/build/ci/github_actions/operator/wait_for_driver_to_be_ready.sh similarity index 100% rename from build/ci/github_actions/driver/wait_for_driver_to_be_ready.sh rename to build/ci/github_actions/operator/wait_for_driver_to_be_ready.sh diff --git a/build/ci/github_actions/driver/wait_for_k8s_ready.sh b/build/ci/github_actions/operator/wait_for_k8s_ready.sh similarity index 97% rename from build/ci/github_actions/driver/wait_for_k8s_ready.sh rename to build/ci/github_actions/operator/wait_for_k8s_ready.sh index 5b918ab80..3d837e54d 100755 --- a/build/ci/github_actions/driver/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/operator/wait_for_k8s_ready.sh @@ -1,7 +1,7 @@ #!/bin/bash -xe set +o pipefail -is_pods_ready (){ +are_pods_ready (){ pods=$@ are_all_pods_ready=false for pod in $pods; do diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 6bde91f82..8027dec57 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -15,4 +15,8 @@ EOL image_version=`cat version/version.go | grep -i driverversion | awk -F = '{print $2}'` image_version=`echo ${image_version//\"}` # CSI-3173 - move image_version value into a common config file -echo "::set-output name=image_version::${image_version}" +operator_image_tag_for_test=`build/ci/get_image_tag_from_branch.sh ${image_version} ${build_number} ${CI_ACTION_REF_NAME}` +operator_image_tag_for_test=`echo $operator_image_tag_for_test | awk '{print$1}'` +docker_image_branch_tag=`echo $operator_image_tag_for_test | awk '{print$2}'` +echo "::set-output name=docker_image_branch_tag::${docker_image_branch_tag}" +echo "::set-output name=operator_image_tag_for_test::${operator_image_tag_for_test}" From 4314f6abb47849e2a2718086bb7786bc6cd1b8fc Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 21 Jul 2021 17:32:10 +0300 Subject: [PATCH 25/67] add build_number env variable --- .github/workflows/operator_ci.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index baaa9fc53..12203fcd4 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -24,6 +24,8 @@ jobs: id: setup_dependencies run: | build/ci/github_actions/setup_ci_dependencies.sh + env: + build_number: "${{ github.run_number }}" - uses: actions/cache@v2 with: path: ${{ env.pythonLocation }} From fd7fa44ec314719710447e3b08793845acb51bf7 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 21 Jul 2021 17:42:37 +0300 Subject: [PATCH 26/67] fix setup ci dependencies --- .github/workflows/operator_ci.yaml | 4 ++-- build/ci/github_actions/setup_ci_dependencies.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 12203fcd4..ae0b88ad4 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -39,7 +39,7 @@ jobs: retention-days: 1 outputs: docker_image_branch_tag: "${{ steps.setup_dependencies.outputs.docker_image_branch_tag }}" - driver_images_tag: "${{ steps.setup_dependencies.outputs.driver_images_tag }}" + operator_image_tag_for_test: "${{ steps.setup_dependencies.outputs.operator_image_tag_for_test }}" Unit_testing: runs-on: ubuntu-latest @@ -114,7 +114,7 @@ jobs: [[ -G /tmp/.buildx-${{ matrix.image_type }} ]] && rm -rf /tmp/.buildx-${{ matrix.image_type }} mv /tmp/.buildx-new-${{ matrix.image_type }} /tmp/.buildx-${{ matrix.image_type }} outputs: - operator_image_tag_for_test: "${{ needs.Prepare_env.outputs.image_version }}_b${{ github.run_number }}_${{ steps.tested_github_branch.outputs.docker_image_branch_tag }}" + operator_image_tag_for_test: "${{ needs.Prepare_env.outputs.operator_image_tag_for_test }}" Create-cluster: runs-on: ubuntu-latest diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 8027dec57..d01b3162c 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -16,7 +16,7 @@ image_version=`cat version/version.go | grep -i driverversion | awk -F = '{print image_version=`echo ${image_version//\"}` # CSI-3173 - move image_version value into a common config file operator_image_tag_for_test=`build/ci/get_image_tag_from_branch.sh ${image_version} ${build_number} ${CI_ACTION_REF_NAME}` -operator_image_tag_for_test=`echo $operator_image_tag_for_test | awk '{print$1}'` docker_image_branch_tag=`echo $operator_image_tag_for_test | awk '{print$2}'` +operator_image_tag_for_test=`echo $operator_image_tag_for_test | awk '{print$1}'` echo "::set-output name=docker_image_branch_tag::${docker_image_branch_tag}" echo "::set-output name=operator_image_tag_for_test::${operator_image_tag_for_test}" From 2306ea5132f0e89f4471b121136f493d2e27890a Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 26 Jul 2021 10:11:00 +0300 Subject: [PATCH 27/67] change are_pods_ready in wait for k8s --- build/ci/github_actions/operator/wait_for_k8s_ready.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/github_actions/operator/wait_for_k8s_ready.sh b/build/ci/github_actions/operator/wait_for_k8s_ready.sh index 3d837e54d..542fdabed 100755 --- a/build/ci/github_actions/operator/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/operator/wait_for_k8s_ready.sh @@ -18,7 +18,7 @@ are_pods_ready (){ is_kubernetes_cluster_ready (){ pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` all_containers_are_running=false - are_all_pods_ready=$(is_pods_ready $pods) + are_all_pods_ready=$(are_pods_ready $pods) if [ $are_all_pods_ready == "false" ]; then all_containers_are_running=true fi From 0f39210041953851cc9490df04963cfd2a946a98 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 26 Jul 2021 11:36:24 +0300 Subject: [PATCH 28/67] add edit_operator_yaml_image function --- .github/workflows/operator_ci.yaml | 4 ++-- build/ci/github_actions/operator/deploy_driver.sh | 14 +++++++++----- .../operator/get_driver_github_branch.sh | 6 +++--- ...ver_to_be_ready.sh => wait_for_driver_ready.sh} | 0 4 files changed, 14 insertions(+), 10 deletions(-) rename build/ci/github_actions/operator/{wait_for_driver_to_be_ready.sh => wait_for_driver_ready.sh} (100%) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index ae0b88ad4..69537726b 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -162,11 +162,11 @@ jobs: env: driver_images_tag: "${{ steps.driver_github_branch.outputs.docker_image_branch_tag }}" operator_image_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" - operator_file: "deploy/installer/generated/ibm-block-csi-operator.yaml" + operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" - name: Wait for csi ibm block driver to be ready run: | - build/ci/github_actions/operator/wait_for_driver_to_be_ready.sh + build/ci/github_actions/operator/wait_for_driver_ready.sh - name: Save driver pods logs if: always() run: | diff --git a/build/ci/github_actions/operator/deploy_driver.sh b/build/ci/github_actions/operator/deploy_driver.sh index 7e0bf6200..c1950eecc 100755 --- a/build/ci/github_actions/operator/deploy_driver.sh +++ b/build/ci/github_actions/operator/deploy_driver.sh @@ -28,14 +28,18 @@ edit_cr_images (){ edit_cr_images -cd $(dirname $operator_file) -operator_image_in_branch=`yq eval '(.spec.template.spec.containers[0].image | select(. == "*ibmcom*"))' $(basename $operator_file)` -sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_file) +edit_operator_yaml_image (){ + cd $(dirname $operator_yaml) + operator_image_in_branch=`yq eval '(.spec.template.spec.containers[0].image | select(. == "*ibmcom*"))' $(basename $operator_yaml)` + sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_yaml) cd - +} + +edit_operator_yaml_image -cat $operator_file | grep image: +cat $operator_yaml | grep image: cat $cr_file | grep repository: cat $cr_file | grep tag: -kubectl apply -f $operator_file +kubectl apply -f $operator_yaml kubectl apply -f $cr_file diff --git a/build/ci/github_actions/operator/get_driver_github_branch.sh b/build/ci/github_actions/operator/get_driver_github_branch.sh index dbee6c9b3..bcf5cf199 100755 --- a/build/ci/github_actions/operator/get_driver_github_branch.sh +++ b/build/ci/github_actions/operator/get_driver_github_branch.sh @@ -21,10 +21,10 @@ is_private_branch_component_image_exist(){ echo $does_docker_image_has_tag } -does_controller_docker_image_has_tag=$(is_private_branch_component_image_exist controller) -does_node_docker_image_has_tag=$(is_private_branch_component_image_exist node) +is_controller_docker_image_has_tag=$(is_private_branch_component_image_exist controller) +is_node_docker_image_has_tag=$(is_private_branch_component_image_exist node) -if [ $does_controller_docker_image_has_tag == "true" ] && [ $does_node_docker_image_has_tag == "true" ]; then +if [ $is_controller_docker_image_has_tag == "true" ] && [ $is_node_docker_image_has_tag == "true" ]; then operator_branch=$triggering_branch fi diff --git a/build/ci/github_actions/operator/wait_for_driver_to_be_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh similarity index 100% rename from build/ci/github_actions/operator/wait_for_driver_to_be_ready.sh rename to build/ci/github_actions/operator/wait_for_driver_ready.sh From 949bdcf7a783b5af714017138de2adba726d0640 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 26 Jul 2021 11:43:21 +0300 Subject: [PATCH 29/67] change get_image_tags_from_branch script name --- build/ci/build_push_image.sh | 4 ++-- build/ci/get_image_tag_from_branch.sh | 8 -------- build/ci/get_image_tags_from_branch.sh | 8 ++++++++ build/ci/github_actions/setup_ci_dependencies.sh | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) delete mode 100755 build/ci/get_image_tag_from_branch.sh create mode 100755 build/ci/get_image_tags_from_branch.sh diff --git a/build/ci/build_push_image.sh b/build/ci/build_push_image.sh index 0444310df..9ab6570c0 100755 --- a/build/ci/build_push_image.sh +++ b/build/ci/build_push_image.sh @@ -9,8 +9,8 @@ done NODE_IMAGE=ibm-node-agent # Prepare specific tag for the image -specific_tag=`build/ci/get_image_tag_from_branch.sh ${IMAGE_VERSION} ${BUILD_NUMBER} ${GIT_BRANCH}` -specific_tag=`echo $specific_tag | awk '{print$1}'` +tags=`build/ci/get_image_tags_from_branch.sh ${IMAGE_VERSION} ${BUILD_NUMBER} ${GIT_BRANCH}` +specific_tag=`echo $tags | awk '{print$1}'` # Set latest tag only if its from develop branch or master and prepare tags [ "$GIT_BRANCH" = "develop" -o "$GIT_BRANCH" = "origin/develop" -o "$GIT_BRANCH" = "master" ] && tag_latest="true" || tag_latest="false" diff --git a/build/ci/get_image_tag_from_branch.sh b/build/ci/get_image_tag_from_branch.sh deleted file mode 100755 index 475dfd619..000000000 --- a/build/ci/get_image_tag_from_branch.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -xe -IMAGE_VERSION=$1 -BUILD_NUMBER=$2 -GIT_BRANCH=$3 -branch=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version -specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${branch}" -echo $specific_tag -echo $branch diff --git a/build/ci/get_image_tags_from_branch.sh b/build/ci/get_image_tags_from_branch.sh new file mode 100755 index 000000000..0e6a587e9 --- /dev/null +++ b/build/ci/get_image_tags_from_branch.sh @@ -0,0 +1,8 @@ +#!/bin/bash -xe +IMAGE_VERSION=$1 +BUILD_NUMBER=$2 +GIT_BRANCH=$3 +branch_tag=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version +specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${branch_tag}" +echo $specific_tag +echo $branch_tag diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index d01b3162c..b0dc47675 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -15,7 +15,7 @@ EOL image_version=`cat version/version.go | grep -i driverversion | awk -F = '{print $2}'` image_version=`echo ${image_version//\"}` # CSI-3173 - move image_version value into a common config file -operator_image_tag_for_test=`build/ci/get_image_tag_from_branch.sh ${image_version} ${build_number} ${CI_ACTION_REF_NAME}` +operator_image_tag_for_test=`build/ci/get_image_tags_from_branch.sh ${image_version} ${build_number} ${CI_ACTION_REF_NAME}` docker_image_branch_tag=`echo $operator_image_tag_for_test | awk '{print$2}'` operator_image_tag_for_test=`echo $operator_image_tag_for_test | awk '{print$1}'` echo "::set-output name=docker_image_branch_tag::${docker_image_branch_tag}" From 4df43a6519a643ef12dae113ad8e8c816e28617b Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 27 Jul 2021 11:36:41 +0300 Subject: [PATCH 30/67] help the deer readers to read wait for driver --- build/ci/build_push_image.sh | 2 +- build/ci/get_image_tags_from_branch.sh | 9 +-- .../operator/get_driver_github_branch.sh | 18 +++--- .../operator/save_driver_pods_logs.sh | 3 +- .../operator/wait_for_driver_ready.sh | 57 +++++++++++++------ .../github_actions/setup_ci_dependencies.sh | 14 +++-- 6 files changed, 68 insertions(+), 35 deletions(-) diff --git a/build/ci/build_push_image.sh b/build/ci/build_push_image.sh index 9ab6570c0..242020bc4 100755 --- a/build/ci/build_push_image.sh +++ b/build/ci/build_push_image.sh @@ -9,7 +9,7 @@ done NODE_IMAGE=ibm-node-agent # Prepare specific tag for the image -tags=`build/ci/get_image_tags_from_branch.sh ${IMAGE_VERSION} ${BUILD_NUMBER} ${GIT_BRANCH}` +tags=`build/ci/get_image_tags_from_branch.sh ${GIT_BRANCH} ${IMAGE_VERSION} ${BUILD_NUMBER}` specific_tag=`echo $tags | awk '{print$1}'` # Set latest tag only if its from develop branch or master and prepare tags diff --git a/build/ci/get_image_tags_from_branch.sh b/build/ci/get_image_tags_from_branch.sh index 0e6a587e9..d361ee969 100755 --- a/build/ci/get_image_tags_from_branch.sh +++ b/build/ci/get_image_tags_from_branch.sh @@ -1,8 +1,9 @@ #!/bin/bash -xe -IMAGE_VERSION=$1 -BUILD_NUMBER=$2 -GIT_BRANCH=$3 +GIT_BRANCH=$1 +IMAGE_VERSION=$2 +BUILD_NUMBER=$3 +commit_sha=$4 branch_tag=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version -specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${branch_tag}" +specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${commit_sha}${branch_tag}" echo $specific_tag echo $branch_tag diff --git a/build/ci/github_actions/operator/get_driver_github_branch.sh b/build/ci/github_actions/operator/get_driver_github_branch.sh index bcf5cf199..bcb66cb34 100755 --- a/build/ci/github_actions/operator/get_driver_github_branch.sh +++ b/build/ci/github_actions/operator/get_driver_github_branch.sh @@ -5,28 +5,28 @@ operator_branch=develop DOCKER_HUB_USERNAME=csiblock1 DOCKER_HUB_PASSWORD=$csiblock_dockerhub_password triggering_branch=$CI_ACTION_REF_NAME -target_image_tag=`echo $triggering_branch | sed 's|/|.|g'` +target_image_tags=`build/ci/get_image_tags_from_branch.sh ${triggering_branch}` +target_image_tag=`echo $target_image_tags | awk '{print$2}'` -is_private_branch_component_image_exist(){ +is_private_branch_controller_image_exists(){ driver_component=$1 - does_docker_image_has_tag=false + is_docker_image_has_tag=false export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $target_image_tag | awk '{print$2}'` for tag in $image_tags do if [[ "$tag" == "$target_image_tag" ]]; then - does_docker_image_has_tag=true + is_docker_image_has_tag=true break fi done - echo $does_docker_image_has_tag + echo $is_docker_image_has_tag } -is_controller_docker_image_has_tag=$(is_private_branch_component_image_exist controller) -is_node_docker_image_has_tag=$(is_private_branch_component_image_exist node) +is_controller_docker_image_has_tag=$(is_private_branch_controller_image_exists controller) +is_node_docker_image_has_tag=$(is_private_branch_controller_image_exists node) if [ $is_controller_docker_image_has_tag == "true" ] && [ $is_node_docker_image_has_tag == "true" ]; then - operator_branch=$triggering_branch + operator_branch=$target_image_tag fi -docker_image_branch_tag=`echo $operator_branch| sed 's|/|.|g'` echo "::set-output name=docker_image_branch_tag::${docker_image_branch_tag}" diff --git a/build/ci/github_actions/operator/save_driver_pods_logs.sh b/build/ci/github_actions/operator/save_driver_pods_logs.sh index c565882b3..7c45ee7c9 100755 --- a/build/ci/github_actions/operator/save_driver_pods_logs.sh +++ b/build/ci/github_actions/operator/save_driver_pods_logs.sh @@ -9,7 +9,8 @@ run_action_on_pod (){ pod_type=$1 action=$2 extra_args=$3 - kubectl $action $(get_all_pods_by_type $pod_type) $extra_args > "/tmp/driver_$(get_all_pods_by_type $pod_type)_${action}.txt" + get_all_pods_by_type=$(get_all_pods_by_type $pod_type) + kubectl $action $get_all_pods_by_type $extra_args > "/tmp/driver_${get_all_pods_by_type}_${action}.txt" } diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index 144444ed3..c2043a42c 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -4,21 +4,46 @@ set +o pipefail driver_is_ready=false actual_driver_running_time_in_seconds=0 minimum_driver_running_time_in_seconds=10 -while [ "$(kubectl get pod -A -l csi | grep controller | wc -l)" -eq 0 ]; do - echo "The controller is not deployed" - sleep 1 -done -while [ $driver_is_ready == "false" ]; do - if [ "$(kubectl get pod -A -l csi | grep -iv running | grep -iv name | wc -l)" -eq 0 ]; then - ((++actual_driver_running_time_in_seconds)) - if [ $actual_driver_running_time_in_seconds -eq $minimum_driver_running_time_in_seconds ]; then - driver_is_ready=true - fi - else - actual_driver_running_time_in_seconds=0 - fi +declare -a driver_pods_types=( + "controller" + "node" +) + +get_csi_pods (){ kubectl get pod -A -l csi - sleep 1 -done +} + +wait_for_driver_pod_to_start (){ + driver_pod_type=$1 + while [ "$(get_csi_pods | grep $driver_pod_type | wc -l)" -eq 0 ]; do + echo "The $driver_pod_type is not deployed" + sleep 1 + done +} + +wait_for_driver_deployment_to_start (){ + for driver_pods_type in "${driver_pods_types[@]}" + do + wait_for_driver_pod_to_start $driver_pods_type + done +} + +wait_for_driver_deployment_to_finish (){ + while [ $driver_is_ready == "false" ]; do + if [ "$(get_csi_pods | grep -iv running | grep -iv name | wc -l)" -eq 0 ]; then + ((++actual_driver_running_time_in_seconds)) + if [ $actual_driver_running_time_in_seconds -eq $minimum_driver_running_time_in_seconds ]; then + driver_is_ready=true + fi + else + actual_driver_running_time_in_seconds=0 + fi + get_csi_pods + sleep 1 + done +} + +wait_for_driver_deployment_to_start +wait_for_driver_deployment_to_finish echo Driver is running -kubectl get pod -A -l csi +get_csi_pods diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index b0dc47675..89ad6e964 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -12,11 +12,17 @@ yq() { } EOL +# CSI-3173 - move image_version value into a common config file image_version=`cat version/version.go | grep -i driverversion | awk -F = '{print $2}'` image_version=`echo ${image_version//\"}` -# CSI-3173 - move image_version value into a common config file -operator_image_tag_for_test=`build/ci/get_image_tags_from_branch.sh ${image_version} ${build_number} ${CI_ACTION_REF_NAME}` -docker_image_branch_tag=`echo $operator_image_tag_for_test | awk '{print$2}'` -operator_image_tag_for_test=`echo $operator_image_tag_for_test | awk '{print$1}'` +GITHUB_SHA=${GITHUB_SHA:0:7}_ +operator_image_tags_for_test=`build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA}` +docker_image_branch_tag=`echo $operator_image_tags_for_test | awk '{print$2}'` +operator_image_tag_for_test=`echo $operator_image_tags_for_test | awk '{print$1}'` + +if [ "$docker_image_branch_tag" == "develop" ]; then + docker_image_branch_tag=latest +fi + echo "::set-output name=docker_image_branch_tag::${docker_image_branch_tag}" echo "::set-output name=operator_image_tag_for_test::${operator_image_tag_for_test}" From 9c6da847f734f60fa237d64c64f0a7640a193498 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 27 Jul 2021 12:23:22 +0300 Subject: [PATCH 31/67] add is_wanted_image_in_pod --- .github/workflows/operator_ci.yaml | 2 +- .../github_actions/operator/deploy_driver.sh | 3 --- .../operator/wait_for_driver_ready.sh | 20 +++++++++++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 69537726b..8b4293167 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -125,6 +125,7 @@ jobs: controller_repository_for_test: csiblock1/ibm-block-csi-controller node_repository_for_test: csiblock1/ibm-block-csi-node operator_image_repository_for_test: csiblock1/ibm-block-csi-operator + operator_image_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" timeout-minutes: 7 steps: - name: Checkout @@ -161,7 +162,6 @@ jobs: build/ci/github_actions/operator/deploy_driver.sh env: driver_images_tag: "${{ steps.driver_github_branch.outputs.docker_image_branch_tag }}" - operator_image_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" - name: Wait for csi ibm block driver to be ready diff --git a/build/ci/github_actions/operator/deploy_driver.sh b/build/ci/github_actions/operator/deploy_driver.sh index c1950eecc..01c4f7db1 100755 --- a/build/ci/github_actions/operator/deploy_driver.sh +++ b/build/ci/github_actions/operator/deploy_driver.sh @@ -1,9 +1,6 @@ #!/bin/bash -xel set +o pipefail -if [ "$driver_images_tag" == "develop" ]; then - driver_images_tag=latest -fi operator_image_for_test=$operator_image_repository_for_test:$operator_image_tag_for_test kind_node_name=`docker ps --format "{{.Names}}"` diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index c2043a42c..9b5c7a82b 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -43,7 +43,27 @@ wait_for_driver_deployment_to_finish (){ done } +is_wanted_image_in_pod (){ + pod_type=$1 + wanted_pod_image=$2 + image_in_pod=`kubectl describe pod $(get_csi_pods | grep $pod_type) | -i image: | grep $wanted_pod_image | awk -F Image: '{print$2}' | awk '{print$1}'` + if [[ $image_in_pod != $wanted_pod_image ]]; then + echo "$pod_type's image is not the wanted image ($wanted_pod_image)" + exit 1 + fi +} + +check_the_pods_images (){ + wanted_node_image=$node_repository_for_test:$driver_images_tag + wanted_controller_image=$controller_repository_for_test:$driver_images_tag + wanted_operator_image=$operator_image_repository_for_test:$operator_image_tag_for_test + is_wanted_image_in_pod "operator" $wanted_operator_image + is_wanted_image_in_pod "controller" $wanted_controller_image + is_wanted_image_in_pod "node" $wanted_node_image +} + wait_for_driver_deployment_to_start wait_for_driver_deployment_to_finish +check_the_pods_images echo Driver is running get_csi_pods From df5f840e897bd3934b232211c091d25038c08cff Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 27 Jul 2021 14:18:39 +0300 Subject: [PATCH 32/67] add driver_images_tag env to wait for driver --- .github/workflows/operator_ci.yaml | 2 ++ build/ci/github_actions/operator/get_driver_github_branch.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 8b4293167..e2a01b4e3 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -167,6 +167,8 @@ jobs: - name: Wait for csi ibm block driver to be ready run: | build/ci/github_actions/operator/wait_for_driver_ready.sh + env: + driver_images_tag: "${{ steps.driver_github_branch.outputs.docker_image_branch_tag }}" - name: Save driver pods logs if: always() run: | diff --git a/build/ci/github_actions/operator/get_driver_github_branch.sh b/build/ci/github_actions/operator/get_driver_github_branch.sh index bcb66cb34..9e5e64c0b 100755 --- a/build/ci/github_actions/operator/get_driver_github_branch.sh +++ b/build/ci/github_actions/operator/get_driver_github_branch.sh @@ -29,4 +29,4 @@ if [ $is_controller_docker_image_has_tag == "true" ] && [ $is_node_docker_image_ operator_branch=$target_image_tag fi -echo "::set-output name=docker_image_branch_tag::${docker_image_branch_tag}" +echo "::set-output name=docker_image_branch_tag::${operator_branch}" From ccdd46d0a16aee1e5a49adbce7a9c7bfff7ffb02 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 29 Jul 2021 11:04:54 +0300 Subject: [PATCH 33/67] fix wait for driver --- .github/workflows/operator_ci.yaml | 2 +- ...hub_branch.sh => get_driver_branch_tag.sh} | 0 .../operator/save_driver_pods_logs.sh | 10 +++++----- .../operator/wait_for_driver_ready.sh | 19 ++++++++++--------- 4 files changed, 16 insertions(+), 15 deletions(-) rename build/ci/github_actions/operator/{get_driver_github_branch.sh => get_driver_branch_tag.sh} (100%) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index e2a01b4e3..73cd4a9be 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -147,7 +147,7 @@ jobs: - name: Get the driver github branch id: driver_github_branch run: | - build/ci/github_actions/operator/get_driver_github_branch.sh + build/ci/github_actions/operator/get_driver_branch_tag.sh env: github_token: ${{ secrets.CSIBLOCK_GITHUB_TOKEN }} - name: Create k8s Kind Cluster diff --git a/build/ci/github_actions/operator/get_driver_github_branch.sh b/build/ci/github_actions/operator/get_driver_branch_tag.sh similarity index 100% rename from build/ci/github_actions/operator/get_driver_github_branch.sh rename to build/ci/github_actions/operator/get_driver_branch_tag.sh diff --git a/build/ci/github_actions/operator/save_driver_pods_logs.sh b/build/ci/github_actions/operator/save_driver_pods_logs.sh index 7c45ee7c9..ac36c9815 100755 --- a/build/ci/github_actions/operator/save_driver_pods_logs.sh +++ b/build/ci/github_actions/operator/save_driver_pods_logs.sh @@ -5,12 +5,12 @@ get_all_pods_by_type (){ kubectl get pod -l csi | grep $pod_type | awk '{print$1}' } -run_action_on_pod (){ +save_action_output (){ pod_type=$1 action=$2 extra_args=$3 - get_all_pods_by_type=$(get_all_pods_by_type $pod_type) - kubectl $action $get_all_pods_by_type $extra_args > "/tmp/driver_${get_all_pods_by_type}_${action}.txt" + pod_names=$(get_all_pods_by_type $pod_type) + kubectl $action $pod_names $extra_args > "/tmp/driver_${pod_names}_${action}.txt" } @@ -22,6 +22,6 @@ declare -a pod_types=( for pod_type in "${pod_types[@]}" do - run_action_on_pod $pod_type logs "-c ibm-block-csi-$pod_type" - run_action_on_pod $pod_type "describe pod" "" + save_action_output $pod_type logs "-c ibm-block-csi-$pod_type" + save_action_output $pod_type "describe pod" "" done diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index 9b5c7a82b..7f8cc622f 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -46,24 +46,25 @@ wait_for_driver_deployment_to_finish (){ is_wanted_image_in_pod (){ pod_type=$1 wanted_pod_image=$2 - image_in_pod=`kubectl describe pod $(get_csi_pods | grep $pod_type) | -i image: | grep $wanted_pod_image | awk -F Image: '{print$2}' | awk '{print$1}'` + image_in_pod=`kubectl describe pod $(get_csi_pods | grep $pod_type) | grep -i image: | \ + grep $wanted_pod_image | awk -F Image: '{print$2}' | awk '{print$1}'` if [[ $image_in_pod != $wanted_pod_image ]]; then echo "$pod_type's image is not the wanted image ($wanted_pod_image)" exit 1 fi } -check_the_pods_images (){ - wanted_node_image=$node_repository_for_test:$driver_images_tag - wanted_controller_image=$controller_repository_for_test:$driver_images_tag - wanted_operator_image=$operator_image_repository_for_test:$operator_image_tag_for_test - is_wanted_image_in_pod "operator" $wanted_operator_image - is_wanted_image_in_pod "controller" $wanted_controller_image - is_wanted_image_in_pod "node" $wanted_node_image +chec_pods_images (){ + expected_node_image=$node_repository_for_test:$driver_images_tag + expected_controller_image=$controller_repository_for_test:$driver_images_tag + expected_operator_image=$operator_image_repository_for_test:$operator_image_tag_for_test + is_expected_image_in_pod "operator" $wanted_operator_image + is_expected_image_in_pod "controller" $wanted_controller_image + is_expected_image_in_pod "node" $wanted_node_image } wait_for_driver_deployment_to_start wait_for_driver_deployment_to_finish -check_the_pods_images +chec_pods_images echo Driver is running get_csi_pods From a0e8eb4ee483674a209bcf9c23e563ac9dda6437 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 29 Jul 2021 11:53:32 +0300 Subject: [PATCH 34/67] fix function is_expected_image_in_pod --- build/ci/github_actions/operator/wait_for_driver_ready.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index 7f8cc622f..e03198f56 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -43,7 +43,7 @@ wait_for_driver_deployment_to_finish (){ done } -is_wanted_image_in_pod (){ +is_expected_image_in_pod (){ pod_type=$1 wanted_pod_image=$2 image_in_pod=`kubectl describe pod $(get_csi_pods | grep $pod_type) | grep -i image: | \ From fcffa327075a008eb433bea4a7dde5c1175ea340 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 3 Aug 2021 16:30:00 +0300 Subject: [PATCH 35/67] answer some code review comments --- .github/workflows/operator_ci.yaml | 23 ++++++++++--------- .../github_actions/operator/deploy_driver.sh | 14 +++++------ .../operator/get_driver_branch_tag.sh | 8 +++---- ...gs.sh => save_driver_logs_to_artifacts.sh} | 4 ++-- .../operator/wait_for_driver_ready.sh | 20 ++++++++-------- .../github_actions/setup_ci_dependencies.sh | 16 ++++++++----- 6 files changed, 45 insertions(+), 40 deletions(-) rename build/ci/github_actions/operator/{save_driver_pods_logs.sh => save_driver_logs_to_artifacts.sh} (79%) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 73cd4a9be..e71b52ebc 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -10,7 +10,7 @@ on: - master jobs: Prepare_env: - name: "prepare env" + name: "Prepare env" runs-on: ubuntu-latest steps: - name: Checkout code @@ -38,7 +38,7 @@ jobs: /home/runner/.bash_profile retention-days: 1 outputs: - docker_image_branch_tag: "${{ steps.setup_dependencies.outputs.docker_image_branch_tag }}" + image_branch_tag: "${{ steps.setup_dependencies.outputs.image_branch_tag }}" operator_image_tag_for_test: "${{ steps.setup_dependencies.outputs.operator_image_tag_for_test }}" Unit_testing: @@ -62,7 +62,7 @@ jobs: run: | ./build/ci/run_olm_validation.sh - CSI-Build-and-push-images: + CSI_Build_and_push_images: name: "CSI Build and push images" runs-on: ubuntu-latest needs: @@ -101,7 +101,7 @@ jobs: push: true tags: | csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.operator_image_tag_for_test }} - csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.docker_image_branch_tag }} + csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.image_branch_tag }} csiblock1/ibm-block-csi-${{ matrix.image_type }}:latest file: build/Dockerfile.${{ matrix.image_type }} cache-from: type=local,src=/tmp/.buildx-${{ matrix.image_type }} @@ -116,7 +116,7 @@ jobs: outputs: operator_image_tag_for_test: "${{ needs.Prepare_env.outputs.operator_image_tag_for_test }}" - Create-cluster: + Create_cluster: runs-on: ubuntu-latest name: "Create cluster" needs: CSI-Build-and-push-images @@ -126,6 +126,7 @@ jobs: node_repository_for_test: csiblock1/ibm-block-csi-node operator_image_repository_for_test: csiblock1/ibm-block-csi-operator operator_image_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" + operator_image_for_test: "csiblock1/ibm-block-csi-operator:${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" timeout-minutes: 7 steps: - name: Checkout @@ -144,8 +145,8 @@ jobs: with: path: ${{ env.pythonLocation }} key: ${{ env.pythonLocation }}-${{ hashFiles('dev-requirements.txt') }} - - name: Get the driver github branch - id: driver_github_branch + - name: Get driver branch + id: driver_branch run: | build/ci/github_actions/operator/get_driver_branch_tag.sh env: @@ -161,18 +162,18 @@ jobs: run: | build/ci/github_actions/operator/deploy_driver.sh env: - driver_images_tag: "${{ steps.driver_github_branch.outputs.docker_image_branch_tag }}" + driver_images_tag: "${{ steps.driver_branch.outputs.image_branch_tag }}" operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" - name: Wait for csi ibm block driver to be ready run: | build/ci/github_actions/operator/wait_for_driver_ready.sh env: - driver_images_tag: "${{ steps.driver_github_branch.outputs.docker_image_branch_tag }}" - - name: Save driver pods logs + driver_images_tag: "${{ steps.driver_branch.outputs.image_branch_tag }}" + - name: Save driver pods logs to artifacts if: always() run: | - build/ci/github_actions/operator/save_driver_pods_logs.sh + build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh - name: Upload driver pods logs if: always() uses: actions/upload-artifact@v2 diff --git a/build/ci/github_actions/operator/deploy_driver.sh b/build/ci/github_actions/operator/deploy_driver.sh index 01c4f7db1..f741203a7 100755 --- a/build/ci/github_actions/operator/deploy_driver.sh +++ b/build/ci/github_actions/operator/deploy_driver.sh @@ -1,11 +1,11 @@ #!/bin/bash -xel set +o pipefail -operator_image_for_test=$operator_image_repository_for_test:$operator_image_tag_for_test - -kind_node_name=`docker ps --format "{{.Names}}"` -docker exec -i $kind_node_name apt-get update -docker exec -i $kind_node_name apt -y install open-iscsi +install_worker_prerequisites() { + kind_node_name=`docker ps --format "{{.Names}}"` + docker exec -i $kind_node_name apt-get update + docker exec -i $kind_node_name apt -y install open-iscsi +} edit_cr_images (){ cd $(dirname $cr_file) @@ -23,8 +23,6 @@ edit_cr_images (){ cd - } -edit_cr_images - edit_operator_yaml_image (){ cd $(dirname $operator_yaml) operator_image_in_branch=`yq eval '(.spec.template.spec.containers[0].image | select(. == "*ibmcom*"))' $(basename $operator_yaml)` @@ -32,6 +30,8 @@ edit_operator_yaml_image (){ cd - } +install_worker_prerequisites +edit_cr_images edit_operator_yaml_image cat $operator_yaml | grep image: diff --git a/build/ci/github_actions/operator/get_driver_branch_tag.sh b/build/ci/github_actions/operator/get_driver_branch_tag.sh index 9e5e64c0b..a4f4df1f8 100755 --- a/build/ci/github_actions/operator/get_driver_branch_tag.sh +++ b/build/ci/github_actions/operator/get_driver_branch_tag.sh @@ -8,7 +8,7 @@ triggering_branch=$CI_ACTION_REF_NAME target_image_tags=`build/ci/get_image_tags_from_branch.sh ${triggering_branch}` target_image_tag=`echo $target_image_tags | awk '{print$2}'` -is_private_branch_controller_image_exists(){ +is_private_branch_component_image_exists(){ driver_component=$1 is_docker_image_has_tag=false export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $target_image_tag | awk '{print$2}'` @@ -22,11 +22,11 @@ is_private_branch_controller_image_exists(){ echo $is_docker_image_has_tag } -is_controller_docker_image_has_tag=$(is_private_branch_controller_image_exists controller) -is_node_docker_image_has_tag=$(is_private_branch_controller_image_exists node) +is_controller_docker_image_has_tag=$(is_private_branch_component_image_exists controller) +is_node_docker_image_has_tag=$(is_private_branch_component_image_exists node) if [ $is_controller_docker_image_has_tag == "true" ] && [ $is_node_docker_image_has_tag == "true" ]; then operator_branch=$target_image_tag fi -echo "::set-output name=docker_image_branch_tag::${operator_branch}" +echo "::set-output name=image_branch_tag::${operator_branch}" diff --git a/build/ci/github_actions/operator/save_driver_pods_logs.sh b/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh similarity index 79% rename from build/ci/github_actions/operator/save_driver_pods_logs.sh rename to build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh index ac36c9815..00c1783f5 100755 --- a/build/ci/github_actions/operator/save_driver_pods_logs.sh +++ b/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh @@ -8,10 +8,10 @@ get_all_pods_by_type (){ save_action_output (){ pod_type=$1 action=$2 + action=`echo $action | awk '{print$1}'` extra_args=$3 pod_names=$(get_all_pods_by_type $pod_type) - kubectl $action $pod_names $extra_args > "/tmp/driver_${pod_names}_${action}.txt" - + kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_${action}.txt" } declare -a pod_types=( diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index e03198f56..adb44e318 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -43,28 +43,28 @@ wait_for_driver_deployment_to_finish (){ done } -is_expected_image_in_pod (){ +assert_expected_image_in_pod (){ pod_type=$1 - wanted_pod_image=$2 + expected_pod_image=$2 image_in_pod=`kubectl describe pod $(get_csi_pods | grep $pod_type) | grep -i image: | \ - grep $wanted_pod_image | awk -F Image: '{print$2}' | awk '{print$1}'` - if [[ $image_in_pod != $wanted_pod_image ]]; then - echo "$pod_type's image is not the wanted image ($wanted_pod_image)" + grep $expected_pod_image | awk -F Image: '{print$2}' | awk '{print$1}'` + if [[ $image_in_pod != $expected_pod_image ]]; then + echo "$pod_type's image is not the expected image ($expected_pod_image)" exit 1 fi } -chec_pods_images (){ +assert_pods_images (){ expected_node_image=$node_repository_for_test:$driver_images_tag expected_controller_image=$controller_repository_for_test:$driver_images_tag expected_operator_image=$operator_image_repository_for_test:$operator_image_tag_for_test - is_expected_image_in_pod "operator" $wanted_operator_image - is_expected_image_in_pod "controller" $wanted_controller_image - is_expected_image_in_pod "node" $wanted_node_image + assert_expected_image_in_pod "operator" $expected_operator_image + assert_expected_image_in_pod "controller" $expected_controller_image + assert_expected_image_in_pod "node" $expected_node_image } wait_for_driver_deployment_to_start wait_for_driver_deployment_to_finish -chec_pods_images +assert_pods_images echo Driver is running get_csi_pods diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 89ad6e964..4908afdba 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -1,9 +1,13 @@ #!/bin/bash -xe set +o pipefail -python -m pip install --upgrade pip docker-hub==2.2.0 -echo yq > dev-requirements.txt +install_ci_dependencies (){ + python -m pip install --upgrade pip + echo docker-hub==2.2.0 > dev-requirements.txt + pip install -r dev-requirements.txt +} +install_ci_dependencies cat >>/home/runner/.bash_profile <<'EOL' yq() { docker run --rm -e operator_image_for_test=$operator_image_for_test\ @@ -17,12 +21,12 @@ image_version=`cat version/version.go | grep -i driverversion | awk -F = '{print image_version=`echo ${image_version//\"}` GITHUB_SHA=${GITHUB_SHA:0:7}_ operator_image_tags_for_test=`build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA}` -docker_image_branch_tag=`echo $operator_image_tags_for_test | awk '{print$2}'` +image_branch_tag=`echo $operator_image_tags_for_test | awk '{print$2}'` operator_image_tag_for_test=`echo $operator_image_tags_for_test | awk '{print$1}'` -if [ "$docker_image_branch_tag" == "develop" ]; then - docker_image_branch_tag=latest +if [ "$image_branch_tag" == "develop" ]; then + image_branch_tag=latest fi -echo "::set-output name=docker_image_branch_tag::${docker_image_branch_tag}" +echo "::set-output name=image_branch_tag::${image_branch_tag}" echo "::set-output name=operator_image_tag_for_test::${operator_image_tag_for_test}" From 3cb03f377a4f321e367ac364adba2d447ec27713 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 3 Aug 2021 18:05:28 +0300 Subject: [PATCH 36/67] remove variables from yq command --- build/ci/github_actions/operator/deploy_driver.sh | 2 +- build/ci/github_actions/setup_ci_dependencies.sh | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/build/ci/github_actions/operator/deploy_driver.sh b/build/ci/github_actions/operator/deploy_driver.sh index f741203a7..40295213a 100755 --- a/build/ci/github_actions/operator/deploy_driver.sh +++ b/build/ci/github_actions/operator/deploy_driver.sh @@ -18,7 +18,7 @@ edit_cr_images (){ ) for image_field in ${!cr_image_fields[@]}; do cr_image_value=${cr_image_fields[${image_field}]} - yq eval "${image_field} |= env(cr_image_value)" $(basename $cr_file) -i + yq eval "${image_field} |= \"${cr_image_value}\"" $(basename $cr_file) -i done cd - } diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 4908afdba..e7ebd567b 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -10,9 +10,7 @@ install_ci_dependencies (){ install_ci_dependencies cat >>/home/runner/.bash_profile <<'EOL' yq() { - docker run --rm -e operator_image_for_test=$operator_image_for_test\ - -e cr_image_value=$cr_image_value\ - -i -v "${PWD}":/workdir mikefarah/yq "$@" + docker run --rm -i -v "${PWD}":/workdir mikefarah/yq "$@" } EOL From 16e78699978d073301e5c36f5959ab594d8d47fe Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 4 Aug 2021 09:49:46 +0300 Subject: [PATCH 37/67] change commit sha parameter --- .github/workflows/operator_ci.yaml | 10 +++++----- build/ci/get_image_tags_from_branch.sh | 4 ++-- .../github_actions/operator/wait_for_driver_ready.sh | 2 +- build/ci/github_actions/setup_ci_dependencies.sh | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index e71b52ebc..5ce80670c 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -39,7 +39,7 @@ jobs: retention-days: 1 outputs: image_branch_tag: "${{ steps.setup_dependencies.outputs.image_branch_tag }}" - operator_image_tag_for_test: "${{ steps.setup_dependencies.outputs.operator_image_tag_for_test }}" + operator_specific_tag _for_test: "${{ steps.setup_dependencies.outputs.operator_specific_tag _for_test }}" Unit_testing: runs-on: ubuntu-latest @@ -100,7 +100,7 @@ jobs: platforms: linux/amd64,linux/ppc64le,linux/s390x push: true tags: | - csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.operator_image_tag_for_test }} + csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.operator_specific_tag _for_test }} csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.image_branch_tag }} csiblock1/ibm-block-csi-${{ matrix.image_type }}:latest file: build/Dockerfile.${{ matrix.image_type }} @@ -114,7 +114,7 @@ jobs: [[ -G /tmp/.buildx-${{ matrix.image_type }} ]] && rm -rf /tmp/.buildx-${{ matrix.image_type }} mv /tmp/.buildx-new-${{ matrix.image_type }} /tmp/.buildx-${{ matrix.image_type }} outputs: - operator_image_tag_for_test: "${{ needs.Prepare_env.outputs.operator_image_tag_for_test }}" + operator_specific_tag _for_test: "${{ needs.Prepare_env.outputs.operator_specific_tag _for_test }}" Create_cluster: runs-on: ubuntu-latest @@ -125,8 +125,8 @@ jobs: controller_repository_for_test: csiblock1/ibm-block-csi-controller node_repository_for_test: csiblock1/ibm-block-csi-node operator_image_repository_for_test: csiblock1/ibm-block-csi-operator - operator_image_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" - operator_image_for_test: "csiblock1/ibm-block-csi-operator:${{ needs.CSI-Build-and-push-images.outputs.operator_image_tag_for_test }}" + operator_specific_tag _for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_specific_tag _for_test }}" + operator_image_for_test: "csiblock1/ibm-block-csi-operator:${{ needs.CSI-Build-and-push-images.outputs.operator_specific_tag _for_test }}" timeout-minutes: 7 steps: - name: Checkout diff --git a/build/ci/get_image_tags_from_branch.sh b/build/ci/get_image_tags_from_branch.sh index d361ee969..7eb8a4d6d 100755 --- a/build/ci/get_image_tags_from_branch.sh +++ b/build/ci/get_image_tags_from_branch.sh @@ -2,8 +2,8 @@ GIT_BRANCH=$1 IMAGE_VERSION=$2 BUILD_NUMBER=$3 -commit_sha=$4 +COMMIT_HASH=$4 branch_tag=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version -specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${commit_sha}${branch_tag}" +specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${COMMIT_HASH}${branch_tag}" echo $specific_tag echo $branch_tag diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index adb44e318..2f834c8b0 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -57,7 +57,7 @@ assert_expected_image_in_pod (){ assert_pods_images (){ expected_node_image=$node_repository_for_test:$driver_images_tag expected_controller_image=$controller_repository_for_test:$driver_images_tag - expected_operator_image=$operator_image_repository_for_test:$operator_image_tag_for_test + expected_operator_image=$operator_image_repository_for_test:$operator_specific_tag _for_test assert_expected_image_in_pod "operator" $expected_operator_image assert_expected_image_in_pod "controller" $expected_controller_image assert_expected_image_in_pod "node" $expected_node_image diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index e7ebd567b..1e024abf4 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -20,11 +20,11 @@ image_version=`echo ${image_version//\"}` GITHUB_SHA=${GITHUB_SHA:0:7}_ operator_image_tags_for_test=`build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA}` image_branch_tag=`echo $operator_image_tags_for_test | awk '{print$2}'` -operator_image_tag_for_test=`echo $operator_image_tags_for_test | awk '{print$1}'` +operator_specific_tag _for_test=`echo $operator_image_tags_for_test | awk '{print$1}'` if [ "$image_branch_tag" == "develop" ]; then image_branch_tag=latest fi echo "::set-output name=image_branch_tag::${image_branch_tag}" -echo "::set-output name=operator_image_tag_for_test::${operator_image_tag_for_test}" +echo "::set-output name=operator_specific_tag _for_test::${operator_specific_tag _for_test}" From 5e4ecaaa63347e4b8da3ff1342f778b891905bf1 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 4 Aug 2021 09:51:45 +0300 Subject: [PATCH 38/67] fix operator image branch for test parameter --- .github/workflows/operator_ci.yaml | 10 +++++----- .../github_actions/operator/wait_for_driver_ready.sh | 2 +- build/ci/github_actions/setup_ci_dependencies.sh | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 5ce80670c..aaa233729 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -39,7 +39,7 @@ jobs: retention-days: 1 outputs: image_branch_tag: "${{ steps.setup_dependencies.outputs.image_branch_tag }}" - operator_specific_tag _for_test: "${{ steps.setup_dependencies.outputs.operator_specific_tag _for_test }}" + operator_specific_tag_for_test: "${{ steps.setup_dependencies.outputs.operator_specific_tag_for_test }}" Unit_testing: runs-on: ubuntu-latest @@ -100,7 +100,7 @@ jobs: platforms: linux/amd64,linux/ppc64le,linux/s390x push: true tags: | - csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.operator_specific_tag _for_test }} + csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.operator_specific_tag_for_test }} csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.image_branch_tag }} csiblock1/ibm-block-csi-${{ matrix.image_type }}:latest file: build/Dockerfile.${{ matrix.image_type }} @@ -114,7 +114,7 @@ jobs: [[ -G /tmp/.buildx-${{ matrix.image_type }} ]] && rm -rf /tmp/.buildx-${{ matrix.image_type }} mv /tmp/.buildx-new-${{ matrix.image_type }} /tmp/.buildx-${{ matrix.image_type }} outputs: - operator_specific_tag _for_test: "${{ needs.Prepare_env.outputs.operator_specific_tag _for_test }}" + operator_specific_tag_for_test: "${{ needs.Prepare_env.outputs.operator_specific_tag_for_test }}" Create_cluster: runs-on: ubuntu-latest @@ -125,8 +125,8 @@ jobs: controller_repository_for_test: csiblock1/ibm-block-csi-controller node_repository_for_test: csiblock1/ibm-block-csi-node operator_image_repository_for_test: csiblock1/ibm-block-csi-operator - operator_specific_tag _for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_specific_tag _for_test }}" - operator_image_for_test: "csiblock1/ibm-block-csi-operator:${{ needs.CSI-Build-and-push-images.outputs.operator_specific_tag _for_test }}" + operator_specific_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_specific_tag_for_test }}" + operator_image_for_test: "csiblock1/ibm-block-csi-operator:${{ needs.CSI-Build-and-push-images.outputs.operator_specific_tag_for_test }}" timeout-minutes: 7 steps: - name: Checkout diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index 2f834c8b0..db9ac6110 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -57,7 +57,7 @@ assert_expected_image_in_pod (){ assert_pods_images (){ expected_node_image=$node_repository_for_test:$driver_images_tag expected_controller_image=$controller_repository_for_test:$driver_images_tag - expected_operator_image=$operator_image_repository_for_test:$operator_specific_tag _for_test + expected_operator_image=$operator_image_repository_for_test:$operator_specific_tag_for_test assert_expected_image_in_pod "operator" $expected_operator_image assert_expected_image_in_pod "controller" $expected_controller_image assert_expected_image_in_pod "node" $expected_node_image diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 1e024abf4..845b72d50 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -20,11 +20,11 @@ image_version=`echo ${image_version//\"}` GITHUB_SHA=${GITHUB_SHA:0:7}_ operator_image_tags_for_test=`build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA}` image_branch_tag=`echo $operator_image_tags_for_test | awk '{print$2}'` -operator_specific_tag _for_test=`echo $operator_image_tags_for_test | awk '{print$1}'` +operator_specific_tag_for_test=`echo $operator_image_tags_for_test | awk '{print$1}'` if [ "$image_branch_tag" == "develop" ]; then image_branch_tag=latest fi echo "::set-output name=image_branch_tag::${image_branch_tag}" -echo "::set-output name=operator_specific_tag _for_test::${operator_specific_tag _for_test}" +echo "::set-output name=operator_specific_tag_for_test::${operator_specific_tag_for_test}" From a38ca6d857a28bbb47ca096fda4d94bb941e929c Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 4 Aug 2021 09:53:03 +0300 Subject: [PATCH 39/67] change CSI_Build_and_push_images variable --- .github/workflows/operator_ci.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index aaa233729..45a875b4d 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -119,14 +119,14 @@ jobs: Create_cluster: runs-on: ubuntu-latest name: "Create cluster" - needs: CSI-Build-and-push-images + needs: CSI_Build_and_push_images env: csiblock_dockerhub_password: ${{ secrets.CSIBLOCK_DOCKERHUB_PASSWORD }} controller_repository_for_test: csiblock1/ibm-block-csi-controller node_repository_for_test: csiblock1/ibm-block-csi-node operator_image_repository_for_test: csiblock1/ibm-block-csi-operator - operator_specific_tag_for_test: "${{ needs.CSI-Build-and-push-images.outputs.operator_specific_tag_for_test }}" - operator_image_for_test: "csiblock1/ibm-block-csi-operator:${{ needs.CSI-Build-and-push-images.outputs.operator_specific_tag_for_test }}" + operator_specific_tag_for_test: "${{ needs.CSI_Build_and_push_images.outputs.operator_specific_tag_for_test }}" + operator_image_for_test: "csiblock1/ibm-block-csi-operator:${{ needs.CSI_Build_and_push_images.outputs.operator_specific_tag_for_test }}" timeout-minutes: 7 steps: - name: Checkout From d6f412f116a298363db21edc1ea2100eb754870a Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 4 Aug 2021 10:40:42 +0300 Subject: [PATCH 40/67] fix the assert for images function --- .../github_actions/operator/save_driver_logs_to_artifacts.sh | 4 ++-- build/ci/github_actions/operator/wait_for_driver_ready.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh b/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh index 00c1783f5..d12c306c7 100755 --- a/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh +++ b/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh @@ -8,10 +8,10 @@ get_all_pods_by_type (){ save_action_output (){ pod_type=$1 action=$2 - action=`echo $action | awk '{print$1}'` + action_for_artifacte_files=`echo $action | awk '{print$1}'` extra_args=$3 pod_names=$(get_all_pods_by_type $pod_type) - kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_${action}.txt" + kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_${action_for_artifacte_files}.txt" } declare -a pod_types=( diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index db9ac6110..3ec59e9ca 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -46,10 +46,10 @@ wait_for_driver_deployment_to_finish (){ assert_expected_image_in_pod (){ pod_type=$1 expected_pod_image=$2 - image_in_pod=`kubectl describe pod $(get_csi_pods | grep $pod_type) | grep -i image: | \ + image_in_pod=`kubectl describe pod $(get_csi_pods | grep $pod_type | awk '{print$1}') | grep -i image: | \ grep $expected_pod_image | awk -F Image: '{print$2}' | awk '{print$1}'` if [[ $image_in_pod != $expected_pod_image ]]; then - echo "$pod_type's image is not the expected image ($expected_pod_image)" + echo "$pod_type's image ($image_in_pod) is not the expected image ($expected_pod_image)" exit 1 fi } From 38f2573f58950b90504a3088aa90e1b9d81559f6 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 4 Aug 2021 11:28:32 +0300 Subject: [PATCH 41/67] change the image_in_pod command --- build/ci/github_actions/operator/wait_for_driver_ready.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index 3ec59e9ca..533c4bdb7 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -46,7 +46,7 @@ wait_for_driver_deployment_to_finish (){ assert_expected_image_in_pod (){ pod_type=$1 expected_pod_image=$2 - image_in_pod=`kubectl describe pod $(get_csi_pods | grep $pod_type | awk '{print$1}') | grep -i image: | \ + image_in_pod=`kubectl describe pod $(get_csi_pods | grep $pod_type | awk '{print$2}') | grep -i image: | \ grep $expected_pod_image | awk -F Image: '{print$2}' | awk '{print$1}'` if [[ $image_in_pod != $expected_pod_image ]]; then echo "$pod_type's image ($image_in_pod) is not the expected image ($expected_pod_image)" From d2a3d02b351812e3888791b7c3a1797663553af2 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 4 Aug 2021 12:37:59 +0300 Subject: [PATCH 42/67] change driver logs artifactes upload --- .github/workflows/operator_ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 45a875b4d..e56f694c5 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -180,5 +180,5 @@ jobs: with: name: Driver logs path: | - /tmp/driver_*.txt + /tmp/*.txt retention-days: 7 From 4963b9b213da57cdd3da6425d48823ffd742764f Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 10 Aug 2021 09:52:16 +0300 Subject: [PATCH 43/67] add get_pod_images_by_type function --- build/ci/github_actions/operator/wait_for_driver_ready.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index 533c4bdb7..31306fc7c 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -13,6 +13,11 @@ get_csi_pods (){ kubectl get pod -A -l csi } +get_pod_images_by_type (){ + pod_type=$1 + kubectl describe pod $(get_csi_pods | grep $pod_type | awk '{print$2}') | grep -i image: +} + wait_for_driver_pod_to_start (){ driver_pod_type=$1 while [ "$(get_csi_pods | grep $driver_pod_type | wc -l)" -eq 0 ]; do @@ -46,8 +51,7 @@ wait_for_driver_deployment_to_finish (){ assert_expected_image_in_pod (){ pod_type=$1 expected_pod_image=$2 - image_in_pod=`kubectl describe pod $(get_csi_pods | grep $pod_type | awk '{print$2}') | grep -i image: | \ - grep $expected_pod_image | awk -F Image: '{print$2}' | awk '{print$1}'` + image_in_pod=`get_pod_images_by_type $pod_type | grep $expected_pod_image | awk -F Image: '{print$2}' | awk '{print$1}'` if [[ $image_in_pod != $expected_pod_image ]]; then echo "$pod_type's image ($image_in_pod) is not the expected image ($expected_pod_image)" exit 1 From 0b6be16cda7c73d68b44bf68007b19801df50f19 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 10 Aug 2021 14:54:37 +0300 Subject: [PATCH 44/67] code review comments --- .github/workflows/operator_ci.yaml | 30 +++++++++---------- .../github_actions/operator/deploy_driver.sh | 1 + .../operator/get_driver_branch_tag.sh | 20 ++++++------- .../operator/save_driver_logs_to_artifacts.sh | 20 +++++++++---- .../operator/wait_for_driver_ready.sh | 28 +++++++++++++---- 5 files changed, 63 insertions(+), 36 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index e56f694c5..491a7221b 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -9,7 +9,7 @@ on: - develop - master jobs: - Prepare_env: + prepare_env: name: "Prepare env" runs-on: ubuntu-latest steps: @@ -41,7 +41,7 @@ jobs: image_branch_tag: "${{ steps.setup_dependencies.outputs.image_branch_tag }}" operator_specific_tag_for_test: "${{ steps.setup_dependencies.outputs.operator_specific_tag_for_test }}" - Unit_testing: + unit_testing: runs-on: ubuntu-latest name: "Unit testing" steps: @@ -52,7 +52,7 @@ jobs: mkdir -p build/_output/reports && chmod 777 build/_output/reports ./build/ci/run_unittests.sh - Run_OLM_validation: + run_olm_validation: runs-on: ubuntu-latest name: "Run OLM validation" steps: @@ -62,16 +62,16 @@ jobs: run: | ./build/ci/run_olm_validation.sh - CSI_Build_and_push_images: + csi_build_and_push_images: name: "CSI Build and push images" runs-on: ubuntu-latest needs: - - Unit_testing - - Run_OLM_validation - - Prepare_env + - unit_testing + - run_olm_validation + - prepare_env strategy: matrix: - image_type: ['nodeagent', 'operator'] + image_type: ['operator'] steps: - name: Checkout uses: actions/checkout@v2 @@ -100,8 +100,8 @@ jobs: platforms: linux/amd64,linux/ppc64le,linux/s390x push: true tags: | - csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.operator_specific_tag_for_test }} - csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.Prepare_env.outputs.image_branch_tag }} + csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.operator_specific_tag_for_test }} + csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.image_branch_tag }} csiblock1/ibm-block-csi-${{ matrix.image_type }}:latest file: build/Dockerfile.${{ matrix.image_type }} cache-from: type=local,src=/tmp/.buildx-${{ matrix.image_type }} @@ -114,19 +114,19 @@ jobs: [[ -G /tmp/.buildx-${{ matrix.image_type }} ]] && rm -rf /tmp/.buildx-${{ matrix.image_type }} mv /tmp/.buildx-new-${{ matrix.image_type }} /tmp/.buildx-${{ matrix.image_type }} outputs: - operator_specific_tag_for_test: "${{ needs.Prepare_env.outputs.operator_specific_tag_for_test }}" + operator_specific_tag_for_test: "${{ needs.prepare_env.outputs.operator_specific_tag_for_test }}" - Create_cluster: + create_cluster: runs-on: ubuntu-latest name: "Create cluster" - needs: CSI_Build_and_push_images + needs: csi_build_and_push_images env: csiblock_dockerhub_password: ${{ secrets.CSIBLOCK_DOCKERHUB_PASSWORD }} controller_repository_for_test: csiblock1/ibm-block-csi-controller node_repository_for_test: csiblock1/ibm-block-csi-node operator_image_repository_for_test: csiblock1/ibm-block-csi-operator - operator_specific_tag_for_test: "${{ needs.CSI_Build_and_push_images.outputs.operator_specific_tag_for_test }}" - operator_image_for_test: "csiblock1/ibm-block-csi-operator:${{ needs.CSI_Build_and_push_images.outputs.operator_specific_tag_for_test }}" + operator_specific_tag_for_test: "${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" + operator_image_for_test: "csiblock1/ibm-block-csi-operator:${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" timeout-minutes: 7 steps: - name: Checkout diff --git a/build/ci/github_actions/operator/deploy_driver.sh b/build/ci/github_actions/operator/deploy_driver.sh index 40295213a..679414650 100755 --- a/build/ci/github_actions/operator/deploy_driver.sh +++ b/build/ci/github_actions/operator/deploy_driver.sh @@ -26,6 +26,7 @@ edit_cr_images (){ edit_operator_yaml_image (){ cd $(dirname $operator_yaml) operator_image_in_branch=`yq eval '(.spec.template.spec.containers[0].image | select(. == "*ibmcom*"))' $(basename $operator_yaml)` + # CSI-3223 sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_yaml) cd - } diff --git a/build/ci/github_actions/operator/get_driver_branch_tag.sh b/build/ci/github_actions/operator/get_driver_branch_tag.sh index a4f4df1f8..dd928feff 100755 --- a/build/ci/github_actions/operator/get_driver_branch_tag.sh +++ b/build/ci/github_actions/operator/get_driver_branch_tag.sh @@ -6,27 +6,27 @@ DOCKER_HUB_USERNAME=csiblock1 DOCKER_HUB_PASSWORD=$csiblock_dockerhub_password triggering_branch=$CI_ACTION_REF_NAME target_image_tags=`build/ci/get_image_tags_from_branch.sh ${triggering_branch}` -target_image_tag=`echo $target_image_tags | awk '{print$2}'` +target_specific_tag=`echo $target_image_tags | awk '{print$2}'` is_private_branch_component_image_exists(){ driver_component=$1 - is_docker_image_has_tag=false - export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $target_image_tag | awk '{print$2}'` + is_image_has_tag=false + export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $target_specific_tag | awk '{print$2}'` for tag in $image_tags do - if [[ "$tag" == "$target_image_tag" ]]; then - is_docker_image_has_tag=true + if [[ "$tag" == "$target_specific_tag" ]]; then + is_image_has_tag=true break fi done - echo $is_docker_image_has_tag + echo $is_image_has_tag } -is_controller_docker_image_has_tag=$(is_private_branch_component_image_exists controller) -is_node_docker_image_has_tag=$(is_private_branch_component_image_exists node) +is_controller_image_has_tag=$(is_private_branch_component_image_exists controller) +is_node_image_has_tag=$(is_private_branch_component_image_exists node) -if [ $is_controller_docker_image_has_tag == "true" ] && [ $is_node_docker_image_has_tag == "true" ]; then - operator_branch=$target_image_tag +if [ $is_controller_image_has_tag == "true" ] && [ $is_node_image_has_tag == "true" ]; then + operator_branch=$target_specific_tag fi echo "::set-output name=image_branch_tag::${operator_branch}" diff --git a/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh b/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh index d12c306c7..ace6e1c99 100755 --- a/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh +++ b/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh @@ -5,13 +5,23 @@ get_all_pods_by_type (){ kubectl get pod -l csi | grep $pod_type | awk '{print$1}' } -save_action_output (){ +run_action_and_save_output (){ pod_type=$1 action=$2 - action_for_artifacte_files=`echo $action | awk '{print$1}'` + action_name=`echo $action | awk '{print$1}'` extra_args=$3 pod_names=$(get_all_pods_by_type $pod_type) - kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_${action_for_artifacte_files}.txt" + kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_${action_name}.txt" +} + +save_logs_of_all_containers_in_pod (){ + pod_type=$1 + pod_names=$(get_all_pods_by_type $pod_type) + containers=`kubectl get pods $pod_names -o jsonpath='{.spec.containers[*].name}'` + for container in $containers + do + run_action_and_save_output $pod_type logs "-c $container" + done } declare -a pod_types=( @@ -22,6 +32,6 @@ declare -a pod_types=( for pod_type in "${pod_types[@]}" do - save_action_output $pod_type logs "-c ibm-block-csi-$pod_type" - save_action_output $pod_type "describe pod" "" + save_logs_of_all_containers_in_pod $pod_type + run_action_and_save_output $pod_type "describe pod" "" done diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index 31306fc7c..77ed72151 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -4,6 +4,7 @@ set +o pipefail driver_is_ready=false actual_driver_running_time_in_seconds=0 minimum_driver_running_time_in_seconds=10 +containers_saffix=ibm-block-csi declare -a driver_pods_types=( "controller" "node" @@ -13,9 +14,17 @@ get_csi_pods (){ kubectl get pod -A -l csi } -get_pod_images_by_type (){ +get_image_pod_by_type (){ pod_type=$1 - kubectl describe pod $(get_csi_pods | grep $pod_type | awk '{print$2}') | grep -i image: + container_to_check=$2 + containers_images=`kubectl get pods $(get_csi_pods | grep $pod_type | awk '{print$2}') -o jsonpath='{range .spec.containers[*]}{.name},{.image} {end}'` + for containers_image in containers_images + do + if [[ "$container" =~ "$container_to_check," ]]; then + echo $container | awk -F , '{print$2}' + break + fi + done } wait_for_driver_pod_to_start (){ @@ -51,7 +60,8 @@ wait_for_driver_deployment_to_finish (){ assert_expected_image_in_pod (){ pod_type=$1 expected_pod_image=$2 - image_in_pod=`get_pod_images_by_type $pod_type | grep $expected_pod_image | awk -F Image: '{print$2}' | awk '{print$1}'` + container_to_check=$containers_saffix-$pod_type + image_in_pod=`get_image_pod_by_type $pod_type $container_to_check` if [[ $image_in_pod != $expected_pod_image ]]; then echo "$pod_type's image ($image_in_pod) is not the expected image ($expected_pod_image)" exit 1 @@ -62,9 +72,15 @@ assert_pods_images (){ expected_node_image=$node_repository_for_test:$driver_images_tag expected_controller_image=$controller_repository_for_test:$driver_images_tag expected_operator_image=$operator_image_repository_for_test:$operator_specific_tag_for_test - assert_expected_image_in_pod "operator" $expected_operator_image - assert_expected_image_in_pod "controller" $expected_controller_image - assert_expected_image_in_pod "node" $expected_node_image + declare -A drivers_components_in_k8s=( + ["operator"]="$expected_operator_image" + ["controller"]="$expected_controller_image" + ["node"]="$expected_node_image" + ) + for driver_component in ${!drivers_components_in_k8s[@]}; do + driver_component_expected_image=${drivers_components_in_k8s[${driver_component}]} + assert_expected_image_in_pod $driver_component $driver_component_expected_image + done } wait_for_driver_deployment_to_start From 8bc6d0342a33eca8ea54125bb01499c927840511 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 10 Aug 2021 16:50:02 +0300 Subject: [PATCH 45/67] fix spelling problem --- build/ci/github_actions/operator/wait_for_driver_ready.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index 77ed72151..1f05f35d7 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -4,7 +4,7 @@ set +o pipefail driver_is_ready=false actual_driver_running_time_in_seconds=0 minimum_driver_running_time_in_seconds=10 -containers_saffix=ibm-block-csi +containers_suffix=ibm-block-csi declare -a driver_pods_types=( "controller" "node" @@ -20,8 +20,8 @@ get_image_pod_by_type (){ containers_images=`kubectl get pods $(get_csi_pods | grep $pod_type | awk '{print$2}') -o jsonpath='{range .spec.containers[*]}{.name},{.image} {end}'` for containers_image in containers_images do - if [[ "$container" =~ "$container_to_check," ]]; then - echo $container | awk -F , '{print$2}' + if [[ "$containers_image" =~ "$container_to_check," ]]; then + echo $containers_image | awk -F , '{print$2}' break fi done @@ -60,7 +60,7 @@ wait_for_driver_deployment_to_finish (){ assert_expected_image_in_pod (){ pod_type=$1 expected_pod_image=$2 - container_to_check=$containers_saffix-$pod_type + container_to_check=$containers_suffix-$pod_type image_in_pod=`get_image_pod_by_type $pod_type $container_to_check` if [[ $image_in_pod != $expected_pod_image ]]; then echo "$pod_type's image ($image_in_pod) is not the expected image ($expected_pod_image)" From 4d9db615055efce03c87321e7f539e2ed285d22a Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 11 Aug 2021 10:38:14 +0300 Subject: [PATCH 46/67] add parameter to wiat for driver --- build/ci/github_actions/operator/wait_for_driver_ready.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index 1f05f35d7..9704a5845 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -18,7 +18,7 @@ get_image_pod_by_type (){ pod_type=$1 container_to_check=$2 containers_images=`kubectl get pods $(get_csi_pods | grep $pod_type | awk '{print$2}') -o jsonpath='{range .spec.containers[*]}{.name},{.image} {end}'` - for containers_image in containers_images + for containers_image in $containers_images do if [[ "$containers_image" =~ "$container_to_check," ]]; then echo $containers_image | awk -F , '{print$2}' From 32eaf69694bc62518d0b4fe59329c2d9c46e79cb Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 16 Aug 2021 11:57:46 +0300 Subject: [PATCH 47/67] change get driver branch script name --- .github/workflows/operator_ci.yaml | 10 +++++----- .../github_actions/operator/deploy_driver.sh | 5 ++--- ...sh => get_driver_images_tag_from_branch.sh} | 18 +++++++++--------- .../operator/save_driver_logs_to_artifacts.sh | 8 ++++---- .../operator/wait_for_driver_ready.sh | 16 ++++++++-------- 5 files changed, 28 insertions(+), 29 deletions(-) rename build/ci/github_actions/operator/{get_driver_branch_tag.sh => get_driver_images_tag_from_branch.sh} (55%) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 491a7221b..6a4bb70c3 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -146,9 +146,9 @@ jobs: path: ${{ env.pythonLocation }} key: ${{ env.pythonLocation }}-${{ hashFiles('dev-requirements.txt') }} - name: Get driver branch - id: driver_branch + id: driver_images_tag_from_branch run: | - build/ci/github_actions/operator/get_driver_branch_tag.sh + build/ci/github_actions/operator/get_driver_images_tag_from_branch.sh env: github_token: ${{ secrets.CSIBLOCK_GITHUB_TOKEN }} - name: Create k8s Kind Cluster @@ -162,14 +162,14 @@ jobs: run: | build/ci/github_actions/operator/deploy_driver.sh env: - driver_images_tag: "${{ steps.driver_branch.outputs.image_branch_tag }}" + driver_images_tag: "${{ steps.driver_images_tag_from_branch.outputs.image_branch_tag }}" operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" - name: Wait for csi ibm block driver to be ready run: | build/ci/github_actions/operator/wait_for_driver_ready.sh env: - driver_images_tag: "${{ steps.driver_branch.outputs.image_branch_tag }}" + driver_images_tag: "${{ steps.driver_images_tag_from_branch.outputs.image_branch_tag }}" - name: Save driver pods logs to artifacts if: always() run: | @@ -178,7 +178,7 @@ jobs: if: always() uses: actions/upload-artifact@v2 with: - name: Driver logs + name: driver_logs path: | /tmp/*.txt retention-days: 7 diff --git a/build/ci/github_actions/operator/deploy_driver.sh b/build/ci/github_actions/operator/deploy_driver.sh index 679414650..c4ce01702 100755 --- a/build/ci/github_actions/operator/deploy_driver.sh +++ b/build/ci/github_actions/operator/deploy_driver.sh @@ -25,9 +25,8 @@ edit_cr_images (){ edit_operator_yaml_image (){ cd $(dirname $operator_yaml) - operator_image_in_branch=`yq eval '(.spec.template.spec.containers[0].image | select(. == "*ibmcom*"))' $(basename $operator_yaml)` - # CSI-3223 - sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_yaml) + operator_image_in_branch=`yq eval '(. | select(.kind == "Deployment") | .spec.template.spec.containers[0].image)' $(basename $operator_yaml)` + sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_yaml) ## TODO: CSI-3223 need to edit the operator image only in a specifics places cd - } diff --git a/build/ci/github_actions/operator/get_driver_branch_tag.sh b/build/ci/github_actions/operator/get_driver_images_tag_from_branch.sh similarity index 55% rename from build/ci/github_actions/operator/get_driver_branch_tag.sh rename to build/ci/github_actions/operator/get_driver_images_tag_from_branch.sh index dd928feff..d655f33ac 100755 --- a/build/ci/github_actions/operator/get_driver_branch_tag.sh +++ b/build/ci/github_actions/operator/get_driver_images_tag_from_branch.sh @@ -1,7 +1,7 @@ #!/bin/bash -xe set +o pipefail -operator_branch=develop +driver_images_tag_from_branch=develop DOCKER_HUB_USERNAME=csiblock1 DOCKER_HUB_PASSWORD=$csiblock_dockerhub_password triggering_branch=$CI_ACTION_REF_NAME @@ -10,23 +10,23 @@ target_specific_tag=`echo $target_image_tags | awk '{print$2}'` is_private_branch_component_image_exists(){ driver_component=$1 - is_image_has_tag=false + is_image_tag_exists=false export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $target_specific_tag | awk '{print$2}'` for tag in $image_tags do if [[ "$tag" == "$target_specific_tag" ]]; then - is_image_has_tag=true + is_image_tag_exists=true break fi done - echo $is_image_has_tag + echo $is_image_tag_exists } -is_controller_image_has_tag=$(is_private_branch_component_image_exists controller) -is_node_image_has_tag=$(is_private_branch_component_image_exists node) +is_controller_image_tag_exists=$(is_private_branch_component_image_exists controller) +is_node_image_tag_exists=$(is_private_branch_component_image_exists node) -if [ $is_controller_image_has_tag == "true" ] && [ $is_node_image_has_tag == "true" ]; then - operator_branch=$target_specific_tag +if [ $is_controller_image_tag_exists == "true" ] && [ $is_node_image_tag_exists == "true" ]; then + driver_images_tag_from_branch=$target_specific_tag fi -echo "::set-output name=image_branch_tag::${operator_branch}" +echo "::set-output name=image_branch_tag::${driver_images_tag_from_branch}" diff --git a/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh b/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh index ace6e1c99..7d362e1a7 100755 --- a/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh +++ b/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh @@ -6,12 +6,12 @@ get_all_pods_by_type (){ } run_action_and_save_output (){ - pod_type=$1 + pod_names=$1 action=$2 action_name=`echo $action | awk '{print$1}'` extra_args=$3 - pod_names=$(get_all_pods_by_type $pod_type) - kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_${action_name}.txt" + container_name=$4 + kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_container_${container_name}_${action_name}.txt" } save_logs_of_all_containers_in_pod (){ @@ -20,7 +20,7 @@ save_logs_of_all_containers_in_pod (){ containers=`kubectl get pods $pod_names -o jsonpath='{.spec.containers[*].name}'` for container in $containers do - run_action_and_save_output $pod_type logs "-c $container" + run_action_and_save_output $pod_names logs "-c $container" $container done } diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/operator/wait_for_driver_ready.sh index 9704a5845..d4026c1de 100755 --- a/build/ci/github_actions/operator/wait_for_driver_ready.sh +++ b/build/ci/github_actions/operator/wait_for_driver_ready.sh @@ -1,10 +1,10 @@ #!/bin/bash -xe set +o pipefail -driver_is_ready=false +is_driver_ready=false actual_driver_running_time_in_seconds=0 minimum_driver_running_time_in_seconds=10 -containers_suffix=ibm-block-csi +containers_prefix=ibm-block-csi declare -a driver_pods_types=( "controller" "node" @@ -16,11 +16,11 @@ get_csi_pods (){ get_image_pod_by_type (){ pod_type=$1 - container_to_check=$2 + component_to_check=$2 containers_images=`kubectl get pods $(get_csi_pods | grep $pod_type | awk '{print$2}') -o jsonpath='{range .spec.containers[*]}{.name},{.image} {end}'` for containers_image in $containers_images do - if [[ "$containers_image" =~ "$container_to_check," ]]; then + if [[ "$containers_image" =~ "$component_to_check," ]]; then echo $containers_image | awk -F , '{print$2}' break fi @@ -43,11 +43,11 @@ wait_for_driver_deployment_to_start (){ } wait_for_driver_deployment_to_finish (){ - while [ $driver_is_ready == "false" ]; do + while [ $is_driver_ready == "false" ]; do if [ "$(get_csi_pods | grep -iv running | grep -iv name | wc -l)" -eq 0 ]; then ((++actual_driver_running_time_in_seconds)) if [ $actual_driver_running_time_in_seconds -eq $minimum_driver_running_time_in_seconds ]; then - driver_is_ready=true + is_driver_ready=true fi else actual_driver_running_time_in_seconds=0 @@ -60,8 +60,8 @@ wait_for_driver_deployment_to_finish (){ assert_expected_image_in_pod (){ pod_type=$1 expected_pod_image=$2 - container_to_check=$containers_suffix-$pod_type - image_in_pod=`get_image_pod_by_type $pod_type $container_to_check` + component_to_check=$containers_prefix-$pod_type + image_in_pod=`get_image_pod_by_type $pod_type $component_to_check` if [[ $image_in_pod != $expected_pod_image ]]; then echo "$pod_type's image ($image_in_pod) is not the expected image ($expected_pod_image)" exit 1 From 55f17ea7d780f1b721a4a5dba446f309a77a32be Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 16 Aug 2021 16:17:33 +0300 Subject: [PATCH 48/67] fix save logs with describe --- .../operator/save_driver_logs_to_artifacts.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh b/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh index 7d362e1a7..6a70370c7 100755 --- a/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh +++ b/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh @@ -6,11 +6,12 @@ get_all_pods_by_type (){ } run_action_and_save_output (){ - pod_names=$1 + pod_type=$1 action=$2 action_name=`echo $action | awk '{print$1}'` extra_args=$3 container_name=$4 + pod_names=$(get_all_pods_by_type $pod_type) kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_container_${container_name}_${action_name}.txt" } @@ -20,7 +21,7 @@ save_logs_of_all_containers_in_pod (){ containers=`kubectl get pods $pod_names -o jsonpath='{.spec.containers[*].name}'` for container in $containers do - run_action_and_save_output $pod_names logs "-c $container" $container + run_action_and_save_output $pod_type logs "-c $container" $container done } @@ -33,5 +34,5 @@ declare -a pod_types=( for pod_type in "${pod_types[@]}" do save_logs_of_all_containers_in_pod $pod_type - run_action_and_save_output $pod_type "describe pod" "" + run_action_and_save_output $pod_type "describe pod" "" $pod_type done From 46ecb717b049da3c53723e5ac2962d6418b8c5f0 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 17 Aug 2021 10:56:56 +0300 Subject: [PATCH 49/67] change github_actions/operator directory to driver --- .github/workflows/operator_ci.yaml | 16 ++++++++-------- .../{operator => driver}/deploy_driver.sh | 2 +- .../get_driver_images_tag_from_branch.sh | 0 .../save_driver_logs_to_artifacts.sh | 0 .../wait_for_driver_ready.sh | 0 .../{operator => }/wait_for_k8s_ready.sh | 0 6 files changed, 9 insertions(+), 9 deletions(-) rename build/ci/github_actions/{operator => driver}/deploy_driver.sh (92%) rename build/ci/github_actions/{operator => driver}/get_driver_images_tag_from_branch.sh (100%) rename build/ci/github_actions/{operator => driver}/save_driver_logs_to_artifacts.sh (100%) rename build/ci/github_actions/{operator => driver}/wait_for_driver_ready.sh (100%) rename build/ci/github_actions/{operator => }/wait_for_k8s_ready.sh (100%) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 6a4bb70c3..ba973eba0 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -33,7 +33,7 @@ jobs: - name: Save dependencies files uses: actions/upload-artifact@v2 with: - name: ci-dependencies + name: ci_dependencies path: | /home/runner/.bash_profile retention-days: 1 @@ -135,7 +135,7 @@ jobs: - name: Retrieve ci dependencies uses: actions/download-artifact@v2 with: - name: ci-dependencies + name: ci_dependencies path: /home/runner - name: Set up Python uses: actions/setup-python@v2 @@ -145,10 +145,10 @@ jobs: with: path: ${{ env.pythonLocation }} key: ${{ env.pythonLocation }}-${{ hashFiles('dev-requirements.txt') }} - - name: Get driver branch + - name: Get driver images tag from branch id: driver_images_tag_from_branch run: | - build/ci/github_actions/operator/get_driver_images_tag_from_branch.sh + build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh env: github_token: ${{ secrets.CSIBLOCK_GITHUB_TOKEN }} - name: Create k8s Kind Cluster @@ -157,23 +157,23 @@ jobs: version: v0.11.1 - name: Wait for k8s cluster to be ready run: | - build/ci/github_actions/operator/wait_for_k8s_ready.sh + build/ci/github_actions/wait_for_k8s_ready.sh - name: Deploy ibm block csi driver run: | - build/ci/github_actions/operator/deploy_driver.sh + build/ci/github_actions/driver/deploy_driver.sh env: driver_images_tag: "${{ steps.driver_images_tag_from_branch.outputs.image_branch_tag }}" operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" - name: Wait for csi ibm block driver to be ready run: | - build/ci/github_actions/operator/wait_for_driver_ready.sh + build/ci/github_actions/driver/wait_for_driver_ready.sh env: driver_images_tag: "${{ steps.driver_images_tag_from_branch.outputs.image_branch_tag }}" - name: Save driver pods logs to artifacts if: always() run: | - build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh + build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh - name: Upload driver pods logs if: always() uses: actions/upload-artifact@v2 diff --git a/build/ci/github_actions/operator/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh similarity index 92% rename from build/ci/github_actions/operator/deploy_driver.sh rename to build/ci/github_actions/driver/deploy_driver.sh index c4ce01702..ba567f39a 100755 --- a/build/ci/github_actions/operator/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -26,7 +26,7 @@ edit_cr_images (){ edit_operator_yaml_image (){ cd $(dirname $operator_yaml) operator_image_in_branch=`yq eval '(. | select(.kind == "Deployment") | .spec.template.spec.containers[0].image)' $(basename $operator_yaml)` - sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_yaml) ## TODO: CSI-3223 need to edit the operator image only in a specifics places + sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_yaml) ## TODO: CSI-3223 avoid using sed cd - } diff --git a/build/ci/github_actions/operator/get_driver_images_tag_from_branch.sh b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh similarity index 100% rename from build/ci/github_actions/operator/get_driver_images_tag_from_branch.sh rename to build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh diff --git a/build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh b/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh similarity index 100% rename from build/ci/github_actions/operator/save_driver_logs_to_artifacts.sh rename to build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh diff --git a/build/ci/github_actions/operator/wait_for_driver_ready.sh b/build/ci/github_actions/driver/wait_for_driver_ready.sh similarity index 100% rename from build/ci/github_actions/operator/wait_for_driver_ready.sh rename to build/ci/github_actions/driver/wait_for_driver_ready.sh diff --git a/build/ci/github_actions/operator/wait_for_k8s_ready.sh b/build/ci/github_actions/wait_for_k8s_ready.sh similarity index 100% rename from build/ci/github_actions/operator/wait_for_k8s_ready.sh rename to build/ci/github_actions/wait_for_k8s_ready.sh From ea0e064e7d25d5a81f0ce709371ab8e1186026d9 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 17 Aug 2021 11:00:31 +0300 Subject: [PATCH 50/67] add action_name parameter to run_action_and_save_output --- .../driver/save_driver_logs_to_artifacts.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh b/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh index 6a70370c7..370cacdda 100755 --- a/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh +++ b/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh @@ -8,9 +8,9 @@ get_all_pods_by_type (){ run_action_and_save_output (){ pod_type=$1 action=$2 - action_name=`echo $action | awk '{print$1}'` - extra_args=$3 - container_name=$4 + action_name=$3 + extra_args=$4 + container_name=$5 pod_names=$(get_all_pods_by_type $pod_type) kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_container_${container_name}_${action_name}.txt" } @@ -21,7 +21,7 @@ save_logs_of_all_containers_in_pod (){ containers=`kubectl get pods $pod_names -o jsonpath='{.spec.containers[*].name}'` for container in $containers do - run_action_and_save_output $pod_type logs "-c $container" $container + run_action_and_save_output $pod_type logs "log" "-c $container" $container done } @@ -34,5 +34,5 @@ declare -a pod_types=( for pod_type in "${pod_types[@]}" do save_logs_of_all_containers_in_pod $pod_type - run_action_and_save_output $pod_type "describe pod" "" $pod_type + run_action_and_save_output $pod_type "describe pod" "describe" "" $pod_type done From d51d2acf7702b751a0465fedb00b9f7a18c29d9a Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Wed, 18 Aug 2021 09:40:37 +0300 Subject: [PATCH 51/67] add csiblock1 secret --- .github/workflows/operator_ci.yaml | 17 +++++++++-------- .../driver/get_driver_images_tag_from_branch.sh | 4 ++-- .../driver/save_driver_logs_to_artifacts.sh | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index ba973eba0..5d6f97129 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -84,7 +84,7 @@ jobs: - name: Login to DockerHub uses: docker/login-action@v1 with: - username: 'csiblock1' + username: '${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}' password: '${{ secrets.CSIBLOCK_DOCKERHUB_PASSWORD }}' - name: Cache Docker layers uses: actions/cache@v2 @@ -100,9 +100,9 @@ jobs: platforms: linux/amd64,linux/ppc64le,linux/s390x push: true tags: | - csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.operator_specific_tag_for_test }} - csiblock1/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.image_branch_tag }} - csiblock1/ibm-block-csi-${{ matrix.image_type }}:latest + ${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.operator_specific_tag_for_test }} + ${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.image_branch_tag }} + ${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:latest file: build/Dockerfile.${{ matrix.image_type }} cache-from: type=local,src=/tmp/.buildx-${{ matrix.image_type }} cache-to: type=local,dest=/tmp/.buildx-new-${{ matrix.image_type }} @@ -122,11 +122,12 @@ jobs: needs: csi_build_and_push_images env: csiblock_dockerhub_password: ${{ secrets.CSIBLOCK_DOCKERHUB_PASSWORD }} - controller_repository_for_test: csiblock1/ibm-block-csi-controller - node_repository_for_test: csiblock1/ibm-block-csi-node - operator_image_repository_for_test: csiblock1/ibm-block-csi-operator + csiblock_dockerhub_username: ${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }} + controller_repository_for_test: '${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-controller' + node_repository_for_test: '${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-node' + operator_image_repository_for_test: '${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-operator' operator_specific_tag_for_test: "${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" - operator_image_for_test: "csiblock1/ibm-block-csi-operator:${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" + operator_image_for_test: "${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-operator:${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" timeout-minutes: 7 steps: - name: Checkout diff --git a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh index d655f33ac..0fdb2bfe8 100755 --- a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh +++ b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh @@ -2,7 +2,7 @@ set +o pipefail driver_images_tag_from_branch=develop -DOCKER_HUB_USERNAME=csiblock1 +DOCKER_HUB_USERNAME=$csiblock_dockerhub_username DOCKER_HUB_PASSWORD=$csiblock_dockerhub_password triggering_branch=$CI_ACTION_REF_NAME target_image_tags=`build/ci/get_image_tags_from_branch.sh ${triggering_branch}` @@ -11,7 +11,7 @@ target_specific_tag=`echo $target_image_tags | awk '{print$2}'` is_private_branch_component_image_exists(){ driver_component=$1 is_image_tag_exists=false - export image_tags=`docker-hub tags --orgname csiblock1 --reponame ibm-block-csi-$driver_component --all-pages | grep $target_specific_tag | awk '{print$2}'` + export image_tags=`docker-hub tags --orgname $csiblock_dockerhub_username --reponame ibm-block-csi-$driver_component --all-pages | grep $target_specific_tag | awk '{print$2}'` for tag in $image_tags do if [[ "$tag" == "$target_specific_tag" ]]; then diff --git a/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh b/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh index 370cacdda..183657635 100755 --- a/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh +++ b/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh @@ -12,7 +12,7 @@ run_action_and_save_output (){ extra_args=$4 container_name=$5 pod_names=$(get_all_pods_by_type $pod_type) - kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_container_${container_name}_${action_name}.txt" + kubectl $action $pod_names $extra_args > "/tmp/${pod_names}_${container_name}_${action_name}.txt" } save_logs_of_all_containers_in_pod (){ From 773eada2d3347f333b33d682a9af30a518985003 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Thu, 19 Aug 2021 11:23:30 +0300 Subject: [PATCH 52/67] add deploy operator --- .github/workflows/operator_ci.yaml | 32 +++++++++---------- build/ci/build_push_image.sh | 2 +- build/ci/get_image_tags_from_branch.sh | 3 ++ .../ci/github_actions/driver/deploy_driver.sh | 18 ++++------- .../github_actions/driver/deploy_operator.sh | 16 ++++++++++ .../get_driver_images_tag_from_branch.sh | 8 ++--- ..._ready.sh => wait_for_pods_ready_utils.sh} | 16 +++------- .../github_actions/setup_ci_dependencies.sh | 3 +- 8 files changed, 50 insertions(+), 48 deletions(-) create mode 100644 build/ci/github_actions/driver/deploy_operator.sh rename build/ci/github_actions/driver/{wait_for_driver_ready.sh => wait_for_pods_ready_utils.sh} (81%) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 5d6f97129..0445c8ca6 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -84,8 +84,8 @@ jobs: - name: Login to DockerHub uses: docker/login-action@v1 with: - username: '${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}' - password: '${{ secrets.CSIBLOCK_DOCKERHUB_PASSWORD }}' + username: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}' + password: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_PASSWORD }}' - name: Cache Docker layers uses: actions/cache@v2 with: @@ -100,9 +100,8 @@ jobs: platforms: linux/amd64,linux/ppc64le,linux/s390x push: true tags: | - ${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.operator_specific_tag_for_test }} - ${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.image_branch_tag }} - ${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:latest + ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.operator_specific_tag_for_test }} + ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.image_branch_tag }} file: build/Dockerfile.${{ matrix.image_type }} cache-from: type=local,src=/tmp/.buildx-${{ matrix.image_type }} cache-to: type=local,dest=/tmp/.buildx-new-${{ matrix.image_type }} @@ -121,13 +120,13 @@ jobs: name: "Create cluster" needs: csi_build_and_push_images env: - csiblock_dockerhub_password: ${{ secrets.CSIBLOCK_DOCKERHUB_PASSWORD }} - csiblock_dockerhub_username: ${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }} - controller_repository_for_test: '${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-controller' - node_repository_for_test: '${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-node' - operator_image_repository_for_test: '${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-operator' + csiblock_docker_registry_password: ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_PASSWORD }} + csiblock_docker_registry_username: ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }} + controller_repository_for_test: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-controller' + node_repository_for_test: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-node' + operator_image_repository_for_test: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-operator' operator_specific_tag_for_test: "${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" - operator_image_for_test: "${{ secrets.CSIBLOCK_DOCKERHUB_USERNAME }}/ibm-block-csi-operator:${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" + operator_image_for_test: "${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-operator:${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" timeout-minutes: 7 steps: - name: Checkout @@ -159,18 +158,17 @@ jobs: - name: Wait for k8s cluster to be ready run: | build/ci/github_actions/wait_for_k8s_ready.sh - - name: Deploy ibm block csi driver + - name: Deploy ibm block csi operator run: | - build/ci/github_actions/driver/deploy_driver.sh + build/ci/github_actions/driver/deploy_operator.sh env: - driver_images_tag: "${{ steps.driver_images_tag_from_branch.outputs.image_branch_tag }}" operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" - cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" - - name: Wait for csi ibm block driver to be ready + - name: Deploy ibm block csi driver run: | - build/ci/github_actions/driver/wait_for_driver_ready.sh + build/ci/github_actions/driver/deploy_driver.sh env: driver_images_tag: "${{ steps.driver_images_tag_from_branch.outputs.image_branch_tag }}" + cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" - name: Save driver pods logs to artifacts if: always() run: | diff --git a/build/ci/build_push_image.sh b/build/ci/build_push_image.sh index 242020bc4..c23432745 100755 --- a/build/ci/build_push_image.sh +++ b/build/ci/build_push_image.sh @@ -9,7 +9,7 @@ done NODE_IMAGE=ibm-node-agent # Prepare specific tag for the image -tags=`build/ci/get_image_tags_from_branch.sh ${GIT_BRANCH} ${IMAGE_VERSION} ${BUILD_NUMBER}` +tags=`build/ci/get_image_tags_from_branch.sh ${GIT_BRANCH} ${IMAGE_VERSION} ${BUILD_NUMBER} ${GIT_COMMIT:0:7}` specific_tag=`echo $tags | awk '{print$1}'` # Set latest tag only if its from develop branch or master and prepare tags diff --git a/build/ci/get_image_tags_from_branch.sh b/build/ci/get_image_tags_from_branch.sh index 7eb8a4d6d..8bcb3d5c2 100755 --- a/build/ci/get_image_tags_from_branch.sh +++ b/build/ci/get_image_tags_from_branch.sh @@ -3,6 +3,9 @@ GIT_BRANCH=$1 IMAGE_VERSION=$2 BUILD_NUMBER=$3 COMMIT_HASH=$4 +if [ $COMMIT_HASH != "" ]; then + COMMIT_HASH=${COMMIT_HASH}_ +fi branch_tag=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${COMMIT_HASH}${branch_tag}" echo $specific_tag diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index ba567f39a..7fa10f7f1 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -1,6 +1,9 @@ #!/bin/bash -xel set +o pipefail +expected_node_image=$node_repository_for_test:$driver_images_tag +expected_controller_image=$controller_repository_for_test:$driver_images_tag + install_worker_prerequisites() { kind_node_name=`docker ps --format "{{.Names}}"` docker exec -i $kind_node_name apt-get update @@ -23,20 +26,11 @@ edit_cr_images (){ cd - } -edit_operator_yaml_image (){ - cd $(dirname $operator_yaml) - operator_image_in_branch=`yq eval '(. | select(.kind == "Deployment") | .spec.template.spec.containers[0].image)' $(basename $operator_yaml)` - sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_yaml) ## TODO: CSI-3223 avoid using sed -cd - -} - install_worker_prerequisites edit_cr_images -edit_operator_yaml_image - -cat $operator_yaml | grep image: cat $cr_file | grep repository: cat $cr_file | grep tag: - -kubectl apply -f $operator_yaml kubectl apply -f $cr_file +. wait_for_pods_ready_utils.sh && wait_for_driver_deployment_to_start +. wait_for_pods_ready_utils.sh && assert_pods_images $expected_node_image $expected_controller_image +. wait_for_pods_ready_utils.sh && wait_for_driver_deployment_to_finish diff --git a/build/ci/github_actions/driver/deploy_operator.sh b/build/ci/github_actions/driver/deploy_operator.sh new file mode 100644 index 000000000..bbc172ef6 --- /dev/null +++ b/build/ci/github_actions/driver/deploy_operator.sh @@ -0,0 +1,16 @@ +#!/bin/bash -xel +set +o pipefail + +edit_operator_yaml_image (){ + cd $(dirname $operator_yaml) + operator_image_in_branch=`yq eval '(. | select(.kind == "Deployment") | .spec.template.spec.containers[0].image)' $(basename $operator_yaml)` + sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_yaml) ## TODO: CSI-3223 avoid using sed +cd - +} + +edit_operator_yaml_image +cat $operator_yaml | grep image: +kubectl apply -f $operator_yaml +. wait_for_pods_ready_utils.sh && wait_for_pod_to_start "operator" +. wait_for_pods_ready_utils.sh && assert_expected_image_in_pod "operator" $operator_image_for_test +. wait_for_pods_ready_utils.sh && wait_for_driver_deployment_to_finish \ No newline at end of file diff --git a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh index 0fdb2bfe8..a2f902f05 100755 --- a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh +++ b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh @@ -1,9 +1,9 @@ #!/bin/bash -xe set +o pipefail -driver_images_tag_from_branch=develop -DOCKER_HUB_USERNAME=$csiblock_dockerhub_username -DOCKER_HUB_PASSWORD=$csiblock_dockerhub_password +driver_images_tag_from_branch=latest +DOCKER_HUB_USERNAME=$csiblock_docker_registry_username +DOCKER_HUB_PASSWORD=$csiblock_docker_registry_password triggering_branch=$CI_ACTION_REF_NAME target_image_tags=`build/ci/get_image_tags_from_branch.sh ${triggering_branch}` target_specific_tag=`echo $target_image_tags | awk '{print$2}'` @@ -11,7 +11,7 @@ target_specific_tag=`echo $target_image_tags | awk '{print$2}'` is_private_branch_component_image_exists(){ driver_component=$1 is_image_tag_exists=false - export image_tags=`docker-hub tags --orgname $csiblock_dockerhub_username --reponame ibm-block-csi-$driver_component --all-pages | grep $target_specific_tag | awk '{print$2}'` + export image_tags=`docker-hub tags --orgname $csiblock_docker_registry_username --reponame ibm-block-csi-$driver_component --all-pages | grep $target_specific_tag | awk '{print$2}'` for tag in $image_tags do if [[ "$tag" == "$target_specific_tag" ]]; then diff --git a/build/ci/github_actions/driver/wait_for_driver_ready.sh b/build/ci/github_actions/driver/wait_for_pods_ready_utils.sh similarity index 81% rename from build/ci/github_actions/driver/wait_for_driver_ready.sh rename to build/ci/github_actions/driver/wait_for_pods_ready_utils.sh index d4026c1de..86dfb739a 100755 --- a/build/ci/github_actions/driver/wait_for_driver_ready.sh +++ b/build/ci/github_actions/driver/wait_for_pods_ready_utils.sh @@ -27,7 +27,7 @@ get_image_pod_by_type (){ done } -wait_for_driver_pod_to_start (){ +wait_for_pod_to_start (){ driver_pod_type=$1 while [ "$(get_csi_pods | grep $driver_pod_type | wc -l)" -eq 0 ]; do echo "The $driver_pod_type is not deployed" @@ -38,7 +38,7 @@ wait_for_driver_pod_to_start (){ wait_for_driver_deployment_to_start (){ for driver_pods_type in "${driver_pods_types[@]}" do - wait_for_driver_pod_to_start $driver_pods_type + wait_for_pod_to_start $driver_pods_type done } @@ -69,11 +69,9 @@ assert_expected_image_in_pod (){ } assert_pods_images (){ - expected_node_image=$node_repository_for_test:$driver_images_tag - expected_controller_image=$controller_repository_for_test:$driver_images_tag - expected_operator_image=$operator_image_repository_for_test:$operator_specific_tag_for_test + expected_node_image=$1 + expected_controller_image=$2 declare -A drivers_components_in_k8s=( - ["operator"]="$expected_operator_image" ["controller"]="$expected_controller_image" ["node"]="$expected_node_image" ) @@ -82,9 +80,3 @@ assert_pods_images (){ assert_expected_image_in_pod $driver_component $driver_component_expected_image done } - -wait_for_driver_deployment_to_start -wait_for_driver_deployment_to_finish -assert_pods_images -echo Driver is running -get_csi_pods diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 845b72d50..9e4551413 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -17,8 +17,7 @@ EOL # CSI-3173 - move image_version value into a common config file image_version=`cat version/version.go | grep -i driverversion | awk -F = '{print $2}'` image_version=`echo ${image_version//\"}` -GITHUB_SHA=${GITHUB_SHA:0:7}_ -operator_image_tags_for_test=`build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA}` +operator_image_tags_for_test=`build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA:0:7}` image_branch_tag=`echo $operator_image_tags_for_test | awk '{print$2}'` operator_specific_tag_for_test=`echo $operator_image_tags_for_test | awk '{print$1}'` From 55bfc12bd451f34dae865c70b44bba1d7ddbc3a0 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Sun, 22 Aug 2021 10:36:54 +0300 Subject: [PATCH 53/67] move deploy_operator to operator dir --- .github/workflows/operator_ci.yaml | 2 +- .../wait_for_pods_ready_utils.sh => deploy_object.sh} | 0 build/ci/github_actions/driver/deploy_driver.sh | 6 +++--- .../{driver => operator}/deploy_operator.sh | 6 +++--- build/ci/github_actions/wait_for_k8s_ready.sh | 8 ++++---- 5 files changed, 11 insertions(+), 11 deletions(-) rename build/ci/github_actions/{driver/wait_for_pods_ready_utils.sh => deploy_object.sh} (100%) rename build/ci/github_actions/{driver => operator}/deploy_operator.sh (66%) mode change 100644 => 100755 diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 0445c8ca6..471cb8aad 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -160,7 +160,7 @@ jobs: build/ci/github_actions/wait_for_k8s_ready.sh - name: Deploy ibm block csi operator run: | - build/ci/github_actions/driver/deploy_operator.sh + build/ci/github_actions/operator/deploy_operator.sh env: operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" - name: Deploy ibm block csi driver diff --git a/build/ci/github_actions/driver/wait_for_pods_ready_utils.sh b/build/ci/github_actions/deploy_object.sh similarity index 100% rename from build/ci/github_actions/driver/wait_for_pods_ready_utils.sh rename to build/ci/github_actions/deploy_object.sh diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index 7fa10f7f1..d5d4cb514 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -31,6 +31,6 @@ edit_cr_images cat $cr_file | grep repository: cat $cr_file | grep tag: kubectl apply -f $cr_file -. wait_for_pods_ready_utils.sh && wait_for_driver_deployment_to_start -. wait_for_pods_ready_utils.sh && assert_pods_images $expected_node_image $expected_controller_image -. wait_for_pods_ready_utils.sh && wait_for_driver_deployment_to_finish +. ../deploy_object.sh && wait_for_driver_deployment_to_start +. ../deploy_object.sh && assert_pods_images $expected_node_image $expected_controller_image +. ../deploy_object.sh && wait_for_driver_deployment_to_finish diff --git a/build/ci/github_actions/driver/deploy_operator.sh b/build/ci/github_actions/operator/deploy_operator.sh old mode 100644 new mode 100755 similarity index 66% rename from build/ci/github_actions/driver/deploy_operator.sh rename to build/ci/github_actions/operator/deploy_operator.sh index bbc172ef6..806b1a0cd --- a/build/ci/github_actions/driver/deploy_operator.sh +++ b/build/ci/github_actions/operator/deploy_operator.sh @@ -11,6 +11,6 @@ cd - edit_operator_yaml_image cat $operator_yaml | grep image: kubectl apply -f $operator_yaml -. wait_for_pods_ready_utils.sh && wait_for_pod_to_start "operator" -. wait_for_pods_ready_utils.sh && assert_expected_image_in_pod "operator" $operator_image_for_test -. wait_for_pods_ready_utils.sh && wait_for_driver_deployment_to_finish \ No newline at end of file +. ../deploy_object.sh && wait_for_pod_to_start "operator" +. ../deploy_object.sh && assert_expected_image_in_pod "operator" $operator_image_for_test +. ../deploy_object.sh && wait_for_driver_deployment_to_finish diff --git a/build/ci/github_actions/wait_for_k8s_ready.sh b/build/ci/github_actions/wait_for_k8s_ready.sh index 542fdabed..6b5dacd02 100755 --- a/build/ci/github_actions/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/wait_for_k8s_ready.sh @@ -17,15 +17,15 @@ are_pods_ready (){ is_kubernetes_cluster_ready (){ pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` - all_containers_are_running=false + are_all_containers_running=false are_all_pods_ready=$(are_pods_ready $pods) if [ $are_all_pods_ready == "false" ]; then - all_containers_are_running=true + are_all_containers_running=true fi - echo $all_containers_are_running + echo $are_all_containers_running } while [[ `is_kubernetes_cluster_ready` == "false" ]]; do - kubectl get pods -A + kubectl get pods -A done From 512c38c79458a5d39f6ad1671823d2af923c063d Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Sun, 22 Aug 2021 14:35:32 +0300 Subject: [PATCH 54/67] change deploy_objects path --- build/ci/get_image_tags_from_branch.sh | 5 +---- build/ci/github_actions/driver/deploy_driver.sh | 6 +++--- build/ci/github_actions/operator/deploy_operator.sh | 6 +++--- build/ci/github_actions/wait_for_k8s_ready.sh | 12 +++++------- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/build/ci/get_image_tags_from_branch.sh b/build/ci/get_image_tags_from_branch.sh index 8bcb3d5c2..77d67dbc7 100755 --- a/build/ci/get_image_tags_from_branch.sh +++ b/build/ci/get_image_tags_from_branch.sh @@ -3,10 +3,7 @@ GIT_BRANCH=$1 IMAGE_VERSION=$2 BUILD_NUMBER=$3 COMMIT_HASH=$4 -if [ $COMMIT_HASH != "" ]; then - COMMIT_HASH=${COMMIT_HASH}_ -fi branch_tag=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version -specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${COMMIT_HASH}${branch_tag}" +specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${COMMIT_HASH}_${branch_tag}" echo $specific_tag echo $branch_tag diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index d5d4cb514..abc56e821 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -31,6 +31,6 @@ edit_cr_images cat $cr_file | grep repository: cat $cr_file | grep tag: kubectl apply -f $cr_file -. ../deploy_object.sh && wait_for_driver_deployment_to_start -. ../deploy_object.sh && assert_pods_images $expected_node_image $expected_controller_image -. ../deploy_object.sh && wait_for_driver_deployment_to_finish +. build/ci/github_actions/deploy_object.sh && wait_for_driver_deployment_to_start +. build/ci/github_actions/deploy_object.sh && assert_pods_images $expected_node_image $expected_controller_image +. build/ci/github_actions/deploy_object.sh && wait_for_driver_deployment_to_finish diff --git a/build/ci/github_actions/operator/deploy_operator.sh b/build/ci/github_actions/operator/deploy_operator.sh index 806b1a0cd..31c7ccd76 100755 --- a/build/ci/github_actions/operator/deploy_operator.sh +++ b/build/ci/github_actions/operator/deploy_operator.sh @@ -11,6 +11,6 @@ cd - edit_operator_yaml_image cat $operator_yaml | grep image: kubectl apply -f $operator_yaml -. ../deploy_object.sh && wait_for_pod_to_start "operator" -. ../deploy_object.sh && assert_expected_image_in_pod "operator" $operator_image_for_test -. ../deploy_object.sh && wait_for_driver_deployment_to_finish +. build/ci/github_actions/deploy_object.sh && wait_for_pod_to_start "operator" +. build/ci/github_actions/deploy_object.sh && assert_expected_image_in_pod "operator" $operator_image_for_test +. build/ci/github_actions/deploy_object.sh && wait_for_driver_deployment_to_finish diff --git a/build/ci/github_actions/wait_for_k8s_ready.sh b/build/ci/github_actions/wait_for_k8s_ready.sh index 6b5dacd02..820b875e8 100755 --- a/build/ci/github_actions/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/wait_for_k8s_ready.sh @@ -3,27 +3,25 @@ set +o pipefail are_pods_ready (){ pods=$@ - are_all_pods_ready=false for pod in $pods; do running_containers_count=`echo $pod | awk -F / '{print$1}'` total_containers_count=`echo $pod | awk -F / '{print$2}'` if [ $running_containers_count != $total_containers_count ]; then - are_all_pods_ready=true + echo true break fi done - echo $are_all_pods_ready -} + echo false is_kubernetes_cluster_ready (){ pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` - are_all_containers_running=false are_all_pods_ready=$(are_pods_ready $pods) if [ $are_all_pods_ready == "false" ]; then - are_all_containers_running=true + echo true + break fi - echo $are_all_containers_running + echo false } while [[ `is_kubernetes_cluster_ready` == "false" ]]; do From 96860e2e81fab93ce9c6a9f245a43a880a85f592 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Sun, 22 Aug 2021 16:45:55 +0300 Subject: [PATCH 55/67] use docker manifest to search for tags --- .github/workflows/operator_ci.yaml | 1 - build/ci/build_push_image.sh | 2 +- build/ci/get_image_tags_from_branch.sh | 2 +- build/ci/github_actions/deploy_object.sh | 16 +++++++++++++++- build/ci/github_actions/driver/deploy_driver.sh | 7 ++++--- .../driver/get_driver_images_tag_from_branch.sh | 14 ++++---------- .../github_actions/operator/deploy_operator.sh | 7 ++++--- build/ci/github_actions/setup_ci_dependencies.sh | 2 +- build/ci/github_actions/wait_for_k8s_ready.sh | 1 + 9 files changed, 31 insertions(+), 21 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 471cb8aad..47709cfe1 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -120,7 +120,6 @@ jobs: name: "Create cluster" needs: csi_build_and_push_images env: - csiblock_docker_registry_password: ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_PASSWORD }} csiblock_docker_registry_username: ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }} controller_repository_for_test: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-controller' node_repository_for_test: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-node' diff --git a/build/ci/build_push_image.sh b/build/ci/build_push_image.sh index c23432745..cc8e12614 100755 --- a/build/ci/build_push_image.sh +++ b/build/ci/build_push_image.sh @@ -9,7 +9,7 @@ done NODE_IMAGE=ibm-node-agent # Prepare specific tag for the image -tags=`build/ci/get_image_tags_from_branch.sh ${GIT_BRANCH} ${IMAGE_VERSION} ${BUILD_NUMBER} ${GIT_COMMIT:0:7}` +tags=`build/ci/get_image_tags_from_branch.sh ${GIT_BRANCH} ${IMAGE_VERSION} ${BUILD_NUMBER} ${GIT_COMMIT}` specific_tag=`echo $tags | awk '{print$1}'` # Set latest tag only if its from develop branch or master and prepare tags diff --git a/build/ci/get_image_tags_from_branch.sh b/build/ci/get_image_tags_from_branch.sh index 77d67dbc7..a2baa2a0f 100755 --- a/build/ci/get_image_tags_from_branch.sh +++ b/build/ci/get_image_tags_from_branch.sh @@ -2,7 +2,7 @@ GIT_BRANCH=$1 IMAGE_VERSION=$2 BUILD_NUMBER=$3 -COMMIT_HASH=$4 +COMMIT_HASH=${4:0:7} branch_tag=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${COMMIT_HASH}_${branch_tag}" echo $specific_tag diff --git a/build/ci/github_actions/deploy_object.sh b/build/ci/github_actions/deploy_object.sh index 86dfb739a..4c110db6d 100755 --- a/build/ci/github_actions/deploy_object.sh +++ b/build/ci/github_actions/deploy_object.sh @@ -14,6 +14,10 @@ get_csi_pods (){ kubectl get pod -A -l csi } +get_operator_pod (){ + kubectl get pod -A -l app.kubernetes.io/name=ibm-block-csi-operator +} + get_image_pod_by_type (){ pod_type=$1 component_to_check=$2 @@ -43,8 +47,18 @@ wait_for_driver_deployment_to_start (){ } wait_for_driver_deployment_to_finish (){ + wait_for_pods_to_finish get_csi_pods +} + +wait_for_operator_deployment_to_finish (){ + wait_for_pods_to_finish get_operator_pod +} + + +wait_for_pods_to_finish (){ + get_pods_command=$1 while [ $is_driver_ready == "false" ]; do - if [ "$(get_csi_pods | grep -iv running | grep -iv name | wc -l)" -eq 0 ]; then + if [ "$($get_pods_command | grep -iv running | grep -iv name | wc -l)" -eq 0 ]; then ((++actual_driver_running_time_in_seconds)) if [ $actual_driver_running_time_in_seconds -eq $minimum_driver_running_time_in_seconds ]; then is_driver_ready=true diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index abc56e821..f2b884de6 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -31,6 +31,7 @@ edit_cr_images cat $cr_file | grep repository: cat $cr_file | grep tag: kubectl apply -f $cr_file -. build/ci/github_actions/deploy_object.sh && wait_for_driver_deployment_to_start -. build/ci/github_actions/deploy_object.sh && assert_pods_images $expected_node_image $expected_controller_image -. build/ci/github_actions/deploy_object.sh && wait_for_driver_deployment_to_finish +. build/ci/github_actions/deploy_object.sh +wait_for_driver_deployment_to_start +assert_pods_images $expected_node_image $expected_controller_image +wait_for_driver_deployment_to_finish diff --git a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh index a2f902f05..60f9ded01 100755 --- a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh +++ b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh @@ -2,8 +2,6 @@ set +o pipefail driver_images_tag_from_branch=latest -DOCKER_HUB_USERNAME=$csiblock_docker_registry_username -DOCKER_HUB_PASSWORD=$csiblock_docker_registry_password triggering_branch=$CI_ACTION_REF_NAME target_image_tags=`build/ci/get_image_tags_from_branch.sh ${triggering_branch}` target_specific_tag=`echo $target_image_tags | awk '{print$2}'` @@ -11,14 +9,10 @@ target_specific_tag=`echo $target_image_tags | awk '{print$2}'` is_private_branch_component_image_exists(){ driver_component=$1 is_image_tag_exists=false - export image_tags=`docker-hub tags --orgname $csiblock_docker_registry_username --reponame ibm-block-csi-$driver_component --all-pages | grep $target_specific_tag | awk '{print$2}'` - for tag in $image_tags - do - if [[ "$tag" == "$target_specific_tag" ]]; then - is_image_tag_exists=true - break - fi - done + export driver_image_inspect=`docker manifest inspect $csiblock_docker_registry_username/ibm-block-csi-$driver_component:$target_specific_tag` + if [[ "$driver_image_inspect" != "" ]]; then + is_image_tag_exists=true + fi echo $is_image_tag_exists } diff --git a/build/ci/github_actions/operator/deploy_operator.sh b/build/ci/github_actions/operator/deploy_operator.sh index 31c7ccd76..263793be0 100755 --- a/build/ci/github_actions/operator/deploy_operator.sh +++ b/build/ci/github_actions/operator/deploy_operator.sh @@ -11,6 +11,7 @@ cd - edit_operator_yaml_image cat $operator_yaml | grep image: kubectl apply -f $operator_yaml -. build/ci/github_actions/deploy_object.sh && wait_for_pod_to_start "operator" -. build/ci/github_actions/deploy_object.sh && assert_expected_image_in_pod "operator" $operator_image_for_test -. build/ci/github_actions/deploy_object.sh && wait_for_driver_deployment_to_finish +. build/ci/github_actions/deploy_object.sh \ +wait_for_pod_to_start "operator" +assert_expected_image_in_pod "operator" $operator_image_for_test +wait_for_operator_deployment_to_finish diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 9e4551413..1138056a9 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -17,7 +17,7 @@ EOL # CSI-3173 - move image_version value into a common config file image_version=`cat version/version.go | grep -i driverversion | awk -F = '{print $2}'` image_version=`echo ${image_version//\"}` -operator_image_tags_for_test=`build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA:0:7}` +operator_image_tags_for_test=`build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA}` image_branch_tag=`echo $operator_image_tags_for_test | awk '{print$2}'` operator_specific_tag_for_test=`echo $operator_image_tags_for_test | awk '{print$1}'` diff --git a/build/ci/github_actions/wait_for_k8s_ready.sh b/build/ci/github_actions/wait_for_k8s_ready.sh index 820b875e8..a71e1c826 100755 --- a/build/ci/github_actions/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/wait_for_k8s_ready.sh @@ -12,6 +12,7 @@ are_pods_ready (){ fi done echo false +} is_kubernetes_cluster_ready (){ pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` From dd9b17161998ccc1055b63db457ad488e380669f Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 23 Aug 2021 09:47:11 +0300 Subject: [PATCH 56/67] change deploy_objects to deployment --- build/ci/github_actions/{deploy_object.sh => deployment.sh} | 0 build/ci/github_actions/driver/deploy_driver.sh | 2 +- build/ci/github_actions/operator/deploy_operator.sh | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename build/ci/github_actions/{deploy_object.sh => deployment.sh} (100%) diff --git a/build/ci/github_actions/deploy_object.sh b/build/ci/github_actions/deployment.sh similarity index 100% rename from build/ci/github_actions/deploy_object.sh rename to build/ci/github_actions/deployment.sh diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index f2b884de6..9ca2fc084 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -31,7 +31,7 @@ edit_cr_images cat $cr_file | grep repository: cat $cr_file | grep tag: kubectl apply -f $cr_file -. build/ci/github_actions/deploy_object.sh +. build/ci/github_actions/deployment.sh wait_for_driver_deployment_to_start assert_pods_images $expected_node_image $expected_controller_image wait_for_driver_deployment_to_finish diff --git a/build/ci/github_actions/operator/deploy_operator.sh b/build/ci/github_actions/operator/deploy_operator.sh index 263793be0..95d0391db 100755 --- a/build/ci/github_actions/operator/deploy_operator.sh +++ b/build/ci/github_actions/operator/deploy_operator.sh @@ -11,7 +11,7 @@ cd - edit_operator_yaml_image cat $operator_yaml | grep image: kubectl apply -f $operator_yaml -. build/ci/github_actions/deploy_object.sh \ +. build/ci/github_actions/deployment.sh wait_for_pod_to_start "operator" assert_expected_image_in_pod "operator" $operator_image_for_test wait_for_operator_deployment_to_finish From 98159ca51c5b5dfb1bbfe6ac68c7bda6a7a677e5 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Sun, 3 Oct 2021 11:54:54 +0300 Subject: [PATCH 57/67] remove cds Signed-off-by: matancarmeli7 --- .github/workflows/operator_ci.yaml | 5 ++--- build/ci/github_actions/deployment.sh | 9 ++++++++- build/ci/github_actions/driver/deploy_driver.sh | 8 +++----- build/ci/github_actions/operator/deploy_operator.sh | 10 +++------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 47709cfe1..1f47ce323 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -126,6 +126,8 @@ jobs: operator_image_repository_for_test: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-operator' operator_specific_tag_for_test: "${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" operator_image_for_test: "${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-operator:${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" + operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" + cr_file: "config/samples/csi.ibm.com_v1_ibmblockcsi_cr.yaml" timeout-minutes: 7 steps: - name: Checkout @@ -160,14 +162,11 @@ jobs: - name: Deploy ibm block csi operator run: | build/ci/github_actions/operator/deploy_operator.sh - env: - operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" - name: Deploy ibm block csi driver run: | build/ci/github_actions/driver/deploy_driver.sh env: driver_images_tag: "${{ steps.driver_images_tag_from_branch.outputs.image_branch_tag }}" - cr_file: "deploy/crds/csi.ibm.com_v1_ibmblockcsi_cr.yaml" - name: Save driver pods logs to artifacts if: always() run: | diff --git a/build/ci/github_actions/deployment.sh b/build/ci/github_actions/deployment.sh index 4c110db6d..a4c3c044f 100755 --- a/build/ci/github_actions/deployment.sh +++ b/build/ci/github_actions/deployment.sh @@ -82,7 +82,7 @@ assert_expected_image_in_pod (){ fi } -assert_pods_images (){ +assert_driver_images_in_pods (){ expected_node_image=$1 expected_controller_image=$2 declare -A drivers_components_in_k8s=( @@ -94,3 +94,10 @@ assert_pods_images (){ assert_expected_image_in_pod $driver_component $driver_component_expected_image done } + +assert_operator_image_in_pod (){ + operator_image_for_test=$1 + kubectl apply -f $operator_yaml + wait_for_pod_to_start "operator" + assert_expected_image_in_pod "operator" $operator_image_for_test +} diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index 9ca2fc084..8a9329680 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -11,8 +11,7 @@ install_worker_prerequisites() { } edit_cr_images (){ - cd $(dirname $cr_file) - chmod 547 $(basename $cr_file) + chmod 547 $cr_file declare -A cr_image_fields=( [".spec.controller.repository"]="$controller_repository_for_test" [".spec.controller.tag"]="$driver_images_tag" @@ -21,9 +20,8 @@ edit_cr_images (){ ) for image_field in ${!cr_image_fields[@]}; do cr_image_value=${cr_image_fields[${image_field}]} - yq eval "${image_field} |= \"${cr_image_value}\"" $(basename $cr_file) -i + yq eval "${image_field} |= \"${cr_image_value}\"" $cr_file -i done - cd - } install_worker_prerequisites @@ -33,5 +31,5 @@ cat $cr_file | grep tag: kubectl apply -f $cr_file . build/ci/github_actions/deployment.sh wait_for_driver_deployment_to_start -assert_pods_images $expected_node_image $expected_controller_image +assert_driver_images_in_pods $expected_node_image $expected_controller_image wait_for_driver_deployment_to_finish diff --git a/build/ci/github_actions/operator/deploy_operator.sh b/build/ci/github_actions/operator/deploy_operator.sh index 95d0391db..129882f16 100755 --- a/build/ci/github_actions/operator/deploy_operator.sh +++ b/build/ci/github_actions/operator/deploy_operator.sh @@ -2,16 +2,12 @@ set +o pipefail edit_operator_yaml_image (){ - cd $(dirname $operator_yaml) - operator_image_in_branch=`yq eval '(. | select(.kind == "Deployment") | .spec.template.spec.containers[0].image)' $(basename $operator_yaml)` - sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $(basename $operator_yaml) ## TODO: CSI-3223 avoid using sed -cd - + operator_image_in_branch=`yq eval '(. | select(.kind == "Deployment") | .spec.template.spec.containers[0].image)' $operator_yaml` + sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $operator_yaml ## TODO: CSI-3223 avoid using sed } edit_operator_yaml_image cat $operator_yaml | grep image: -kubectl apply -f $operator_yaml . build/ci/github_actions/deployment.sh -wait_for_pod_to_start "operator" -assert_expected_image_in_pod "operator" $operator_image_for_test +assert_operator_image_in_pod $operator_image_for_test wait_for_operator_deployment_to_finish From 914818a2e068fd63a8fbfbbb01bbd1f9bd4e613a Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Sun, 3 Oct 2021 14:29:47 +0300 Subject: [PATCH 58/67] change build_and_push_images stage Signed-off-by: matancarmeli7 --- .github/workflows/operator_ci.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 1f47ce323..06a6dc635 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -62,7 +62,7 @@ jobs: run: | ./build/ci/run_olm_validation.sh - csi_build_and_push_images: + build_and_push_images: name: "CSI Build and push images" runs-on: ubuntu-latest needs: @@ -118,14 +118,14 @@ jobs: create_cluster: runs-on: ubuntu-latest name: "Create cluster" - needs: csi_build_and_push_images + needs: build_and_push_images env: csiblock_docker_registry_username: ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }} controller_repository_for_test: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-controller' node_repository_for_test: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-node' operator_image_repository_for_test: '${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-operator' - operator_specific_tag_for_test: "${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" - operator_image_for_test: "${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-operator:${{ needs.csi_build_and_push_images.outputs.operator_specific_tag_for_test }}" + operator_specific_tag_for_test: "${{ needs.build_and_push_images.outputs.operator_specific_tag_for_test }}" + operator_image_for_test: "${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-operator:${{ needs.build_and_push_images.outputs.operator_specific_tag_for_test }}" operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" cr_file: "config/samples/csi.ibm.com_v1_ibmblockcsi_cr.yaml" timeout-minutes: 7 From e480a641cdfd9782b0a3b3e7dfad9571210edf1f Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 4 Oct 2021 09:31:21 +0300 Subject: [PATCH 59/67] insert specific python version and pip version Signed-off-by: matancarmeli7 --- .github/workflows/operator_ci.yaml | 6 +++--- build/ci/github_actions/driver/deploy_driver.sh | 10 +++++----- build/ci/github_actions/setup_ci_dependencies.sh | 2 +- build/ci/github_actions/wait_for_k8s_ready.sh | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index 06a6dc635..c36b57ac2 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -18,7 +18,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: '3.x' + python-version: '3.9.7' - uses: FranzDiebold/github-env-vars-action@v2 - name: Setup dependencies id: setup_dependencies @@ -63,7 +63,7 @@ jobs: ./build/ci/run_olm_validation.sh build_and_push_images: - name: "CSI Build and push images" + name: "Build and push images" runs-on: ubuntu-latest needs: - unit_testing @@ -127,7 +127,7 @@ jobs: operator_specific_tag_for_test: "${{ needs.build_and_push_images.outputs.operator_specific_tag_for_test }}" operator_image_for_test: "${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-operator:${{ needs.build_and_push_images.outputs.operator_specific_tag_for_test }}" operator_yaml: "deploy/installer/generated/ibm-block-csi-operator.yaml" - cr_file: "config/samples/csi.ibm.com_v1_ibmblockcsi_cr.yaml" + cr_yaml: "config/samples/csi.ibm.com_v1_ibmblockcsi_cr.yaml" timeout-minutes: 7 steps: - name: Checkout diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index 8a9329680..e85206218 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -11,7 +11,7 @@ install_worker_prerequisites() { } edit_cr_images (){ - chmod 547 $cr_file + chmod 547 $cr_yaml declare -A cr_image_fields=( [".spec.controller.repository"]="$controller_repository_for_test" [".spec.controller.tag"]="$driver_images_tag" @@ -20,15 +20,15 @@ edit_cr_images (){ ) for image_field in ${!cr_image_fields[@]}; do cr_image_value=${cr_image_fields[${image_field}]} - yq eval "${image_field} |= \"${cr_image_value}\"" $cr_file -i + yq eval "${image_field} |= \"${cr_image_value}\"" $cr_yaml -i done } install_worker_prerequisites edit_cr_images -cat $cr_file | grep repository: -cat $cr_file | grep tag: -kubectl apply -f $cr_file +cat $cr_yaml | grep repository: +cat $cr_yaml | grep tag: +kubectl apply -f $cr_yaml . build/ci/github_actions/deployment.sh wait_for_driver_deployment_to_start assert_driver_images_in_pods $expected_node_image $expected_controller_image diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 1138056a9..0d4ea810e 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -2,7 +2,7 @@ set +o pipefail install_ci_dependencies (){ - python -m pip install --upgrade pip + python -m pip install --upgrade pip==21.2.4 echo docker-hub==2.2.0 > dev-requirements.txt pip install -r dev-requirements.txt } diff --git a/build/ci/github_actions/wait_for_k8s_ready.sh b/build/ci/github_actions/wait_for_k8s_ready.sh index a71e1c826..a15e1c815 100755 --- a/build/ci/github_actions/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/wait_for_k8s_ready.sh @@ -7,17 +7,17 @@ are_pods_ready (){ running_containers_count=`echo $pod | awk -F / '{print$1}'` total_containers_count=`echo $pod | awk -F / '{print$2}'` if [ $running_containers_count != $total_containers_count ]; then - echo true + echo false break fi done - echo false + echo true } is_kubernetes_cluster_ready (){ pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` are_all_pods_ready=$(are_pods_ready $pods) - if [ $are_all_pods_ready == "false" ]; then + if [ $are_all_pods_ready == "true" ]; then echo true break fi From aba7bb060c67f23e38e5089145730a6a5b3e84ee Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Mon, 4 Oct 2021 09:38:00 +0300 Subject: [PATCH 60/67] add setup_yq.sh Signed-off-by: matancarmeli7 --- build/ci/github_actions/setup_ci_dependencies.sh | 7 +------ build/ci/github_actions/setup_yq.sh | 8 ++++++++ 2 files changed, 9 insertions(+), 6 deletions(-) create mode 100755 build/ci/github_actions/setup_yq.sh diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 0d4ea810e..eb22c3de4 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -2,18 +2,13 @@ set +o pipefail install_ci_dependencies (){ + build/ci/github_actions/setup_yq.sh python -m pip install --upgrade pip==21.2.4 echo docker-hub==2.2.0 > dev-requirements.txt pip install -r dev-requirements.txt } install_ci_dependencies -cat >>/home/runner/.bash_profile <<'EOL' -yq() { - docker run --rm -i -v "${PWD}":/workdir mikefarah/yq "$@" -} -EOL - # CSI-3173 - move image_version value into a common config file image_version=`cat version/version.go | grep -i driverversion | awk -F = '{print $2}'` image_version=`echo ${image_version//\"}` diff --git a/build/ci/github_actions/setup_yq.sh b/build/ci/github_actions/setup_yq.sh new file mode 100755 index 000000000..71966a5c2 --- /dev/null +++ b/build/ci/github_actions/setup_yq.sh @@ -0,0 +1,8 @@ +#!/bin/bash -xe +set +o pipefail + +cat >>/home/runner/.bash_profile <<'EOL' +yq() { + docker run --rm -i -v "${PWD}":/workdir mikefarah/yq "$@" +} +EOL From ab2840316face7631cfccf0e3e45cb545a745f44 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 12 Oct 2021 12:09:42 +0300 Subject: [PATCH 61/67] add pr comments answer Signed-off-by: matancarmeli7 --- build/ci/github_actions/driver/deploy_driver.sh | 2 +- build/ci/github_actions/operator/deploy_operator.sh | 2 +- build/ci/github_actions/wait_for_k8s_ready.sh | 7 +------ 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index e85206218..5ceaa79fa 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -29,7 +29,7 @@ edit_cr_images cat $cr_yaml | grep repository: cat $cr_yaml | grep tag: kubectl apply -f $cr_yaml -. build/ci/github_actions/deployment.sh +source build/ci/github_actions/deployment.sh wait_for_driver_deployment_to_start assert_driver_images_in_pods $expected_node_image $expected_controller_image wait_for_driver_deployment_to_finish diff --git a/build/ci/github_actions/operator/deploy_operator.sh b/build/ci/github_actions/operator/deploy_operator.sh index 129882f16..fabfce8a3 100755 --- a/build/ci/github_actions/operator/deploy_operator.sh +++ b/build/ci/github_actions/operator/deploy_operator.sh @@ -8,6 +8,6 @@ edit_operator_yaml_image (){ edit_operator_yaml_image cat $operator_yaml | grep image: -. build/ci/github_actions/deployment.sh +source build/ci/github_actions/deployment.sh assert_operator_image_in_pod $operator_image_for_test wait_for_operator_deployment_to_finish diff --git a/build/ci/github_actions/wait_for_k8s_ready.sh b/build/ci/github_actions/wait_for_k8s_ready.sh index a15e1c815..80a7c63f8 100755 --- a/build/ci/github_actions/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/wait_for_k8s_ready.sh @@ -17,12 +17,7 @@ are_pods_ready (){ is_kubernetes_cluster_ready (){ pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` are_all_pods_ready=$(are_pods_ready $pods) - if [ $are_all_pods_ready == "true" ]; then - echo true - break - fi - - echo false + echo $are_all_pods_ready } while [[ `is_kubernetes_cluster_ready` == "false" ]]; do From 3642121ada2fb18244317c3f304ad2e98c6c554a Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Sun, 17 Oct 2021 10:14:15 +0300 Subject: [PATCH 62/67] edit get_driver_image script Signed-off-by: matancarmeli7 --- .../driver/get_driver_images_tag_from_branch.sh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh index 60f9ded01..cc33ca224 100755 --- a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh +++ b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh @@ -3,23 +3,20 @@ set +o pipefail driver_images_tag_from_branch=latest triggering_branch=$CI_ACTION_REF_NAME -target_image_tags=`build/ci/get_image_tags_from_branch.sh ${triggering_branch}` -target_specific_tag=`echo $target_image_tags | awk '{print$2}'` +branch_image_tag=`build/ci/get_image_tags_from_branch.sh ${triggering_branch}` +target_specific_tag=`echo $branch_image_tag | awk '{print$2}'` is_private_branch_component_image_exists(){ driver_component=$1 + image_to_check=$csiblock_docker_registry_username/ibm-block-csi-$driver_component:$target_specific_tag is_image_tag_exists=false - export driver_image_inspect=`docker manifest inspect $csiblock_docker_registry_username/ibm-block-csi-$driver_component:$target_specific_tag` - if [[ "$driver_image_inspect" != "" ]]; then - is_image_tag_exists=true - fi - echo $is_image_tag_exists + export driver_image_inspect=`docker manifest inspect $image_to_check &> /dev/null; echo $?` } is_controller_image_tag_exists=$(is_private_branch_component_image_exists controller) is_node_image_tag_exists=$(is_private_branch_component_image_exists node) -if [ $is_controller_image_tag_exists == "true" ] && [ $is_node_image_tag_exists == "true" ]; then +if [ $is_controller_image_tag_exists == "0" ] && [ $is_node_image_tag_exists == "0" ]; then driver_images_tag_from_branch=$target_specific_tag fi From 3ee4e462f44ddf3dd64e2aeac7eb87646c56131a Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Sun, 31 Oct 2021 16:16:55 +0200 Subject: [PATCH 63/67] remove backticks Signed-off-by: matancarmeli7 --- .github/workflows/operator_ci.yaml | 6 +++--- build/ci/get_image_tags_from_branch.sh | 2 +- build/ci/github_actions/deployment.sh | 4 ++-- build/ci/github_actions/driver/deploy_driver.sh | 2 +- .../driver/get_driver_images_tag_from_branch.sh | 12 ++++++------ .../driver/save_driver_logs_to_artifacts.sh | 2 +- .../github_actions/operator/deploy_operator.sh | 2 +- build/ci/github_actions/setup_ci_dependencies.sh | 16 ++++++++-------- build/ci/github_actions/wait_for_k8s_ready.sh | 8 ++++---- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index c36b57ac2..c0ad7e8dc 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -38,7 +38,7 @@ jobs: /home/runner/.bash_profile retention-days: 1 outputs: - image_branch_tag: "${{ steps.setup_dependencies.outputs.image_branch_tag }}" + branch_image_tag: "${{ steps.setup_dependencies.outputs.branch_image_tag }}" operator_specific_tag_for_test: "${{ steps.setup_dependencies.outputs.operator_specific_tag_for_test }}" unit_testing: @@ -101,7 +101,7 @@ jobs: push: true tags: | ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.operator_specific_tag_for_test }} - ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.image_branch_tag }} + ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }}/ibm-block-csi-${{ matrix.image_type }}:${{ needs.prepare_env.outputs.branch_image_tag }} file: build/Dockerfile.${{ matrix.image_type }} cache-from: type=local,src=/tmp/.buildx-${{ matrix.image_type }} cache-to: type=local,dest=/tmp/.buildx-new-${{ matrix.image_type }} @@ -166,7 +166,7 @@ jobs: run: | build/ci/github_actions/driver/deploy_driver.sh env: - driver_images_tag: "${{ steps.driver_images_tag_from_branch.outputs.image_branch_tag }}" + driver_images_tag: "${{ steps.driver_images_tag_from_branch.outputs.branch_image_tag }}" - name: Save driver pods logs to artifacts if: always() run: | diff --git a/build/ci/get_image_tags_from_branch.sh b/build/ci/get_image_tags_from_branch.sh index a2baa2a0f..5839bb23c 100755 --- a/build/ci/get_image_tags_from_branch.sh +++ b/build/ci/get_image_tags_from_branch.sh @@ -3,7 +3,7 @@ GIT_BRANCH=$1 IMAGE_VERSION=$2 BUILD_NUMBER=$3 COMMIT_HASH=${4:0:7} -branch_tag=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version +branch_tag=$(echo $GIT_BRANCH| sed 's|/|.|g') #not sure if docker accept / in the version specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${COMMIT_HASH}_${branch_tag}" echo $specific_tag echo $branch_tag diff --git a/build/ci/github_actions/deployment.sh b/build/ci/github_actions/deployment.sh index a4c3c044f..06d01ff03 100755 --- a/build/ci/github_actions/deployment.sh +++ b/build/ci/github_actions/deployment.sh @@ -21,7 +21,7 @@ get_operator_pod (){ get_image_pod_by_type (){ pod_type=$1 component_to_check=$2 - containers_images=`kubectl get pods $(get_csi_pods | grep $pod_type | awk '{print$2}') -o jsonpath='{range .spec.containers[*]}{.name},{.image} {end}'` + containers_images=$(kubectl get pods $(get_csi_pods | grep $pod_type | awk '{print$2}') -o jsonpath='{range .spec.containers[*]}{.name},{.image} {end}') for containers_image in $containers_images do if [[ "$containers_image" =~ "$component_to_check," ]]; then @@ -75,7 +75,7 @@ assert_expected_image_in_pod (){ pod_type=$1 expected_pod_image=$2 component_to_check=$containers_prefix-$pod_type - image_in_pod=`get_image_pod_by_type $pod_type $component_to_check` + image_in_pod=$(get_image_pod_by_type $pod_type $component_to_check) if [[ $image_in_pod != $expected_pod_image ]]; then echo "$pod_type's image ($image_in_pod) is not the expected image ($expected_pod_image)" exit 1 diff --git a/build/ci/github_actions/driver/deploy_driver.sh b/build/ci/github_actions/driver/deploy_driver.sh index 5ceaa79fa..00865dc0a 100755 --- a/build/ci/github_actions/driver/deploy_driver.sh +++ b/build/ci/github_actions/driver/deploy_driver.sh @@ -5,7 +5,7 @@ expected_node_image=$node_repository_for_test:$driver_images_tag expected_controller_image=$controller_repository_for_test:$driver_images_tag install_worker_prerequisites() { - kind_node_name=`docker ps --format "{{.Names}}"` + kind_node_name=$(docker ps --format "{{.Names}}") docker exec -i $kind_node_name apt-get update docker exec -i $kind_node_name apt -y install open-iscsi } diff --git a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh index cc33ca224..5af7fb23d 100755 --- a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh +++ b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh @@ -3,21 +3,21 @@ set +o pipefail driver_images_tag_from_branch=latest triggering_branch=$CI_ACTION_REF_NAME -branch_image_tag=`build/ci/get_image_tags_from_branch.sh ${triggering_branch}` -target_specific_tag=`echo $branch_image_tag | awk '{print$2}'` +branch_image_tag=$(build/ci/get_image_tags_from_branch.sh ${triggering_branch}) +branch_image_tag=$(echo $branch_image_tag | awk '{print$2}') is_private_branch_component_image_exists(){ driver_component=$1 - image_to_check=$csiblock_docker_registry_username/ibm-block-csi-$driver_component:$target_specific_tag + image_to_check=$csiblock_docker_registry_username/ibm-block-csi-$driver_component:$branch_image_tag is_image_tag_exists=false - export driver_image_inspect=`docker manifest inspect $image_to_check &> /dev/null; echo $?` + export driver_image_inspect=$(docker manifest inspect $image_to_check &> /dev/null; echo $?) } is_controller_image_tag_exists=$(is_private_branch_component_image_exists controller) is_node_image_tag_exists=$(is_private_branch_component_image_exists node) if [ $is_controller_image_tag_exists == "0" ] && [ $is_node_image_tag_exists == "0" ]; then - driver_images_tag_from_branch=$target_specific_tag + driver_images_tag_from_branch=$branch_image_tag fi -echo "::set-output name=image_branch_tag::${driver_images_tag_from_branch}" +echo "::set-output name=branch_image_tag::${driver_images_tag_from_branch}" diff --git a/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh b/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh index 183657635..952fe7b03 100755 --- a/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh +++ b/build/ci/github_actions/driver/save_driver_logs_to_artifacts.sh @@ -18,7 +18,7 @@ run_action_and_save_output (){ save_logs_of_all_containers_in_pod (){ pod_type=$1 pod_names=$(get_all_pods_by_type $pod_type) - containers=`kubectl get pods $pod_names -o jsonpath='{.spec.containers[*].name}'` + containers=$(kubectl get pods $pod_names -o jsonpath='{.spec.containers[*].name}') for container in $containers do run_action_and_save_output $pod_type logs "log" "-c $container" $container diff --git a/build/ci/github_actions/operator/deploy_operator.sh b/build/ci/github_actions/operator/deploy_operator.sh index fabfce8a3..691fe62ad 100755 --- a/build/ci/github_actions/operator/deploy_operator.sh +++ b/build/ci/github_actions/operator/deploy_operator.sh @@ -2,7 +2,7 @@ set +o pipefail edit_operator_yaml_image (){ - operator_image_in_branch=`yq eval '(. | select(.kind == "Deployment") | .spec.template.spec.containers[0].image)' $operator_yaml` + operator_image_in_branch=$(yq eval '(. | select(.kind == "Deployment") | .spec.template.spec.containers[0].image)' $operator_yaml) sed -i "s+$operator_image_in_branch+$operator_image_for_test+g" $operator_yaml ## TODO: CSI-3223 avoid using sed } diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index eb22c3de4..8c4389ac8 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -10,15 +10,15 @@ install_ci_dependencies (){ install_ci_dependencies # CSI-3173 - move image_version value into a common config file -image_version=`cat version/version.go | grep -i driverversion | awk -F = '{print $2}'` -image_version=`echo ${image_version//\"}` -operator_image_tags_for_test=`build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA}` -image_branch_tag=`echo $operator_image_tags_for_test | awk '{print$2}'` -operator_specific_tag_for_test=`echo $operator_image_tags_for_test | awk '{print$1}'` +image_version=$(cat version/version.go | grep -i driverversion | awk -F = '{print $2}') +image_version=$(echo ${image_version//\"}) +operator_image_tags_for_test=$(build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA}) +branch_image_tag=$(echo $operator_image_tags_for_test | awk '{print$2}') +operator_specific_tag_for_test=$(echo $operator_image_tags_for_test | awk '{print$1}') -if [ "$image_branch_tag" == "develop" ]; then - image_branch_tag=latest +if [ "$branch_image_tag" == "develop" ]; then + branch_image_tag=latest fi -echo "::set-output name=image_branch_tag::${image_branch_tag}" +echo "::set-output name=branch_image_tag::${branch_image_tag}" echo "::set-output name=operator_specific_tag_for_test::${operator_specific_tag_for_test}" diff --git a/build/ci/github_actions/wait_for_k8s_ready.sh b/build/ci/github_actions/wait_for_k8s_ready.sh index 80a7c63f8..69a2abd52 100755 --- a/build/ci/github_actions/wait_for_k8s_ready.sh +++ b/build/ci/github_actions/wait_for_k8s_ready.sh @@ -4,8 +4,8 @@ set +o pipefail are_pods_ready (){ pods=$@ for pod in $pods; do - running_containers_count=`echo $pod | awk -F / '{print$1}'` - total_containers_count=`echo $pod | awk -F / '{print$2}'` + running_containers_count=$(echo $pod | awk -F / '{print$1}') + total_containers_count=$(echo $pod | awk -F / '{print$2}') if [ $running_containers_count != $total_containers_count ]; then echo false break @@ -15,11 +15,11 @@ are_pods_ready (){ } is_kubernetes_cluster_ready (){ - pods=`kubectl get pods -A | awk '{print$3}' | grep -iv ready` + pods=$(kubectl get pods -A | awk '{print$3}' | grep -iv ready) are_all_pods_ready=$(are_pods_ready $pods) echo $are_all_pods_ready } -while [[ `is_kubernetes_cluster_ready` == "false" ]]; do +while [[ $(is_kubernetes_cluster_ready) == "false" ]]; do kubectl get pods -A done From f9c7828e3b6ccfcacc01a80976fb98d1fd5a937a Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 2 Nov 2021 09:21:34 +0200 Subject: [PATCH 64/67] change names of parameters Signed-off-by: matancarmeli7 --- build/ci/build_push_image.sh | 4 ++-- build/ci/get_image_tags_from_branch.sh | 6 +++--- .../driver/get_driver_images_tag_from_branch.sh | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build/ci/build_push_image.sh b/build/ci/build_push_image.sh index 7a36bf19a..b849718ed 100755 --- a/build/ci/build_push_image.sh +++ b/build/ci/build_push_image.sh @@ -7,8 +7,8 @@ for envi in $MANDATORY_ENVS; do done # Prepare specific tag for the image -tags=`build/ci/get_image_tags_from_branch.sh ${GIT_BRANCH} ${IMAGE_VERSION} ${BUILD_NUMBER} ${GIT_COMMIT}` -specific_tag=`echo $tags | awk '{print$1}'` +tags=$(build/ci/get_image_tags_from_branch.sh ${GIT_BRANCH} ${IMAGE_VERSION} ${BUILD_NUMBER} ${GIT_COMMIT}) +specific_tag=$(echo $tags | awk '{print$1}') # Set latest tag only if its from develop branch or master and prepare tags [ "$GIT_BRANCH" = "develop" -o "$GIT_BRANCH" = "origin/develop" -o "$GIT_BRANCH" = "master" ] && tag_latest="true" || tag_latest="false" diff --git a/build/ci/get_image_tags_from_branch.sh b/build/ci/get_image_tags_from_branch.sh index 5839bb23c..4e4f13c80 100755 --- a/build/ci/get_image_tags_from_branch.sh +++ b/build/ci/get_image_tags_from_branch.sh @@ -3,7 +3,7 @@ GIT_BRANCH=$1 IMAGE_VERSION=$2 BUILD_NUMBER=$3 COMMIT_HASH=${4:0:7} -branch_tag=$(echo $GIT_BRANCH| sed 's|/|.|g') #not sure if docker accept / in the version -specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${COMMIT_HASH}_${branch_tag}" +branch_image_tag=$(echo $GIT_BRANCH| sed 's|/|.|g') #not sure if docker accept / in the version +specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${COMMIT_HASH}_${branch_image_tag}" echo $specific_tag -echo $branch_tag +echo $branch_image_tag diff --git a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh index 5af7fb23d..34ac76459 100755 --- a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh +++ b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh @@ -3,7 +3,7 @@ set +o pipefail driver_images_tag_from_branch=latest triggering_branch=$CI_ACTION_REF_NAME -branch_image_tag=$(build/ci/get_image_tags_from_branch.sh ${triggering_branch}) +target_image_tags=$(build/ci/get_image_tags_from_branch.sh ${triggering_branch}) branch_image_tag=$(echo $branch_image_tag | awk '{print$2}') is_private_branch_component_image_exists(){ From 3ff23d661f6cf588c3debffd5445cb41a1a866c1 Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 2 Nov 2021 09:39:20 +0200 Subject: [PATCH 65/67] align setup_ci with driver Signed-off-by: matancarmeli7 --- build/ci/github_actions/setup_ci_dependencies.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 8c4389ac8..09923680d 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -9,16 +9,18 @@ install_ci_dependencies (){ } install_ci_dependencies +triggering_branch = ${CI_ACTION_REF_NAME} # CSI-3173 - move image_version value into a common config file image_version=$(cat version/version.go | grep -i driverversion | awk -F = '{print $2}') image_version=$(echo ${image_version//\"}) -operator_image_tags_for_test=$(build/ci/get_image_tags_from_branch.sh ${CI_ACTION_REF_NAME} ${image_version} ${build_number} ${GITHUB_SHA}) -branch_image_tag=$(echo $operator_image_tags_for_test | awk '{print$2}') +operator_image_tags_for_test=$(build/ci/get_image_tags_from_branch.sh ${triggering_branch} ${image_version} ${build_number} ${GITHUB_SHA}) operator_specific_tag_for_test=$(echo $operator_image_tags_for_test | awk '{print$1}') -if [ "$branch_image_tag" == "develop" ]; then +if [ "$triggering_branch" == "develop" ]; then branch_image_tag=latest +else + branch_image_tag=$(echo $operator_image_tags_for_test | awk '{print$2}') fi -echo "::set-output name=branch_image_tag::${branch_image_tag}" echo "::set-output name=operator_specific_tag_for_test::${operator_specific_tag_for_test}" +echo "::set-output name=branch_image_tag::${branch_image_tag}" From 1ed494f3c9887bdc16dbf8c6470bf21d440eb1bf Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Tue, 2 Nov 2021 10:11:05 +0200 Subject: [PATCH 66/67] fix spacing problem Signed-off-by: matancarmeli7 --- build/ci/github_actions/setup_ci_dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/github_actions/setup_ci_dependencies.sh b/build/ci/github_actions/setup_ci_dependencies.sh index 09923680d..64e5f0e28 100755 --- a/build/ci/github_actions/setup_ci_dependencies.sh +++ b/build/ci/github_actions/setup_ci_dependencies.sh @@ -9,7 +9,7 @@ install_ci_dependencies (){ } install_ci_dependencies -triggering_branch = ${CI_ACTION_REF_NAME} +triggering_branch=${CI_ACTION_REF_NAME} # CSI-3173 - move image_version value into a common config file image_version=$(cat version/version.go | grep -i driverversion | awk -F = '{print $2}') image_version=$(echo ${image_version//\"}) From c0b3acdfa0786a536fcbb0a547e8a96fcb3d995f Mon Sep 17 00:00:00 2001 From: matancarmeli7 Date: Sun, 27 Feb 2022 11:32:53 +0200 Subject: [PATCH 67/67] test stuff Signed-off-by: matancarmeli7 --- .github/workflows/operator_ci.yaml | 6 +++--- .../driver/get_driver_images_tag_from_branch.sh | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/operator_ci.yaml b/.github/workflows/operator_ci.yaml index c0ad7e8dc..75e1d0a7f 100644 --- a/.github/workflows/operator_ci.yaml +++ b/.github/workflows/operator_ci.yaml @@ -79,7 +79,7 @@ jobs: uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v1.3.0 + uses: docker/setup-buildx-action@v1.6.0 - uses: FranzDiebold/github-env-vars-action@v2 - name: Login to DockerHub uses: docker/login-action@v1 @@ -115,9 +115,9 @@ jobs: outputs: operator_specific_tag_for_test: "${{ needs.prepare_env.outputs.operator_specific_tag_for_test }}" - create_cluster: + deploy_csi_on_cluster: runs-on: ubuntu-latest - name: "Create cluster" + name: "Deploy csi on cluster" needs: build_and_push_images env: csiblock_docker_registry_username: ${{ secrets.CSIBLOCK_DOCKER_REGISTRY_USERNAME }} diff --git a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh index 34ac76459..de129d9d4 100755 --- a/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh +++ b/build/ci/github_actions/driver/get_driver_images_tag_from_branch.sh @@ -11,12 +11,17 @@ is_private_branch_component_image_exists(){ image_to_check=$csiblock_docker_registry_username/ibm-block-csi-$driver_component:$branch_image_tag is_image_tag_exists=false export driver_image_inspect=$(docker manifest inspect $image_to_check &> /dev/null; echo $?) + if [ $driver_image_inspect == "0" ]; then + echo true + else + echo false + fi } is_controller_image_tag_exists=$(is_private_branch_component_image_exists controller) is_node_image_tag_exists=$(is_private_branch_component_image_exists node) -if [ $is_controller_image_tag_exists == "0" ] && [ $is_node_image_tag_exists == "0" ]; then +if [ $is_controller_image_tag_exists == "true" ] && [ $is_node_image_tag_exists == "true " ]; then driver_images_tag_from_branch=$branch_image_tag fi