diff options
| author | jkoan <jkoan@users.noreply.github.com> | 2018-02-13 08:25:04 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-02-13 08:25:04 +0100 |
| commit | 0046dd08c3ed2ec7c176fdb44c922962fe6c8ecc (patch) | |
| tree | 301594d76b741173a8265c0d1a179c1548405c4a /ci | |
| parent | 868b43dc4aba9e621420abab8a46f41e0af7c567 (diff) | |
| download | navit-0046dd08c3ed2ec7c176fdb44c922962fe6c8ecc.tar.gz | |
add:build:Add download center (#405)
* Merge
* Update Linux build to also build Artifacts
* Okay okay, circleci does not like regex :D
* futher work in the download center
* Update Script
* Change UUID to some fake
* Next Test
* Fix git?
* Add SSH Key to known hosts
* Add ssh for win build images
* Add retry if the repo was modifyed in the time between pull and push
This could happen if two builds finished exactly at the same time like here:
https://circleci.com/gh/jkoan/navit/821
* Add Files in different dirs
* Update script
* Add another message
* Only store really needed things for linux
* Update update_download_center.sh
* Update update_download_center.sh
* Update config.yml
Diffstat (limited to 'ci')
| -rw-r--r-- | ci/build_linux.sh | 2 | ||||
| -rw-r--r-- | ci/setup_common_requirements.sh | 2 | ||||
| -rw-r--r-- | ci/update_download_center.sh | 106 |
3 files changed, 109 insertions, 1 deletions
diff --git a/ci/build_linux.sh b/ci/build_linux.sh index dd3846710..483128558 100644 --- a/ci/build_linux.sh +++ b/ci/build_linux.sh @@ -17,6 +17,7 @@ if [[ "${CIRCLE_PROJECT_USERNAME}" == "navit-gps" && "${CIRCLE_BRANCH}" == "trun cov-build --dir cov-int cmake ${cmake_opts} ../ cov-build --dir cov-int make -j $(nproc --all) || exit -1 + cov-build --dir cov-int make -j $(nproc --all) package || exit -1 tar czvf navit.tgz cov-int curl --form token=$COVERITY_TOKEN \ @@ -34,6 +35,7 @@ if [[ "${CIRCLE_PROJECT_USERNAME}" == "navit-gps" && "${CIRCLE_BRANCH}" == "trun else cmake ${cmake_opts} ../ || exit -1 make -j $(nproc --all) || exit -1 + make package || exit -1 fi if [[ "$CIRCLE_ARTIFACTS" != "" ]]; then diff --git a/ci/setup_common_requirements.sh b/ci/setup_common_requirements.sh index 9f15dd6b1..ad60a6625 100644 --- a/ci/setup_common_requirements.sh +++ b/ci/setup_common_requirements.sh @@ -1 +1 @@ -apt-get update && apt-get install -y wget unzip cmake build-essential gettext imagemagick +apt-get update && apt-get install -y wget unzip cmake build-essential gettext imagemagick util-linux git ssh diff --git a/ci/update_download_center.sh b/ci/update_download_center.sh new file mode 100644 index 000000000..cec11808d --- /dev/null +++ b/ci/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 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 ${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 ${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 |
