119 lines
4.1 KiB
JSON
119 lines
4.1 KiB
JSON
{
|
|
"variables": {
|
|
"name": "{{env `NAME`}}",
|
|
"squashfs_file": "{{env `NAME`}}.squashfs",
|
|
"initramfs_file": "{{env `NAME`}}.initramfs",
|
|
"linux_file": "{{env `NAME`}}.linux",
|
|
"compression_level": "{{env `COMPRESSION_LEVEL`}}",
|
|
"images": "{{env `IMAGES`}}",
|
|
"ci_job_id": "{{env `CI_JOB_ID`}}",
|
|
"ci_commit_sha": "{{env `CI_COMMIT_SHA`}}",
|
|
"ci_commit_tag": "{{env `CI_COMMIT_TAG`}}",
|
|
"ci_commit_ref_name": "{{env `CI_COMMIT_REF_NAME`}}",
|
|
"ci_commit_ref_slug": "{{env `CI_COMMIT_REF_SLUG`}}",
|
|
"ci_job_name": "{{env `CI_JOB_NAME`}}",
|
|
"ci_job_stage": "{{env `CI_JOB_STAGE`}}",
|
|
"ci_project_url": "{{env `CI_PROJECT_URL`}}",
|
|
"ci_pipeline_triggered": "{{env `PIPELINE_TRIGGERED`}}",
|
|
"ci_job_manual": "{{env `CI_JOB_MANUAL`}}"
|
|
},
|
|
"builders":
|
|
[
|
|
{
|
|
"type": "docker",
|
|
"image": "debian:stretch",
|
|
"discard": true,
|
|
"run_command": [
|
|
"-d",
|
|
"-i",
|
|
"-t",
|
|
"-v", "{{user `images`}}:/tmp/images",
|
|
"{{.Image}}",
|
|
"/bin/bash"
|
|
]
|
|
}
|
|
],
|
|
"provisioners": [
|
|
{
|
|
"type": "shell",
|
|
"inline": [ "mkdir -p /etc/initramfs-tools/scripts/local-premount/" ]
|
|
},
|
|
{
|
|
"type": "file",
|
|
"source": "initramfs/labsync",
|
|
"destination": "/etc/initramfs-tools/scripts/"
|
|
},
|
|
{
|
|
"type": "shell",
|
|
"inline": [
|
|
"echo \"LABSYNC_JOB_ID='{{user `ci_job_id`}}'\" >> /etc/environment",
|
|
"echo \"LABSYNC_COMMIT_SHA='{{user `ci_commit_sha`}}'\" >> /etc/environment",
|
|
"echo \"LABSYNC_COMMIT_TAG='{{user `ci_commit_tag`}}'\" >> /etc/environment",
|
|
"echo \"LABSYNC_COMMIT_REF_NAME='{{user `ci_commit_ref_name`}}'\" >> /etc/environment",
|
|
"echo \"LABSYNC_COMMIT_REF_SLUG='{{user `ci_commit_ref_slug`}}'\" >> /etc/environment",
|
|
"echo \"LABSYNC_PROJECT_URL='{{user `ci_project_url`}}'\" >> /etc/environment",
|
|
"sed -i 's#@@PROJECT_URL@@#{{user `ci_project_url`}}#' /etc/initramfs-tools/scripts/labsync"
|
|
]
|
|
},
|
|
{
|
|
"type": "file",
|
|
"source": "initramfs/labsync-prereqs",
|
|
"destination": "/etc/initramfs-tools/scripts/local-premount/"
|
|
},
|
|
{
|
|
"type": "shell",
|
|
"inline": [
|
|
"set -x",
|
|
"apt-get update",
|
|
"apt-get -y dist-upgrade",
|
|
"rmdir /boot && ln -s /usr/local/boot /boot",
|
|
"apt-get -y install initramfs-tools || true",
|
|
"echo squashfs >> /etc/initramfs-tools/modules",
|
|
"echo overlay >> /etc/initramfs-tools/modules",
|
|
"echo 'RESUME=none' > /etc/initramfs-tools/conf.d/resume",
|
|
"mkdir /usr/local/boot",
|
|
"apt-get -f -y install aria2 linux-image-amd64 lvm2",
|
|
"cp $(find /boot/ -name 'initrd.img-*' | sort -V | tail -n 1) '/tmp/images/{{user `initramfs_file`}}'",
|
|
"cp $(find /boot/ -name 'vmlinuz-*' | sort -V | tail -n 1) '/tmp/images/{{user `linux_file`}}'"
|
|
]
|
|
},
|
|
{
|
|
"type": "shell",
|
|
"inline": [ "apt-get -y install openssh-server python" ]
|
|
},
|
|
{
|
|
"type": "ansible",
|
|
"playbook_file": "ansible/playbook.yml",
|
|
"user": "root"
|
|
},
|
|
{
|
|
"type": "shell",
|
|
"inline": [ "rm /boot && mkdir /boot" ]
|
|
},
|
|
{
|
|
"type": "shell",
|
|
"inline": [
|
|
"set -x",
|
|
"apt-get -y install squashfs-tools",
|
|
"dpkg -L squashfs-tools liblzo2-2 | while read f; do [ -f \"$f\" ] && echo \"$f\"; done > /tmp/ignore_files",
|
|
"echo '/etc/resolv.conf' >> /tmp/ignore_files",
|
|
"echo '/etc/hostname' >> /tmp/ignore_files",
|
|
"echo '/etc/hosts' >> /tmp/ignore_files",
|
|
"mkdir -p /tmp/extra/tmp /tmp/extra/proc /tmp/extra/sys /tmp/extra/etc"
|
|
]
|
|
},
|
|
{
|
|
"type": "file",
|
|
"source": "hosts",
|
|
"destination": "/tmp/extra/etc/hosts"
|
|
},
|
|
{
|
|
"type": "shell",
|
|
"inline": [
|
|
"if [ -e '/tmp/images/{{user `squashfs_file`}}' ]; then rm '/tmp/images/{{user `squashfs_file`}}'; fi",
|
|
"squashfs_content=\"$(find / -mindepth 1 -maxdepth 1 | grep -vE '^/(proc|sys|tmp|[.]dockerenv|packer-files)$')\"",
|
|
"mksquashfs $squashfs_content /tmp/extra/* '/tmp/images/{{user `squashfs_file`}}' -comp lzo -Xcompression-level {{user `compression_level`}} -ef /tmp/ignore_files"
|
|
]
|
|
}
|
|
]
|
|
}
|