diff --git a/image/Jenkinsfile-build b/image/Jenkinsfile-build new file mode 100644 index 00000000..46bc256f --- /dev/null +++ b/image/Jenkinsfile-build @@ -0,0 +1,57 @@ +pipeline { + agent any + parameters { + string(name: 'IMAGE_NAME', defaultValue: 'CLEVER-JENKINS-FILE.img', description: 'IMAGE_NAME') + //string(name: 'WORKSPACE', defaultValue: '', description: 'WORKSPACE') + } + environment { + BUILD_DIRECTORY = '/home/pi/temp' + PREFIX_PATH = '/mnt' + DEV_BOOT = '/dev/disk/by-uuid/CDD4-B453' + DEV_ROOTFS = '/dev/disk/by-uuid/72bfc10d-73ec-4d9e-a54a-1cc507ee7ed2' + } + stages { + stage('Get image') { + environment { + RPI_DONWLOAD_URL = 'https://downloads.raspberrypi.org/raspbian_lite_latest' + RPI_ZIP_NAME = 'raspbian_lite_latest.zip' + RPI_IMAGE_NAME = '2017-11-29-raspbian-stretch-lite.img' + } + steps { + sh "$WORKSPACE/image/image-config.sh get_image $BUILD_DIRECTORY $RPI_ZIP_NAME $RPI_DONWLOAD_URL $RPI_IMAGE_NAME ${params.IMAGE_NAME}" + } + } + stage('Resize FS') { + environment { + SIZE = '7G' + } + steps { + sh "$WORKSPACE/image/image-config.sh resize_fs $SIZE $BUILD_DIRECTORY ${params.IMAGE_NAME} $DEV_ROOTFS" + } + } + stage('Configure interfaces') { + environment { + EXECUTE_FILE = 'iface.sh' + } + steps { + sh "$WORKSPACE/image/image-config.sh execute $BUILD_DIRECTORY/${params.IMAGE_NAME} $PREFIX_PATH $DEV_ROOTFS $DEV_BOOT $WORKSPACE/image/$EXECUTE_FILE" + } + } + stage('Install Apps') { + environment { + EXECUTE_FILE = 'apps.sh' + } + steps { + sh "$WORKSPACE/image/image-config.sh execute $BUILD_DIRECTORY/${params.IMAGE_NAME} $PREFIX_PATH $DEV_ROOTFS $DEV_BOOT $WORKSPACE/image/$EXECUTE_FILE" + } + } + stage('Install ROS') { + environment { + EXECUTE_FILE = 'ros.sh' + } + steps { + sh "$WORKSPACE/image/image-config.sh execute $BUILD_DIRECTORY/${params.IMAGE_NAME} $PREFIX_PATH $DEV_ROOTFS $DEV_BOOT $WORKSPACE/image/$EXECUTE_FILE" + } + } + } +} diff --git a/image/Jenkinsfile-release b/image/Jenkinsfile-release new file mode 100644 index 00000000..7305b75c --- /dev/null +++ b/image/Jenkinsfile-release @@ -0,0 +1,35 @@ +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: '', description: 'GWBT_TRIGGER') + booleanParam(name: 'ONLY_PUBLISH', defaultValue: false, description: 'ONLY PUBLISH') + //string(name: 'WORKSPACE', defaultValue: '', description: 'WORKSPACE') + } + environment { + BUILD_DIRECTORY = '/home/pi/temp' + } + 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: '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 = 'coex-ci.conf' + } + steps { + sh "$WORKSPACE/image/image-config.sh publish_image $BUILD_DIRECTORY ${params.IMAGE_NAME} $WORKSPACE $CONFIG_FILE ${params.GWBT_RELEASE_ID} ${params.GWBT_RELEASE_BODY}" + } + } + } +}