image_builder: try fix with send big string as argument

Signed-off-by: Artem Smirnov <urpylka@gmail.com>
This commit is contained in:
urpylka
2018-04-24 22:34:20 +03:00
parent 7f7276e34a
commit a4841de17e
4 changed files with 74 additions and 70 deletions

View File

@@ -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')

View File

@@ -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 ...

36
image_builder/jenkinsfile Normal file
View File

@@ -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)\""
}
}
}
}

View File

@@ -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}\'"
}
}
}
}