From 44fa719103af70721ac58775de540fe4a0a1fefa Mon Sep 17 00:00:00 2001 From: Kristian Amlie Date: Mon, 9 Dec 2019 14:58:32 +0100 Subject: [PATCH] Add conversion and publication stages for Raspbian images. Changelog: None Signed-off-by: Kristian Amlie --- .gitlab-ci.yml | 58 ++++++++++++++++++++- configs/images/raspberrypi3_raspbian_config | 14 +++++ docker-build | 2 +- 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 configs/images/raspberrypi3_raspbian_config diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a6ab48f..a6271e2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,6 +2,11 @@ image: docker:git variables: DOCKER_REPOSITORY: mendersoftware/mender-convert + S3_BUCKET_NAME: mender-convert-images + MENDER_ARTIFACT_VERSION: master + MENDER_CLIENT_VERSION: master + RASPBIAN_URL: http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-09-30/2019-09-26-raspbian-buster-lite.zip + RASPBIAN_NAME: 2019-09-26-raspbian-buster-lite include: - project: 'Northern.tech/Mender/mendertesting' @@ -13,13 +18,15 @@ stages: - test - build - test_acceptance + - convert + - publish build: stage: build services: - docker:dind script: - - IMAGE_NAME=$DOCKER_REPOSITORY:pr ./docker-build + - IMAGE_NAME=$DOCKER_REPOSITORY:pr ./docker-build --build-arg MENDER_ARTIFACT_VERSION=${MENDER_ARTIFACT_VERSION} - docker save $DOCKER_REPOSITORY:pr > image.tar artifacts: expire_in: 2w @@ -57,3 +64,52 @@ test_acceptance: - report_*.html reports: junit: results_*.xml + +convert_raspbian: + stage: convert + image: teracy/ubuntu:18.04-dind-18.09.9 + services: + - docker:18-dind + tags: + - mender-qa-slave + dependencies: + - build + before_script: + - apt update && apt install -yy bash wget unzip + + - export IMAGE_NAME=$DOCKER_REPOSITORY:pr + - docker load -i image.tar + + - wget -q ${RASPBIAN_URL} + - unzip ${RASPBIAN_NAME}.zip + + script: + - echo "MENDER_CLIENT_VERSION=${MENDER_CLIENT_VERSION}" > mender_client_version_config + - env MENDER_ARTIFACT_NAME=mender-raspbian + ./docker-mender-convert -d ${RASPBIAN_NAME}.img + -c configs/raspberrypi3_config + -c configs/images/raspberrypi3_raspbian_config + -c mender_client_version_config + - mv deploy/*-mender-raspbian.sdimg.xz deploy/${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}.img.xz + + after_script: + - mkdir -p output + - mv deploy/*.img.xz output + + artifacts: + paths: + - output + expire_in: 2 weeks + +publish:s3: + when: manual + stage: publish + image: debian:buster + before_script: + - apt update && apt install -yyq awscli + script: + - echo "Publishing ${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}.img.xz version to S3" + - aws s3 cp output/${RASPBIAN_NAME}-mender-${MENDER_CLIENT_VERSION}.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 diff --git a/configs/images/raspberrypi3_raspbian_config b/configs/images/raspberrypi3_raspbian_config new file mode 100644 index 0000000..f8d42d8 --- /dev/null +++ b/configs/images/raspberrypi3_raspbian_config @@ -0,0 +1,14 @@ +# Real life SD cards typically have less than they advertise. First off, they +# often use a base of 1000 instead of 1024, and even then they are often smaller +# than advertised. The number below is based on a conservative target of 3.9GB +# (that's mathematical GB, base 1000), converted to MiB, rounding down. +MENDER_STORAGE_TOTAL_SIZE_MB=3719 + +# Use all there is, which gets us almost, but not quite, to 500MiB free space +# (about 480MiB at the time of writing). +IMAGE_ROOTFS_SIZE=-1 +IMAGE_ROOTFS_EXTRA_SPACE=0 +IMAGE_OVERHEAD_FACTOR=1.0 + +# Best compression there is! +MENDER_COMPRESS_DISK_IMAGE=lzma diff --git a/docker-build b/docker-build index e0b5e03..8aa5f25 100755 --- a/docker-build +++ b/docker-build @@ -18,4 +18,4 @@ set -e IMAGE_NAME=${IMAGE_NAME:-mender-convert} -eval docker build . -t ${IMAGE_NAME} +eval docker build . -t ${IMAGE_NAME} "$@"