variables: ci_commit_ref_name: '{{env `CI_COMMIT_REF_NAME`}}' ci_commit_ref_slug: '{{env `CI_COMMIT_REF_SLUG`}}' ci_commit_sha: '{{env `CI_COMMIT_SHA`}}' ci_commit_tag: '{{env `CI_COMMIT_TAG`}}' ci_job_id: '{{env `CI_JOB_ID`}}' ci_job_manual: '{{env `CI_JOB_MANUAL`}}' ci_job_name: '{{env `CI_JOB_NAME`}}' ci_job_stage: '{{env `CI_JOB_STAGE`}}' ci_pipeline_triggered: '{{env `PIPELINE_TRIGGERED`}}' ci_project_url: '{{env `CI_PROJECT_URL`}}' compression_level: '{{env `COMPRESSION_LEVEL`}}' dpkg_list_file: '{{env `NAME`}}.dpkg-list' images: '{{env `IMAGES`}}' initramfs_file: '{{env `NAME`}}.initramfs' linux_file: '{{env `NAME`}}.linux' name: '{{env `NAME`}}' squashfs_file: '{{env `NAME`}}.squashfs' torrent_file: '{{env `NAME`}}.torrent' builders: - discard: true image: debian:bookworm type: docker volumes: '{{user `images`}}': /tmp/images provisioners: - inline: - mkdir -p /etc/initramfs-tools/scripts/local-premount/ type: shell - destination: /etc/initramfs-tools/scripts/ source: initramfs/labsync type: file - 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 - chmod +x /etc/initramfs-tools/scripts/labsync type: shell - destination: /etc/initramfs-tools/scripts/local-premount/ source: initramfs/labsync-prereqs type: file - inline: - set -x - chmod +x /etc/initramfs-tools/scripts/local-premount/labsync-prereqs - 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 haveged fdisk - mkdir -p /tmp/images - 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 python3 lsb-release type: shell - playbook_file: ansible/playbook.yml type: ansible user: root ansible_env_vars: - "ANSIBLE_SSH_ARGS='-o HostkeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa'" - "ANSIBLE_PYTHON_INTERPRETER=/usr/bin/python3" extra_arguments: - "--scp-extra-args" - "'-O'" - 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 - dpkg -l > /tmp/images/{{ user `dpkg_list_file` }} - echo '/etc/resolv.conf' >> /tmp/ignore_files - echo '/etc/hostname' >> /tmp/ignore_files - echo '/etc/hosts' >> /tmp/ignore_files - echo '/var/lib/docker' >> /tmp/ignore_files - echo '/var/cache/apt/archives' >> /tmp/ignore_files - echo '/var/lib/apt' >> /tmp/ignore_files - mkdir -p /tmp/extra/tmp /tmp/extra/proc /tmp/extra/sys type: shell - destination: /etc/hosts.template source: hosts type: file - 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 zstd -Xcompression-level {{user `compression_level`}} -ef /tmp/ignore_files type: shell post-processors: - inline: - > mktorrent -n '{{user `name`}}' -o '{{user `images`}}/{{user `torrent_file`}}' -l 22 '{{user `images`}}/{{user `squashfs_file`}}' type: shell-local