From a4841de17e91e0a06e29af4a4a7ead13f0e30682 Mon Sep 17 00:00:00 2001 From: urpylka Date: Tue, 24 Apr 2018 22:34:20 +0300 Subject: [PATCH] image_builder: try fix with send big string as argument Signed-off-by: Artem Smirnov --- .../{jenkinsfile-build => build.Jenkinsfile} | 2 +- image_builder/image_config.sh | 67 ++++++++++--------- image_builder/jenkinsfile | 36 ++++++++++ image_builder/jenkinsfile-release | 39 ----------- 4 files changed, 74 insertions(+), 70 deletions(-) rename image_builder/{jenkinsfile-build => build.Jenkinsfile} (96%) create mode 100644 image_builder/jenkinsfile delete mode 100644 image_builder/jenkinsfile-release diff --git a/image_builder/jenkinsfile-build b/image_builder/build.Jenkinsfile similarity index 96% rename from image_builder/jenkinsfile-build rename to image_builder/build.Jenkinsfile index e11de1d3..4996a5ee 100644 --- a/image_builder/jenkinsfile-build +++ b/image_builder/build.Jenkinsfile @@ -2,7 +2,7 @@ pipeline { agent any parameters { string(name: 'IMAGE_NAME', defaultValue: 'clever_noname.img', description: 'Output image file name') - string(name: 'GWBT_RELEASE_TAG_NAME', defaultValue: 'master', description: 'Release tag name') + string(name: 'GWBT_REF', defaultValue: 'master', description: 'Checkout ref-param') string(name: 'IMAGE_VERSION', defaultValue: 'no_version', description: 'Image version') string(name: 'BUILD_DIR', defaultValue: '/mnt/hdd_builder/workspace', description: 'Build workspace') diff --git a/image_builder/image_config.sh b/image_builder/image_config.sh index dc0abd16..14fcc3da 100755 --- a/image_builder/image_config.sh +++ b/image_builder/image_config.sh @@ -79,34 +79,6 @@ resize_fs() { set -e } -publish_image() { - -# STATIC FUNCTION -# TEMPLATE: publish_image_bash $BUILD_DIR $IMAGE_NAME $YA_SCRIPT $CONFIG_FILE $RELEASE_ID $RELEASE_BODY - -# https://developer.github.com/v3/repos/releases/ -#RELEASE_BODY="### Changelog\n* Add /boot/cmdline.txt net.ifnames=0 https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/\n* Updated cophelper\n* Installed copstat" - - echo 'Zip image' - if [ ! -e "$1/$2.zip" ]; - then cd $1 && zip $2.zip $2 - fi - - echo 'Upload image' \ - && local IMAGE_LINK=$($3 $4 $1/$2.zip) - - echo 'Meashuring size of zip-image' \ - && local IMAGE_SIZE=$(du -sh $1/$2.zip | awk '{ print $1 }') - - echo 'Post message to GH' - local NEW_RELEASE_BODY="### Download\n* [$2.zip]($IMAGE_LINK) ($IMAGE_SIZE)\n\n$6" - local DATA="{ \"body\":\"$NEW_RELEASE_BODY\" }" - local GH_LOGIN=$(cat $4 | jq '.github.login' -r) - local GH_PASS=$(cat $4 | jq '.github.password' -r) - local GH_URL=$(cat $4 | jq '.github.url' -r) - curl -d "$(echo $DATA)" -u "$GH_LOGIN:$GH_PASS" --request PATCH $GH_URL$5 -} - burn_image() { # STATIC FUNCTION @@ -341,6 +313,41 @@ EOF # service docker start # https://forums.docker.com/t/cannot-connect-to-the-docker-daemon-is-the-docker-daemon-running-on-this-host/8925/17 +publish_image() { + +# STATIC FUNCTION +# TEMPLATE: publish_image_bash $BUILD_DIR $IMAGE_NAME $YA_SCRIPT $CONFIG_FILE $RELEASE_ID $RELEASE_BODY + +# https://developer.github.com/v3/repos/releases/ +#RELEASE_BODY="### Changelog\n* Add /boot/cmdline.txt net.ifnames=0 https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/\n* Updated cophelper\n* Installed copstat" + + echo -e "\033[0;31m\033[1m$(date) | Zip image\033[0m\033[0m" + if [ ! -e "$1/$2.zip" ]; + then + cd $1 && zip $2.zip $2 + echo -e "\033[0;31m\033[1m$(date) | Zipping complete!\033[0m\033[0m" + else + echo -e "\033[0;31m\033[1m$(date) | Zip-archive already created\033[0m\033[0m" + fi + + echo -e "\033[0;31m\033[1m$(date) | Upload image\033[0m\033[0m" + local IMAGE_LINK=$($3 $4 $1/$2.zip) + echo -e "\033[0;31m\033[1m$(date) | Upload copmlete!\033[0m\033[0m" + + + echo -e "\033[0;31m\033[1m$(date) | Meashure size of zip-image\033[0m\033[0m" + local IMAGE_SIZE=$(du -sh $1/$2.zip | awk '{ print $1 }') + echo -e "\033[0;31m\033[1m$(date) | Meashuring copmlete!\033[0m\033[0m" + + echo -e "\033[0;31m\033[1m$(date) | Post message to GH\033[0m\033[0m" + local NEW_RELEASE_BODY="### Download\n* [$2.zip]($IMAGE_LINK) ($IMAGE_SIZE)\n\n$(echo $6)" + local DATA="{ \"body\":\"$NEW_RELEASE_BODY\" }" + local GH_LOGIN=$(cat $4 | jq '.github.login' -r) + local GH_PASS=$(cat $4 | jq '.github.password' -r) + local GH_URL=$(cat $4 | jq '.github.url' -r) + curl -d "$DATA" -u "$GH_LOGIN:$GH_PASS" --request PATCH $GH_URL$5 + echo -e "\033[0;31m\033[1m$(date) | Post message to GH copmlete!\033[0m\033[0m" +} if [ $(whoami) != "root" ]; then echo "" \ @@ -360,9 +367,9 @@ echo "\$5: $5" echo "\$6: $6" echo "\$7: $7" - # test_docker # install_docker +# burn_image case "$1" in mount_system) @@ -379,7 +386,7 @@ case "$1" in publish_image) # publish_image $BUILD_DIR $IMAGE_NAME $YA_SCRIPT $CONFIG_FILE $RELEASE_ID $RELEASE_BODY - publish_image $2 $3 $4 $5 $6 $7;; + publish_image $2 $3 $4 $5 $6 "$7";; execute) # execute $IMAGE $MOUNT_POINT $EXECUTE_FILE ... diff --git a/image_builder/jenkinsfile b/image_builder/jenkinsfile new file mode 100644 index 00000000..6eab29e6 --- /dev/null +++ b/image_builder/jenkinsfile @@ -0,0 +1,36 @@ +pipeline { + agent any + parameters { + string(name: 'GWBT_REF', defaultValue: "master") + string(name: 'GWBT_URL', defaultValue: "https://github.com/CopterExpress/clever.git") + string(name: 'GWBT_FILE', defaultValue: "") + string(name: 'IMAGE_NAME', defaultValue: "\$(cat ${GWBT_FILE} | jq '.repository.name' -r)_${params.GWBT_REF}_\$(cat ${GWBT_FILE} | jq '.release.published_at' -r).img") + string(name: 'GWBT_EVENT', defaultValue: 'release') + booleanParam(name: 'ONLY_PUBLISH', defaultValue: false, description: 'ONLY PUBLISH') + string(name: 'BUILD_DIR', defaultValue: '/mnt/hdd_builder/workspace', description: 'Build workspace') + } + environment { + DEBIAN_FRONTEND = 'noninteractive' + LANG = 'C.UTF-8' + LC_ALL = 'C.UTF-8' + } + stages { + stage('Build image') { + when { not { expression { return params.ONLY_PUBLISH } } } + steps { + build job: 'CopterExpress-clever-build', parameters: [[$class: 'StringParameterValue', name: 'IMAGE_NAME', value: "${params.IMAGE_NAME}"], [$class: 'StringParameterValue', name: 'IMAGE_VERSION', value: "${params.GWBT_REF}"], [$class: 'StringParameterValue', name: 'GWBT_REF', value: "${params.GWBT_REF}"], [$class: 'StringParameterValue', name: 'GWBT_URL', value: "${params.GWBT_URL}"]] + } + } + stage('Publish image') { + when { environment name: 'GWBT_EVENT', value: 'release' } + environment { + CONFIG_FILE = "${params.BUILD_DIR}/coex-ci.json" + YA_SCRIPT = "$WORKSPACE/image_builder/yadisk.py" + } + steps { + //sh "$WORKSPACE/image_builder/image_config.sh publish_image_jenkins ${params.BUILD_DIR} ${params.IMAGE_NAME} ${YA_SCRIPT} ${CONFIG_FILE} ${params.GWBT_FILE}" + sh "$WORKSPACE/image_builder/image_config.sh publish_image ${params.BUILD_DIR} ${params.IMAGE_NAME} ${YA_SCRIPT} ${CONFIG_FILE} \$(cat ${params.GWBT_FILE} | jq '.release.id' -r) \"\$(cat ${params.GWBT_FILE} | jq '.release.body' | sed 's/\"//' | rev | sed 's/\"//' | rev)\"" + } + } + } +} diff --git a/image_builder/jenkinsfile-release b/image_builder/jenkinsfile-release deleted file mode 100644 index 5f09a9d0..00000000 --- a/image_builder/jenkinsfile-release +++ /dev/null @@ -1,39 +0,0 @@ -pipeline { - agent any - parameters { - //string(name: 'GWBT_REPO_NAME', defaultValue: 'master', description: 'GWBT_REPO_NAME') - //string(name: 'GWBT_RELEASE_TAG_NAME', defaultValue: 'master', description: 'REPO') - //string(name: 'GWBT_RELEASE_PUBLISHED_AT', defaultValue: 'master', description: 'GWBT_RELEASE_PUBLISHED_AT') - string(name: 'GWBT_RELEASE_ID', defaultValue: '', description: 'GWBT_RELEASE_ID') - string(name: 'GWBT_RELEASE_BODY', defaultValue: '', description: 'GWBT_RELEASE_BODY') - string(name: 'IMAGE_NAME', defaultValue: "${params.GWBT_REPO_NAME}_${params.GWBT_RELEASE_TAG_NAME}_${params.GWBT_RELEASE_PUBLISHED_AT}.img", description: 'IMAGE_NAME') - string(name: 'GWBT_TRIGGER', defaultValue: 'release', description: 'GWBT_TRIGGER') - booleanParam(name: 'ONLY_PUBLISH', defaultValue: false, description: 'ONLY PUBLISH') - - string(name: 'BUILD_DIR', defaultValue: '/mnt/hdd_builder/workspace', description: 'Build workspace') - } - environment { - DEBIAN_FRONTEND = 'noninteractive' - LANG = 'C.UTF-8' - LC_ALL = 'C.UTF-8' - } - stages { - stage('Build image') { - when { not { expression { return params.ONLY_PUBLISH } } } - steps { - build job: 'CopterExpress-clever-build', parameters: [[$class: 'StringParameterValue', name: 'IMAGE_NAME', value: "${params.IMAGE_NAME}"], [$class: 'StringParameterValue', name: 'IMAGE_VERSION', value: "${params.GWBT_RELEASE_TAG_NAME}"], [$class: 'StringParameterValue', name: 'GWBT_RELEASE_TAG_NAME', value: "${params.GWBT_RELEASE_TAG_NAME}"]] - sh "echo ${params.IMAGE_NAME}" - } - } - stage('Publish image') { - when { environment name: 'GWBT_TRIGGER', value: 'release' } - environment { - CONFIG_FILE = "${params.BUILD_DIR}/coex-ci.json" - YA_SCRIPT = "$WORKSPACE/image_builder/yadisk.py" - } - steps { - sh "$WORKSPACE/image_builder/image_config.sh publish_image ${params.BUILD_DIR} ${params.IMAGE_NAME} $YA_SCRIPT $CONFIG_FILE ${params.GWBT_RELEASE_ID} \'${params.GWBT_RELEASE_BODY}\'" - } - } - } -}