aboutsummaryrefslogtreecommitdiff
path: root/kvm-guest-image.yaml
blob: 22826af320e72e9cc61fd49c3c6a3ff7880581ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
- job:
    name: kvm-guest-image
    project-type: matrix
    defaults: global
    logrotate:
        daysToKeep: 30
        numToKeep: 30
    properties:
        - authorization:
            anonymous:
                - job-read
                - job-extended-read
            linaro:
                - job-read
                - job-extended-read
                - job-build
                - job-cancel
    disabled: false
    display-name: 'Linaro KVM guest image build'
    axes:
        - axis:
            type: slave
            name: label
            values:
                - docker-jessie-arm64
                - docker-jessie-armhf
    triggers:
        - timed: '@monthly'
    wrappers:
        - timestamps
        - matrix-tie-parent:
            node: master
    builders:
        - linaro-publish-token
        - shell: |
            #!/bin/bash

            set -ex

            trap cleanup_exit INT TERM EXIT

            cleanup_exit()
            {
                sudo umount /mnt || true
                sudo kpartx -dv kvm.raw || true
            }

            sudo apt-get update
            sudo apt-get -y install kpartx parted pixz qemu-utils python-pycurl

            arch=`dpkg-architecture -qDEB_HOST_ARCH`
            case "${arch}" in
              armhf)
              export ROOTFS_BUILD_URL="http://releases.linaro.org/debian/images/developer-armhf/15.12/linaro-jessie-developer-20151210-10.tar.gz"
                ;;
              arm64)
              export ROOTFS_BUILD_URL="http://releases.linaro.org/debian/images/developer-arm64/15.12/linaro-jessie-developer-20150325-10.tar.gz"
                ;;
            esac
            wget -nc --progress=dot -e dotbytes=2M ${ROOTFS_BUILD_URL} -O nano.tgz

            dd if=/dev/zero of=kvm.raw bs=2048 seek=1M count=0
            /sbin/parted --script kvm.raw mklabe gpt
            /sbin/parted --script kvm.raw mkpart p fat32 1 50
            /sbin/parted --script  -- kvm.raw mkpart p ext4 50 -0
            /sbin/parted --script kvm.raw set 1 boot

            for device in $(sudo kpartx -avs kvm.raw | cut -d' ' -f3); do
              partition=$(echo ${device} | cut -d'p' -f3)
              case "${partition}" in
                1)
                  sudo mkfs.vfat -F 32 /dev/mapper/${device}
                  ;;
                2)
                  sudo mkfs.ext4 /dev/mapper/${device}
                  sudo mount /dev/mapper/${device} /mnt/
                  sudo tar xaf nano.tgz -C /mnt --strip-components=1
                  cat << EOF | sudo tee /mnt/etc/network/interfaces.d/eth0
            auto lo
            iface lo inet loopback

            auto eth0
            iface eth0 inet dhcp
            EOF
                  sudo umount /mnt
                  ;;
              esac
            done

            sudo kpartx -dv kvm.raw
            qemu-img convert -f raw -O qcow2 kvm.raw kvm.qcow2
            time pixz kvm.qcow2

            # Publish to snapshots
            mkdir out; mv kvm.qcow2.xz out/kvm-${arch}.qcow2.xz
            test -d ${HOME}/bin || mkdir ${HOME}/bin
            wget https://git.linaro.org/ci/publishing-api.git/blob_plain/HEAD:/linaro-cp.py -O ${HOME}/bin/linaro-cp.py
            python ${HOME}/bin/linaro-cp.py --api_version 3 out ubuntu/images/kvm-guest/${BUILD_NUMBER}/${arch}
    publishers:
        - email:
            recipients: 'riku.voipio@linaro.org'