#!/bin/bash # Note: this is managed by Ansible, as deploy-sh.j2 # Don't modify this file unless its name is deploy-sh.j2 if [[ ${1} = "--repo" ]]; then shift GITHUB_REPO=$(echo -n "${1}" | tr -c 'A-Za-z0-9_.-/' '-') GIT_PREFETCH=https://github.com/${GITHUB_REPO}.git shift else GITHUB_REPO=unicode-org/cldr GIT_PREFETCH=origin fi GITHUB_SHA=$1 UNLOCK=$2 WORKDIR=${TMPDIR-/tmp} # keep all random files here SERVICE="{{ cldr_openliberty_service }}" # TODO: "dogit" could be split out as a separate script dogit() { git config --global advice.detachedHead false rm -f ${WORKDIR}/git-list.txt if [[ ${GITHUB_SHA} = "main" ]]; then echo "changing ${GITHUB_SHA} to 'origin/main' to get the latest" GITHUB_SHA=origin/main fi # There's some risk that if we fetch something that has been rebased, # we might get stuck here # TODO: add a reset mechanism, if fetch fails we should reset the repo and check out again. echo "Git fetch: ${GIT_PREFETCH} @ ${GITHUB_SHA}" git fetch -p "${GIT_PREFETCH}" "${GITHUB_SHA}" || exit 1 git clean -f -d || echo 'warning: err on cleanup' # what are we deploying? echo "cldr-trunk was at :" $(git rev-parse --short HEAD) echo -n "you want to move to:" git rev-parse --short "${GITHUB_SHA}" || exit 1 # fail on err if [[ $(git rev-parse --short HEAD) = $(git rev-parse --short "${GITHUB_SHA}") ]]; then echo "No checkout needed. Continuing with redeploy." else echo "Deploy will include these new items:" echo "---" (git log --oneline HEAD..${GITHUB_SHA} | tee ${WORKDIR}/git-list.txt) || exit 1 echo "---" if [[ ! -s ${WORKDIR}/git-list.txt ]]; # if empty.. then echo "Note, ${GITHUB_SHA} is not ahead of HEAD" $(git rev-parse --short HEAD) echo "Checking for items that would be REVERTED if we proceed:" echo "---" git log --oneline ${GITHUB_SHA}..HEAD echo "---" if [[ "${UNLOCK}" = "--override" ]]; then echo ".. continuing anyway! due to " "${UNLOCK}" else echo "STOP. Check the override box if you really want to do this" exit 1 fi fi git checkout -f ${GITHUB_SHA} echo "HEAD is now at" $(git rev-parse --short HEAD) "!" fi } # Check git first, before undeploying. Want to exit early (cd {{ cldr_trunk_path }} && dogit ) || exit 1 # # stop server sudo -u root /usr/sbin/service ${SERVICE} stop # clear cache if [[ -d /srv/st/config/.cache ]]; then echo "Deleting cache /srv/config/.cache" sudo /usr/bin/rm -rf /srv/st/config/.cache fi rm -fv ${WORKDIR}/cldr-apps.zip ${WORKDIR}/deploystatus # copy cldr-apps.zip from action runner to server dd bs=1024000 status=progress of=${WORKDIR}/cldr-apps.zip # this counts the # of files to make sure it's not too short, but also verifies that unzip is OK echo ; echo -n 'Unzip check, # of files in cldr-apps.zip: ' (unzip -l ${WORKDIR}/cldr-apps.zip | wc -l ) || exit 1 cd ${WORKDIR} || exit 1 rm -rf ./deploy || exit 1 mkdir ./deploy cd ./deploy unzip ${WORKDIR}/cldr-apps.zip if [[ ! -d ./wlp ]]; then echo "Error, did not get a ./wlp dir from this zip.. stop" exit 1 fi # Now, do the deployment! # exclude these two files rsync -r --exclude server.env --exclude workarea --exclude bootstrap.properties -v \ --delete ./wlp/usr/servers/cldr/* /var/lib/openliberty/usr/servers/cldr/ || exit 1 # update datadog sed -i.old -e "s/DD_GIT_COMMIT_SHA.*/DD_GIT_COMMIT_SHA=${GITHUB_SHA}/g" -e "s%DD_GIT_REPOSITORY_URL.*%DD_GIT_REPOSITORY_URL=github.com/${GITHUB_REPO}%g" /var/lib/openliberty/usr/servers/{{ cldr_openliberty_server }}/server.env sudo -u root /usr/sbin/service ${SERVICE} start || exit 1