summaryrefslogtreecommitdiff
path: root/scripts/update_download_center.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/update_download_center.sh')
-rw-r--r--scripts/update_download_center.sh106
1 files changed, 106 insertions, 0 deletions
diff --git a/scripts/update_download_center.sh b/scripts/update_download_center.sh
new file mode 100644
index 000000000..8e4359717
--- /dev/null
+++ b/scripts/update_download_center.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+
+#############################################
+############# Functions #############
+#############################################
+
+cleanup(){
+ if [ -d $TMP_DIR ]; then
+ rm -rf $TMP_DIR
+ fi
+}
+
+#############################################
+############# Functions END #############
+#############################################
+
+echo "Check the requirements"
+
+if [ -z $CI ];then
+ echo "This Script needs to be run by CI"
+fi
+if [ -z $CIRCLECI ];then
+ echo "This Script needs to be run on CircleCI"
+fi
+if [[ "${CIRCLE_PROJECT_USERNAME}" != "navit-gps" || "${CIRCLE_BRANCH}" != "trunk" ]]; then
+ echo "Only trunk on navit-gps may upload to the Download Center"
+ exit 0
+fi
+
+#############################################
+
+echo "Setting up all Variables"
+
+UUID=${RANDOM}-${RANDOM}-${RANDOM}-${RANDOM}
+TMP_DIR=$(mktemp -d)
+CIRCLECI_API_BASE="https://circleci.com/api/v1.1/"
+NAVIT_DOWNLOAD_CENTER_REPO="git@github.com:navit-gps/download-center"
+
+# To keep it generic
+CVS_TYPE="github"
+REPONAME=$CIRCLE_PROJECT_REPONAME
+USERNAME=$CIRCLE_PROJECT_USERNAME
+BUILD_NUM=$CIRCLE_BUILD_NUM
+JOB_NAME=$CIRCLE_JOB
+
+# Build all api urls
+URL_BUILD_ARTIFACTS="${CIRCLECI_API_BASE}project/${CVS_TYPE}/${USERNAME}/${REPONAME}/${BUILD_NUM}/artifacts"
+echo "Artifact URL: $URL_BUILD_ARTIFACTS"
+
+#############################################
+
+echo "Setup trap for cleanup"
+trap cleanup EXIT
+
+#############################################
+
+echo "Init Git Repo"
+export GIT_TERMINAL_PROMPT=0
+cd $TMP_DIR
+mkdir -p ~/.ssh/
+ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
+git clone $NAVIT_DOWNLOAD_CENTER_REPO $UUID
+if [ ! -d $UUID/_data/$JOB_NAME ]; then
+ mkdir -p $UUID/_data/$JOB_NAME
+fi
+cd $UUID/_data/$JOB_NAME
+
+#############################################
+
+echo "Download metadata of this build"
+wget --no-check-certificate $URL_BUILD_ARTIFACTS -O $(printf "%010d" ${BUILD_NUM}).json
+RC=$?
+if [ $RC -ne 0 ]; then
+ echo "wget artifacts download failed"
+ exit 1
+fi
+
+#############################################
+
+echo "Push update to ${NAVIT_DOWNLOAD_CENTER_REPO}"
+git config --global push.default simple
+git config user.name "Circle CI"
+git config user.email "circleci@navit-project.org"
+git add $(printf "%010d" ${BUILD_NUM}).json
+git commit -m "add:artifacts:Add artifacts for build #${BUILD_NUM} with SHA1:${CIRCLE_SHA1}"
+git push
+RC=$?
+if [ $RC -ne 0 ]; then
+ exit 0
+else
+ echo "Push to ${NAVIT_DOWNLOAD_CENTER_REPO} was not successful update repo and try again..."
+ for NUM in {1..10}; do
+ echo "Retry #${NUM} to push to github"
+ git pull
+ git push
+ RC=$?
+ if [ $RC -eq 0 ]; then
+ exit 0
+ fi
+ sleep $(($RANDOM%5)) # sleep between 1 and 5 seconds
+ done
+fi
+
+echo "Failed to push to github"
+exit 100