- job: name: leg-cloud-image-centos project-type: freestyle defaults: global properties: - authorization: anonymous: - job-read - job-extended-read linaro: - job-read - job-extended-read - job-build - job-cancel - build-discarder: days-to-keep: 30 num-to-keep: 30 disabled: false node: docker-centos7-aarch64 display-name: 'LEG Cloud image CentOS' wrappers: - timestamps builders: - linaro-publish-token: host: builds.96boards.org - shell: | #!/bin/bash export image_name=centos7-cloud-image set -ex trap cleanup_exit INT TERM EXIT cleanup_exit() { cd ${WORKSPACE} sudo virsh destroy ${image_name} || true sudo virsh undefine ${image_name} || true sudo rm -f /var/lib/libvirt/images/${image_name}.qcow2 ${image_name}.qcow2 rm -rf out } sudo yum install -y qemu-img virt-install libguestfs-tools-c sudo virsh pool-list --all sudo virsh net-list --all cat > centos7-aarch64.ks << EOF reboot eula --agreed text firstboot --disable ignoredisk --only-use=vda keyboard --vckeymap=us --xlayouts='us' lang en_GB.UTF-8 network --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto --hostname=localhost.localdomain repo --name=os --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ repo --name=extras --baseurl=http://mirror.centos.org/altarch/7/extras/aarch64/ repo --name=updates --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ rootpw --plaintext root user --name centos --plaintext --password centos --homedir /home/centos --groups wheel timezone Europe/Warsaw --isUtc bootloader --boot-drive=vda autopart --type=plain clearpart --all --initlabel --drives=vda %packages @core cloud-init chrony nfs-utils rsync tar yum-utils dracut-config-generic dracut-norescue -aic94xx-firmware -alsa-firmware -alsa-lib -alsa-tools-firmware -iprutils -ivtv-firmware -iwl100-firmware -iwl1000-firmware -iwl105-firmware -iwl135-firmware -iwl2000-firmware -iwl2030-firmware -iwl3160-firmware -iwl3945-firmware -iwl4965-firmware -iwl5000-firmware -iwl5150-firmware -iwl6000-firmware -iwl6000g2a-firmware -iwl6000g2b-firmware -iwl6050-firmware -iwl7260-firmware %end %post # Needed for install, not so much for cloud. yum -C -y remove firewalld --setopt="clean_requirements_on_remove=1" yum -C -y remove avahi\* Network\* cat > /etc/sysconfig/network << EO NETWORKING=yes NOZEROCONF=yes EO # Ensure we're not backing in a mac addr. cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EO DEVICE="eth0" BOOTPROTO="dhcp" ONBOOT="yes" TYPE="Ethernet" USERCTL="yes" PEERDNS="yes" IPV6INIT="no" PERSISTENT_DHCLIENT="1" EO # Let mirrors know it's cloud echo 'genclo' > /etc/yum/vars/infra # Fix selinux context echo "Fixing SELinux contexts." touch /var/log/cron touch /var/log/boot.log mkdir -p /var/cache/yum /usr/sbin/fixfiles -R -a restore # make sure firstboot doesn't start echo "RUN_FIRSTBOOT=NO" > /etc/sysconfig/firstboot # install updates (including kernel) from Linaro overlay curl http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo > /etc/yum.repos.d/linaro-overlay.repo yum update -y --nogpgcheck # make sure that resulting initramfs will have virtio storage drivers echo 'add_drivers+="virtio-blk virtio-scsi"' > /etc/dracut.conf.d/add-virtio-modules.conf dracut -f /boot/initramfs-`rpm -qa kernel|sed -e "s/kernel-//g"`.img `rpm -qa kernel|sed -e "s/kernel-//g"` %end EOF sudo virt-install \ --name ${image_name} \ --initrd-inject centos7-aarch64.ks \ --extra-args "ks=file:/centos7-aarch64.ks" \ --disk=pool=default,size=10,format=qcow2,bus=virtio \ --memory 2048 \ --location http://mirror.centos.org/altarch/7/os/aarch64/ \ --noreboot set +ex while [ true ]; do sleep 1 vm_running=$(sudo virsh list --name --state-running | grep "^${image_name}" | wc -l) [ "${vm_running}" -eq "0" ] && break done set -ex sudo virsh list --all sudo virsh pool-list --all sudo virsh net-list --all mkdir out mv centos7-aarch64.ks out/ sudo cp -a /var/lib/libvirt/images/${image_name}.qcow2 . sudo qemu-img convert -c -O qcow2 ${image_name}.qcow2 out/${image_name}.qcow2 # extract kernel and initramfs from image # --unversioned-names may be handy to get vmlinuz/initrd.img names if needed sudo LIBGUESTFS_BACKEND=direct virt-copy-out -a ${image_name}.qcow2 /boot/ . sudo cp -a boot/*-reference.*.aarch64* out/ sudo chown -R buildslave:buildslave out # Publish test -d ${HOME}/bin || mkdir ${HOME}/bin wget -q https://git.linaro.org/ci/publishing-api.git/blob_plain/HEAD:/linaro-cp.py -O ${HOME}/bin/linaro-cp.py time python ${HOME}/bin/linaro-cp.py \ --server ${PUBLISH_SERVER} \ --link-latest \ out snapshots/developer-cloud/centos/cloud-image/${BUILD_NUMBER} publishers: - email: recipients: 'fathi.boudra@linaro.org marcin.juszkiewicz@linaro.org'