diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d9ab7f9..e3f622d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -76,8 +76,8 @@ test_acceptance_prebuilt_raspberrypi: - aws s3 cp s3://mender-gitlab-tmp-storage/$CI_PROJECT_NAME/$CI_PIPELINE_ID/deploy.tar.gz deploy.tar.gz - tar xzf deploy.tar.gz # Extract converted Raspbian artifacts - - unxz deploy/raspberrypi3-${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}-mender.img.xz - - ./scripts/test/run-tests.sh --no-pull --prebuilt-image raspberrypi3 ${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION} + - unxz deploy/${RASPBIAN_NAME}-raspberrypi3-mender.img.xz + - ./scripts/test/run-tests.sh --no-pull --prebuilt-image raspberrypi ${RASPBIAN_NAME}-raspberrypi3-mender test_acceptance_qemux86_64: <<: *test_acceptance @@ -148,12 +148,12 @@ publish:s3: - export AWS_ACCESS_KEY_ID=$PUBLISH_AWS_ACCESS_KEY_ID - export AWS_SECRET_ACCESS_KEY=$PUBLISH_AWS_SECRET_ACCESS_KEY - echo "Publishing ${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}.img.xz version to S3" - - aws s3 cp deploy/raspberrypi3-${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}-mender.img.xz + - aws s3 cp deploy/${RASPBIAN_NAME}-raspberrypi3-mender.img.xz s3://$S3_BUCKET_NAME/${RASPBIAN_NAME}/arm/${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}.img.xz - aws s3api put-object-acl --acl public-read --bucket $S3_BUCKET_NAME --key ${RASPBIAN_NAME}/arm/${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}.img.xz - echo "Publishing ${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}.mender version to S3" - - aws s3 cp deploy/raspberrypi3-${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}.mender + - aws s3 cp deploy/${RASPBIAN_NAME}-raspberrypi3--mender.mender s3://$S3_BUCKET_NAME/${RASPBIAN_NAME}/arm/${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}.mender - aws s3api put-object-acl --acl public-read --bucket $S3_BUCKET_NAME --key ${RASPBIAN_NAME}/arm/${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}.mender diff --git a/configs/mender_convert_config b/configs/mender_convert_config index cb4a1b1..faf273a 100644 --- a/configs/mender_convert_config +++ b/configs/mender_convert_config @@ -180,8 +180,9 @@ source configs/mender_grub_config mender_create_artifact() { local -r device_type="${1}" local -r artifact_name="${2}" + local -r image_name="${3}" - mender_artifact=deploy/${device_type}-${artifact_name}.mender + mender_artifact=deploy/${image_name}.mender log_info "Writing Mender artifact to: ${mender_artifact}" log_info "This can take up to 20 minutes depending on which compression method is used" diff --git a/mender-convert-package b/mender-convert-package index f5faf2f..1f1bd28 100755 --- a/mender-convert-package +++ b/mender-convert-package @@ -138,7 +138,12 @@ rootfs_part_sectors=$(disk_align_sectors ${rootfs_part_sectors} ${MENDER_PARTITI device_type=$(cat work/rootfs/data/mender/device_type | sed 's/[^=]*=//') artifact_name=$(cat work/rootfs/etc/mender/artifact_info | sed 's/[^=]*=//') -image_name="${device_type}-${artifact_name}" +# Get the name from the input disk_image +temp_img_name=$(basename "$disk_image") + +# Strip the image suffix from temp_img_name and set the original image name as +# the output image name +image_name="${temp_img_name%.*}-${device_type}-mender" actual_rootfs_size=$(sudo du -s --block-size=512 work/rootfs | cut -f 1) @@ -190,11 +195,11 @@ disk_create_file_system_from_folder "work/rootfs/" "work/rootfs.img" \ log_info "Copying root filesystem image to deploy directory" run_and_log_cmd "cp --sparse=always work/rootfs.img deploy/${image_name}.${image_fs_type}" -mender_create_artifact "${device_type}" "${artifact_name}" +mender_create_artifact "${device_type}" "${artifact_name}" "${image_name}" log_info "Creating Mender compatible disk-image" -img_path=deploy/${image_name}-mender.img +img_path="deploy/${image_name}.img" log_info "Total disk size: $(disk_sectors_to_mb ${disk_image_total_sectors}) MiB" log_info " Boot partition $(disk_sectors_to_mb ${boot_part_sectors}) MiB" diff --git a/scripts/test/test-utils.sh b/scripts/test/test-utils.sh index f26835a..2e93a5b 100644 --- a/scripts/test/test-utils.sh +++ b/scripts/test/test-utils.sh @@ -8,27 +8,27 @@ convert_and_test() { device_type=$1 artifact_name=$2 image_url=$3 - image_name=$4 - image_name_compressed=$5 + image_file=$4 + image_file_compressed=$5 config=$6 # Optional wget --progress=dot:giga -N ${image_url} -P input/ - echo "Extracting: ${image_name_compressed}" - case "${image_name_compressed}" in + echo "Extracting: ${image_file_compressed}" + case "${image_file_compressed}" in *.gz) - gunzip -f input/${image_name_compressed} + gunzip -f input/${image_file_compressed} ;; *.zip) cd input - unzip -o ${image_name_compressed} + unzip -o ${image_file_compressed} cd - ;; *.xz) - xz -d -f input/${image_name_compressed} + xz -d -f input/${image_file_compressed} ;; *) - echo "Unknown image type: ${image_name_compressed}" + echo "Unknown image type: ${image_file_compressed}" exit 1 ;; esac @@ -53,20 +53,24 @@ convert_and_test() { fi MENDER_ARTIFACT_NAME=${artifact_name} ./docker-mender-convert \ - --disk-image input/${image_name} \ + --disk-image input/${image_file} \ ${MENDER_CONVERT_EXTRA_ARGS} local ret=0 - run_tests "${device_type}" "${artifact_name}" || ret=$? - rm -f deploy/${device_type}-${artifact_name}* + # The output image name after conversion + image_name="${image_file%.img}-${device_type}-mender" + + run_tests "${device_type}" "$image_name" || ret=$? + + rm -f deploy/${image_file}* return $ret } run_tests() { device_type=$1 - artifact_name=$2 + converted_image_name=$2 shift 2 pytest_args_extra=$@ @@ -76,30 +80,34 @@ run_tests() { # Need to decompress images built with MENDER_COMPRESS_DISK_IMAGE=gzip before # running tests. - if [ -f deploy/${device_type}-${artifact_name}-mender.img.gz ]; then + if [ -f "deploy/${converted_image_name}.img.gz" ]; then # sudo is needed because the image is created using docker-mender-convert # which sets root permissions on the image - sudo gunzip --force deploy/${device_type}-${artifact_name}-mender.img.gz + sudo gunzip --force "deploy/${converted_image_name}.img.gz" fi # MEN-3051: Rename the files back to .sdimg, as the sdimg extension has meaning # in the test-infrastructure. for file in ${MENDER_CONVERT_DIR}/deploy/*.img; do - mv $file "${file%-mender.img}.sdimg" + mv $file "${file%.img}.sdimg" done cd ${WORKSPACE}/mender-image-tests + echo "Converted image name: " + echo "$converted_image_name" + python3 -m pytest --verbose \ --junit-xml="${MENDER_CONVERT_DIR}/results_${device_type}.xml" \ ${html_report_args} \ --test-conversion \ - --test-variables="${MENDER_CONVERT_DIR}/deploy/${device_type}-${artifact_name}.cfg" \ + --test-variables="${MENDER_CONVERT_DIR}/deploy/${converted_image_name}.cfg" \ --board-type="${device_type}" \ - --mender-image=${device_type}-${artifact_name}.sdimg \ + --mender-image="${converted_image_name}.sdimg" \ --sdimg-location="${MENDER_CONVERT_DIR}/deploy" \ tests \ ${pytest_args_extra} + exitcode=$? cd -