X-Git-Url: https://gerrit.nordix.org/gitweb?a=blobdiff_plain;f=jjb%2Fengine%2Fscripts%2Fgenerate-change-metadata.sh;h=0e510117c1803d877c17791375a0c016a6c70c46;hb=48269bf1aafc19bcb60453c43f6cfcdce2541d5f;hp=c9d287bd6e8578bdc43c8d427b7845dcc198c17a;hpb=d8b7f143c9bd074fd65e6e5c93edc221164702f7;p=infra%2Fcicd.git diff --git a/jjb/engine/scripts/generate-change-metadata.sh b/jjb/engine/scripts/generate-change-metadata.sh index c9d287bd..0e510117 100755 --- a/jjb/engine/scripts/generate-change-metadata.sh +++ b/jjb/engine/scripts/generate-change-metadata.sh @@ -23,19 +23,78 @@ set -o nounset set -o errexit set -o pipefail -# NOTE (fdegir): we need to remove $WORKSPACE and clone infra/engine repository -# as infra/engine is what drives the deployment -if [[ "$GERRIT_PROJECT" != "infra/engine" ]]; then - cd "$HOME" && /bin/rm -rf "$WORKSPACE" - echo "Info : Cloning infra/engine repository" - git clone -q https://gerrit.nordix.org/infra/engine.git "$WORKSPACE" - cd "$WORKSPACE" - # TODO (fdegir): this is temporarily here to develop the jobs - git fetch "https://gerrit.nordix.org/infra/engine" refs/changes/23/4823/18 && git checkout FETCH_HEAD -fi +# NOTE (fdegir): in case if a change depends on another open change in different repo +# we determine it here and override the version and refspec for that repo +function determine_dependency() { + echo "Info : Determining dependency" + echo "Info : Commit message is" + echo "-------------------------------------------------------------------------" + echo "$GERRIT_CHANGE_COMMIT_MESSAGE" + echo "-------------------------------------------------------------------------" + + if ! echo "$GERRIT_CHANGE_COMMIT_MESSAGE" | grep -qs "^Depends-On:"; then + echo "Info : No dependency found" + return + else + echo "Info : Dependency found!" + DEPENDENT_CHANGE_ID=$(echo "$GERRIT_CHANGE_COMMIT_MESSAGE" | grep "^Depends-On:" | cut -d":" -f2 | sed 's/\s*//g') + fi + + echo "Info : Processing change $DEPENDENT_CHANGE_ID" + declare -a DEPENDENT_CHANGE_METADATA + readarray -t DEPENDENT_CHANGE_METADATA < <(curl -s "https://gerrit.nordix.org/changes/?q=$DEPENDENT_CHANGE_ID&o=CURRENT_REVISION" 2>&1 \ + | grep "project\|status\|current_revision\|ref.*," | sed -e 's/\s//g' -e 's/,//g' -e 's/"//g'| cut -d: -f2) + + # NOTE (fdegir): check if the dependeny change exists + # and ignore if it doesn't + if [[ -z "${DEPENDENT_CHANGE_METADATA+x}" ]]; then + echo "Warn : Unable to determine dependent change. Ignoring dependency!" + return + fi + + DEPENDENT_CHANGE_PROJECT="${DEPENDENT_CHANGE_METADATA[0]}" + DEPENDENT_CHANGE_STATUS="${DEPENDENT_CHANGE_METADATA[1]}" + DEPENDENT_CHANGE_REVISION="${DEPENDENT_CHANGE_METADATA[2]}" + DEPENDENT_CHANGE_REFSPEC="${DEPENDENT_CHANGE_METADATA[3]}" + echo "-------------------------------------------------------------------------" + echo " DEPENDENT_CHANGE_PROJECT=$DEPENDENT_CHANGE_PROJECT" + echo " DEPENDENT_CHANGE_STATUS=$DEPENDENT_CHANGE_STATUS" + echo " DEPENDENT_CHANGE_REVISION=$DEPENDENT_CHANGE_REVISION" + echo " DEPENDENT_CHANGE_REFSPEC=$DEPENDENT_CHANGE_REFSPEC" + echo "-------------------------------------------------------------------------" + + # NOTE (fdegir): we only follow the dependency if the change status is NEW + if [[ "$DEPENDENT_CHANGE_STATUS" != "NEW" ]]; then + echo "Warn : Change is not open. Ignoring dependency!" + return + fi + + # NOTE (fdegir): we do not accept dependency of a change that is sent to same project as the dependent change + if [[ "$DEPENDENT_CHANGE_PROJECT" == "$GERRIT_PROJECT" ]]; then + echo "Warn : Change is for the same project. Ignoring dependency!" + return + fi + + DEPENDENT_COMPONENT="${DEPENDENT_CHANGE_PROJECT//*\//}" + + echo "# dependent change" >> "$CHANGE_METADATA_FILE" + + # NOTE (fdegir): if dependent change is on stack repo, we need to treat it + # differently + if [[ "$DEPENDENT_CHANGE_PROJECT" =~ /stack/ ]]; then + # set vars + echo "STACK_TYPE=$DEPENDENT_COMPONENT" >> "$CHANGE_METADATA_FILE" + echo "STACK_VERSION=$DEPENDENT_CHANGE_REVISION" >> "$CHANGE_METADATA_FILE" + echo "STACK_REFSPEC=$DEPENDENT_CHANGE_REFSPEC" >> "$CHANGE_METADATA_FILE" + else + echo "NORDIX_$(echo $DEPENDENT_COMPONENT | tr a-z A-Z)_VERSION=$DEPENDENT_CHANGE_REVISION" >> "$CHANGE_METADATA_FILE" + echo "NORDIX_$(echo $DEPENDENT_COMPONENT | tr a-z A-Z)_REFSPEC=$DEPENDENT_CHANGE_REFSPEC" >> "$CHANGE_METADATA_FILE" + fi + +} # file to record change metadata - export CHANGE_METADATA_FILE="$WORKSPACE/change.properties" +export CHANGE_METADATA_FILE="$WORKSPACE/change.properties" /bin/rm -f "$CHANGE_METADATA_FILE" echo "Info : Generating change metadata" @@ -51,13 +110,9 @@ if [[ "$GERRIT_PROJECT" =~ /stack/ ]]; then export STACK_VERSION="$GERRIT_PATCHSET_REVISION" export STACK_REFSPEC="$GERRIT_REFSPEC" - # log info to console - echo " STACK_TYPE=$STACK_TYPE" - echo " STACK_VERSION=$GERRIT_PATCHSET_REVISION" - echo " STACK_REFSPEC=$GERRIT_REFSPEC" - # record vars to properties file echo "STACK_TYPE=$STACK_TYPE" >> "$CHANGE_METADATA_FILE" + echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" >> "$CHANGE_METADATA_FILE" echo "STACK_VERSION=$STACK_VERSION" >> "$CHANGE_METADATA_FILE" echo "STACK_REFSPEC=$STACK_REFSPEC" >> "$CHANGE_METADATA_FILE" elif [[ "$GERRIT_PROJECT" =~ /installer/ ]]; then @@ -65,25 +120,23 @@ elif [[ "$GERRIT_PROJECT" =~ /installer/ ]]; then case "${ENGINE_COMPONENT}" in kolla) export STACK_TYPE="openstack" + echo "Info : Deploy scenario is overriden by job to $DEPLOY_SCENARIO" ;; kubespray) export STACK_TYPE="kubernetes" + echo "Info : Deploy scenario is overriden by job to $DEPLOY_SCENARIO" ;; oom) export STACK_TYPE="onap" + echo "Info : Deploy scenario is overriden by job to $DEPLOY_SCENARIO" ;; *) echo "ERROR : Invalid engine component $ENGINE_COMPONENT"; exit 1;; esac export STACK_VERSION="$GERRIT_BRANCH" - # log info to console - echo " STACK_TYPE=$STACK_TYPE" - echo " STACK_VERSION=$STACK_VERSION" - echo " NORDIX_$(echo $ENGINE_COMPONENT | tr a-z A-Z)_VERSION=$GERRIT_PATCHSET_REVISION" - echo " NORDIX_$(echo $ENGINE_COMPONENT | tr a-z A-Z)_REFSPEC=$GERRIT_REFSPEC" - # record vars to properties file echo "STACK_TYPE=$STACK_TYPE" >> "$CHANGE_METADATA_FILE" + echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" >> "$CHANGE_METADATA_FILE" echo "STACK_VERSION=$STACK_VERSION" >> "$CHANGE_METADATA_FILE" echo "NORDIX_$(echo $ENGINE_COMPONENT | tr a-z A-Z)_VERSION=$GERRIT_PATCHSET_REVISION" >> "$CHANGE_METADATA_FILE" echo "NORDIX_$(echo $ENGINE_COMPONENT | tr a-z A-Z)_REFSPEC=$GERRIT_REFSPEC" >> "$CHANGE_METADATA_FILE" @@ -92,14 +145,9 @@ else export STACK_TYPE=kubernetes export STACK_VERSION=$GERRIT_BRANCH - # log info to console - echo " STACK_TYPE=$STACK_TYPE" - echo " STACK_VERSION=$STACK_VERSION" - echo " NORDIX_$(echo $ENGINE_COMPONENT | tr a-z A-Z)_VERSION=$GERRIT_PATCHSET_REVISION" - echo " NORDIX_$(echo $ENGINE_COMPONENT | tr a-z A-Z)_REFSPEC=$GERRIT_REFSPEC" - # record vars to properties file - echo "STACK_TYPE=kubernetes" >> "$CHANGE_METADATA_FILE" + echo "STACK_TYPE=$STACK_TYPE" >> "$CHANGE_METADATA_FILE" + echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" >> "$CHANGE_METADATA_FILE" echo "STACK_VERSION=$STACK_VERSION" >> "$CHANGE_METADATA_FILE" echo "NORDIX_$(echo $ENGINE_COMPONENT | tr a-z A-Z)_VERSION=$GERRIT_PATCHSET_REVISION" >> "$CHANGE_METADATA_FILE" echo "NORDIX_$(echo $ENGINE_COMPONENT | tr a-z A-Z)_REFSPEC=$GERRIT_REFSPEC" >> "$CHANGE_METADATA_FILE" @@ -109,8 +157,8 @@ fi export NORDIX_ARM_HTTPS_URL="https://artifactory.nordix.org/artifactory" export ARTIFACT_ARM_FOLDER="gerrit" export BUILD_IDENTIFIER=$GERRIT_CHANGE_NUMBER -export INSTALLER_FILE="${STACK_TYPE}-ubuntu1804.bsx" -export BUILD_ARTIFACTS="${STACK_TYPE}-ubuntu1804.bsx" +export OFFLINE_INSTALLER_FILE="/tmp/${STACK_TYPE}-${GERRIT_BRANCH}-${DISTRO}.bsx" +export BUILD_ARTIFACTS="/tmp/${STACK_TYPE}-${GERRIT_BRANCH}-${DISTRO}.bsx" export NORDIX_ARM_REPO="nordix-${STACK_TYPE}" export NORDIX_ARTIFACT_URL="$NORDIX_ARM_HTTPS_URL/$NORDIX_ARM_REPO/installer/oss/$ARTIFACT_ARM_FOLDER/$BUILD_IDENTIFIER" @@ -118,14 +166,19 @@ cat << EOF >> "$CHANGE_METADATA_FILE" BUILD_IDENTIFIER=$BUILD_IDENTIFIER BUILD_DATE=$(date '+%Y%m%d%H%M') BUILT_BY=$BUILD_URL +DISTRO=$DISTRO CI_LOOP=$CI_LOOP ENGINE_SHA=$(git rev-parse HEAD) -INSTALLER_FILE=${STACK_TYPE}-ubuntu1804.bsx -BUILD_ARTIFACTS=${STACK_TYPE}-ubuntu1804.bsx +OFFLINE_INSTALLER_FILE=$OFFLINE_INSTALLER_FILE +BUILD_ARTIFACTS=$BUILD_ARTIFACTS NORDIX_ARM_REPO=nordix-${STACK_TYPE} NORDIX_ARTIFACT_URL=$NORDIX_ARTIFACT_URL EOF +# NOTE (fdegir): we generated the change metadata file normally until here +# we now determine the dependency as the last step to ensure we override vars +determine_dependency + echo "Info : Change metadata" echo "-------------------------------------------------------------------------" cat "$CHANGE_METADATA_FILE"