From b4287386a95ff11f7e18fdc9c102cf3856b087d2 Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Sat, 18 Nov 2023 02:02:18 +0100 Subject: [PATCH] Inital commit --- .gitignore | 22 ++ .vscode/tasks.json | 45 +++ CT-Build/Alpine.Jenkinsfile | 81 ++++++ CT-Build/Alpine.yaml | 311 +++++++++++++++++++++ CT-Build/Debian.Jenkinsfile | 81 ++++++ CT-Build/Debian.yaml | 264 +++++++++++++++++ Scripts/UpdateIMGBuildFile-CacheAndRepo.sh | 72 +++++ 7 files changed, 876 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/tasks.json create mode 100644 CT-Build/Alpine.Jenkinsfile create mode 100644 CT-Build/Alpine.yaml create mode 100644 CT-Build/Debian.Jenkinsfile create mode 100644 CT-Build/Debian.yaml create mode 100644 Scripts/UpdateIMGBuildFile-CacheAndRepo.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8a29339 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +*.tar.xz +*.tar.gz +*.tar +*.zip +*.sh.kate-swp +/distrobuilder +/bin +CT-Files/nginx/nginx_signing.rsa.pub +CT-Files/transfersh/transfersh-linux-amd64 +CT-Files/transfersh/transfershVersion +CT-Files/domoticz/domoticz.tgz +CT-Files/omadaV3/omada.deb +CT-Files/nextcloud/nginx_signing.rsa.pub +CT-Files/nextcloud/nextcloud.tar.bz2 +CT-Files/aptcacherng/*_mirrors +CT-Files/mailbackup/OfflineIMAP3-installed +CT-Files/mailbackup/rainloop-installed +CT-Files/mailbackup/MailBackup-sys +CT-Files/elkarbackupDEB/rsnapshot.deb +CT-Files/elkarbackupALP/Elkarbackup-installed +CT-Files/mysql/phpmyadminVersion +CT-Files/duplicati/duplicati-installed \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..d04c5bf --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,45 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + // When ran in a Proxmox CT, expose a folder mountpoint and symlink to it MOUNTPOINT/build/template/cache and tell Proxmox this use this folder for LXC images + "label": "BuildIMG", + "type": "shell", + "command": " export XZ_DEFAULTS='-T 0'; sudo ./distrobuilder build-lxc CT-Build/${input:Distro}.yaml -o image.release=${input:version} ;sudo chown $SUDO_USER:$SUDO_USER -R *.tar.xz ;rm -f meta.tar.xz; mv -f rootfs.tar.xz bin/${input:Distro}-${input:version}.tar.xz", + "problemMatcher": [], + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "label": "SetupImgBuilder", + "type": "shell", + "command": "mkdir bin;git clone https://github.com/lxc/distrobuilder distrobuilderSRC; cd distrobuilderSRC; gofmt -s -w .; go build -o ../ -v ./...; cd ../; rm -rf distrobuilderSRC", + "problemMatcher": [], + "group": { + "kind": "build", + "isDefault": true + } + } + ], + "inputs": [ + { + "id": "version", + "description": "Wich version shoud be build", + "type": "promptString" + }, + { + "type": "pickString", + "id": "Distro", + "description": "Wich Distro shoud be used", + "options": [ + "Debian", + "Alpine" + ], + "default": "Debian" + }, + ] +} diff --git a/CT-Build/Alpine.Jenkinsfile b/CT-Build/Alpine.Jenkinsfile new file mode 100644 index 0000000..e1eb440 --- /dev/null +++ b/CT-Build/Alpine.Jenkinsfile @@ -0,0 +1,81 @@ +pipeline { + agent { label 'LXCBuilder' } + parameters { + booleanParam description: 'Will only update Jenkins piplinefile (jenkinsfile)', name: 'OnlyUpdatePipeline' + booleanParam defaultValue: true, description: 'Enable muticore support for ZX compression', name: 'ZX_Multicore' + string defaultValue: '0', description: 'Set amount of core\'s ZX is allowed when compressing (use 0 for all cores)', name: 'ZX_Cores' + string defaultValue: '192.168.200.11', description: 'Proxy server for packages, when enabled', name: 'ProxyServer' + booleanParam description: 'will disable use of proxy server', name: 'DisProxy' + checkboxParameter(name: 'ImgVersionList', format: 'JSON', displayNodePath: "//Versions/Version", valueNodePath: "//Versions/Version", description: 'Select the vesions(s) that should be build', + pipelineSubmitContent: '{"Versions": [{"Version": "3.17"},{"Version": "3.18"},{"Version": "edge}]}') + } + options { + skipDefaultCheckout() + buildDiscarder(logRotator(numToKeepStr: '2', artifactNumToKeepStr: '1')) + } + stages { + stage('Prepare') { + steps { + // Cleanup before starting + cleanWs() + // Checkout the repository + checkout scm + // Get distrobuilder + copyArtifacts filter: 'distrobuilder-BrampCustom', fingerprintArtifacts: true, flatten: true, projectName: 'LXC-ImgBuilder/DistroBuilder', selector: lastSuccessful() + // Setup Env + sh '''mkdir $WORKSPACE/REL + mv distrobuilder-* distrobuilder + ''' + //Check if Proxy is disabled + script{ + if (env.DisProxy == 'true') { + sh '''bash Scripts/UpdateIMGBuildFile-CacheAndRepo.sh -d''' + } else { + env.ProxyServer = ProxyServer + sh '''bash Scripts/UpdateIMGBuildFile-CacheAndRepo.sh -e $ProxyServer''' + } + if (env.OnlyUpdatePipeline == 'true') { + error 'Build ended early, only updated jenkins file' + } + } + } + } + stage('Image Configs'){ + steps{ + script{ + //Run build for requested Versions + for(ImgVersion in ImgVersionList.split(',')){ + env.ZX_Multicore = ZX_Multicore + env.ZX_Cores = ZX_Cores + env.ImgVersion = ImgVersion + stage("Build ${ImgVersion}") { + catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') { + sh ''' + if $ZX_Multicore; then + export XZ_DEFAULTS="-T $ZX_Cores" + fi + sudo $WORKSPACE/distrobuilder build-lxc CT-Build/Alpine.yaml $WORKSPACE/REL/$ImgVersion/ -o image.Version=$ImgVersion + sudo chown jenkins:jenkins -R $WORKSPACE/REL + mv $WORKSPACE/REL/$ImgVersion/rootfs.tar.xz Alpine-$ImgVersion.tar.xz + ''' + } + } + } + } + } + } + stage('Finish') { + steps { + // Save generated files + archiveArtifacts artifacts: '*.tar.xz', followSymlinks: false + // Copy artifacts to /LXCBuild folder + sh ''' + mkdir -p /LXCBuild/template/cache + cp -f *.tar.xz /LXCBuild/template/cache + ''' + // Cleaning WorkSpace when build successfully + cleanWs cleanWhenAborted: false, cleanWhenFailure: false, cleanWhenNotBuilt: false, cleanWhenUnstable: false + } + } + } +} \ No newline at end of file diff --git a/CT-Build/Alpine.yaml b/CT-Build/Alpine.yaml new file mode 100644 index 0000000..4b409e3 --- /dev/null +++ b/CT-Build/Alpine.yaml @@ -0,0 +1,311 @@ +image: + distribution: "alpinelinux" + +source: + downloader: alpinelinux-http + same_as: 3.12 + keyserver: keys.openpgp.org +#InitDownloadREPO + url: http://dl-4.alpinelinux.org/alpine/ + keys: + # 0482D84022F52DF1C4E7CD43293ACD0907D9495A + - |- + -----BEGIN PGP PUBLIC KEY BLOCK----- + + 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 + bcgRRcklNr8mTzJH + =ckew + -----END PGP PUBLIC KEY BLOCK----- + +targets: + lxc: + #create-message: | + # You just created an {{ image.description }} container. + + config: + - type: all + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/sabayon.common.conf + + - type: user + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/sabayon.userns.conf + + - type: all + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/common.conf + + - type: user + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/userns.conf + + - type: all + content: |- + lxc.arch = {{ image.architecture_kernel }} + +files: +- path: /etc/hostname + generator: hostname + +- path: /etc/hosts + generator: hosts + +- path: /var/lib/dbus/machine-id + generator: remove + +- path: /etc/netplan/10-lxc.yaml + generator: dump + content: |- + + +- path: /etc/network/interfaces + generator: dump + content: |- + auto eth0 + iface eth0 inet dhcp + hostname $(hostname) + +- path: /etc/inittab + generator: dump + content: |- + # /etc/inittab + ::sysinit:/sbin/openrc sysinit + ::sysinit:/sbin/openrc boot + ::wait:/sbin/openrc default + + # Set up a couple of getty's + ::respawn:/sbin/getty 38400 console + #tty1::respawn:/sbin/getty 38400 tty1 + #tty2::respawn:/sbin/getty 38400 tty2 + #tty3::respawn:/sbin/getty 38400 tty3 + #tty4::respawn:/sbin/getty 38400 tty4 + + # Stuff to do for the 3-finger salute + ::ctrlaltdel:/sbin/reboot + + # Stuff to do before rebooting + ::shutdown:/sbin/openrc shutdown + +- path: /etc/inittab + generator: template + name: inittab + content: |- + # /etc/inittab + ::sysinit:/sbin/openrc sysinit + ::sysinit:/sbin/openrc boot + ::wait:/sbin/openrc default + + # Set up a couple of getty's + ::respawn:/sbin/getty 38400 console + + # Stuff to do for the 3-finger salute + ::ctrlaltdel:/sbin/reboot + + # Stuff to do before rebooting + ::shutdown:/sbin/openrc shutdown + +packages: + manager: apk + update: true + cleanup: true + sets: + - packages: + - alpine-base + - tzdata + action: install + + repositories: + - name: /etc/apk/repositories + url: |- + #StartREPOS + {% if image.release != "edge" %} + http://dl-4.alpinelinux.org/alpine/v{{ image.release }}/main + http://dl-4.alpinelinux.org/alpine/v{{ image.release }}/community + {% endif %} + {% if image.release == "edge" %} + http://dl-4.alpinelinux.org/alpine/{{ image.release }}/main + http://dl-4.alpinelinux.org/alpine/{{ image.release }}/community + #http://dl-4.alpinelinux.org/alpine/{{ image.release }}/testing + {% endif %} + #EndREPOS + +actions: +- trigger: post-unpack + action: |- + #!/bin/sh + sed -i '/dl-cdn.alpinelinux.org/d' /etc/apk/repositories + +- trigger: post-packages + action: |- + #!/bin/sh + set -eux + + # Rewrite configuration for LXC + sed -i 's/#rc_sys=""/rc_sys="lxc"/' /etc/rc.conf + + # Enable services + for svc_name in bootmisc syslog; do + ln -s /etc/init.d/${svc_name} /etc/runlevels/boot/${svc_name} + done + + for svc_name in networking crond; do + ln -s /etc/init.d/${svc_name} /etc/runlevels/default/${svc_name} + done + + #Set TimeZone + echo "Europe/Amsterdam" > /etc/timezone + ln -s /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime + +mappings: + architecture_map: alpinelinux diff --git a/CT-Build/Debian.Jenkinsfile b/CT-Build/Debian.Jenkinsfile new file mode 100644 index 0000000..aafcfca --- /dev/null +++ b/CT-Build/Debian.Jenkinsfile @@ -0,0 +1,81 @@ +pipeline { + agent { label 'LXCBuilder' } + parameters { + booleanParam description: 'Will only update Jenkins piplinefile (jenkinsfile)', name: 'OnlyUpdatePipeline' + booleanParam defaultValue: true, description: 'Enable muticore support for ZX compression', name: 'ZX_Multicore' + string defaultValue: '0', description: 'Set amount of core\'s ZX is allowed when compressing (use 0 for all cores)', name: 'ZX_Cores' + string defaultValue: '192.168.200.11', description: 'Proxy server for packages, when enabled', name: 'ProxyServer' + booleanParam description: 'will disable use of proxy server', name: 'DisProxy' + checkboxParameter(name: 'ImgVersionList', format: 'JSON', displayNodePath: "//Versions/Version", valueNodePath: "//Versions/Version", description: 'Select the vesions(s) that should be build', + pipelineSubmitContent: '{"Versions": [{"Version": "bookworm"},{"Version": "bullseye"}]}') + } + options { + skipDefaultCheckout() + buildDiscarder(logRotator(numToKeepStr: '2', artifactNumToKeepStr: '1')) + } + stages { + stage('Prepare') { + steps { + // Cleanup before starting + cleanWs() + // Checkout the repository + checkout scm + // Get distrobuilder + copyArtifacts filter: 'distrobuilder-BrampCustom', fingerprintArtifacts: true, flatten: true, projectName: 'LXC-ImgBuilder/DistroBuilder', selector: lastSuccessful() + // Setup Env + sh '''mkdir $WORKSPACE/REL + mv distrobuilder-* distrobuilder + ''' + //Check if Proxy is disabled + script{ + if (env.DisProxy == 'true') { + sh '''bash Scripts/UpdateIMGBuildFile-CacheAndRepo.sh -d''' + } else { + env.ProxyServer = ProxyServer + sh '''bash Scripts/UpdateIMGBuildFile-CacheAndRepo.sh -e $ProxyServer''' + } + if (env.OnlyUpdatePipeline == 'true') { + error 'Build ended early, only updated jenkins file' + } + } + } + } + stage('Image Configs'){ + steps{ + script{ + //Run build for requested Versions + for(ImgVersion in ImgVersionList.split(',')){ + env.ZX_Multicore = ZX_Multicore + env.ZX_Cores = ZX_Cores + env.ImgVersion = ImgVersion + stage("Build ${ImgVersion}") { + catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') { + sh '''echo "$(date) Do Build for $ImgVersion" + if $ZX_Multicore; then + export XZ_DEFAULTS="-T $ZX_Cores" + fi + sudo $WORKSPACE/distrobuilder build-lxc CT-Build/Debian.yaml $WORKSPACE/REL/$ImgVersion/ -o image.Version=$ImgVersion + sudo chown jenkins:jenkins -R $WORKSPACE/REL + mv $WORKSPACE/REL/$ImgVersion/rootfs.tar.xz Debian-$ImgVersion.tar.xz + ''' + } + } + } + } + } + } + stage('Finish') { + steps { + // Save generated files + archiveArtifacts artifacts: '*.tar.xz', followSymlinks: false + // Copy artifacts to /LXCBuild folder + sh ''' + mkdir -p /LXCBuild/template/cache + cp -f *.tar.xz /LXCBuild/template/cache + ''' + // Cleaning WorkSpace when build successfully + cleanWs cleanWhenAborted: false, cleanWhenFailure: false, cleanWhenNotBuilt: false, cleanWhenUnstable: false + } + } + } +} \ No newline at end of file diff --git a/CT-Build/Debian.yaml b/CT-Build/Debian.yaml new file mode 100644 index 0000000..b810c89 --- /dev/null +++ b/CT-Build/Debian.yaml @@ -0,0 +1,264 @@ +image: + distribution: "debian" + +source: + downloader: debootstrap + #InitDownloadREPO + url: http://deb.debian.org/debian + keyserver: keys.openpgp.org + keys: + # Debian 12 Bookworm release key + - |- + -----BEGIN PGP PUBLIC KEY BLOCK----- + + mDMEY865UxYJKwYBBAHaRw8BAQdAd7Z0srwuhlB6JKFkcf4HU4SSS/xcRfwEQWzr + crf6AEq0SURlYmlhbiBTdGFibGUgUmVsZWFzZSBLZXkgKDEyL2Jvb2t3b3JtKSA8 + ZGViaWFuLXJlbGVhc2VAbGlzdHMuZGViaWFuLm9yZz6IlgQTFggAPhYhBE1k/sEZ + wgKQZ9bnkfjSWFuHg9SBBQJjzrlTAhsDBQkPCZwABQsJCAcCBhUKCQgLAgQWAgMB + Ah4BAheAAAoJEPjSWFuHg9SBSgwBAP9qpeO5z1s5m4D4z3TcqDo1wez6DNya27QW + WoG/4oBsAQCEN8Z00DXagPHbwrvsY2t9BCsT+PgnSn9biobwX7bDDg== + =5NZE + -----END PGP PUBLIC KEY BLOCK----- + + #Debian 11 bullseye release key + - |- + -----BEGIN PGP PUBLIC KEY BLOCK----- + + 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 + e18slw8= + =7Dni + -----END PGP PUBLIC KEY BLOCK----- + + variant: minbase + +targets: + lxc: + #create-message: |- + # You just created a {{ image.description }} container. + + config: + - type: all + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/debian.common.conf + + - type: user + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/debian.userns.conf + + - type: all + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/common.conf + + - type: user + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/userns.conf + - type: all + content: |- + lxc.arch = {{ image.architecture_personality }} + +files: +- path: /etc/hostname + generator: hostname + +- path: /etc/hosts + generator: hosts + +- path: /etc/resolvconf/resolv.conf.d/original + generator: remove + +- path: /etc/resolvconf/resolv.conf.d/tail + generator: remove + +- path: /etc/machine-id + generator: dump + +- path: /var/lib/dbus/machine-id + generator: remove + +- path: /etc/network/interfaces + generator: dump + content: |- + # This file describes the network interfaces available on your system + # and how to activate them. For more information, see interfaces(5). + + # The loopback network interface + auto lo + iface lo inet loopback + + auto eth0 + iface eth0 inet dhcp + + source /etc/network/interfaces.d/* + types: + - container + +- path: /etc/sudoers.d/imgbuilder + generator: dump + content: |- + Defaults env_keep += "XZ_DEFAULTS" + jenkins ALL=(root:root)NOPASSWD:/bin/chown,/home/jenkins/workspace/*/*/*/*/*/*/*/*/distrobuilder,/home/jenkins/workspace/*/*/distrobuilder,/home/jenkins/workspace/*/distrobuilder + variants: + - imgbuilder + +#Unattended-Upgrade configuration +- path: /etc/apt/apt.conf.d/50unattended-upgrades + generator: dump + content: |- + Unattended-Upgrade::Origins-Pattern { + + }; + + Dpkg::Options { + "--force-confdef"; + "--force-confold"; + }; + + Unattended-Upgrade::Package-Blacklist { + "mysql$"; + "mariadb$"; + }; + + Unattended-Upgrade::AutoFixInterruptedDpkg "true"; + Unattended-Upgrade::MinimalSteps "false"; + Unattended-Upgrade::InstallOnShutdown "false"; + Unattended-Upgrade::Remove-Unused-Kernel-Packages "true"; + Unattended-Upgrade::Remove-Unused-Dependencies "true"; + //Unattended-Upgrade::Automatic-Reboot "true"; + //Unattended-Upgrade::Automatic-Reboot-WithUsers "true"; + //Unattended-Upgrade::Automatic-Reboot-Time "02:00"; + Unattended-Upgrade::SyslogEnable "true"; + +- path: /etc/apt/apt.conf.d/20auto-upgrades + generator: dump + content: |- + APT::Periodic::Update-Package-Lists "1"; + APT::Periodic::Download-Upgradeable-Packages "1"; + APT::Periodic::AutocleanInterval "3"; + APT::Periodic::Unattended-Upgrade "1"; + + +packages: + manager: apt + update: true + cleanup: true + sets: + #Minimal pkgs + - packages: + - dialog + - ifupdown + - init + - iproute2 + - iputils-ping + - isc-dhcp-client + - locales + - netbase + - net-tools + - openssh-client + - procps + - unattended-upgrades + - bash-completion + action: install + + + + repositories: + - name: sources.list + url: |- + deb http://deb.debian.org/debian {{ image.release }} main contrib + deb http://deb.debian.org/debian {{ image.release }}-updates main contrib + deb http://security.debian.org {{ image.release }}-security main contrib + + +actions: +- trigger: post-unpack + action: |- + #!/bin/sh + #Disable apt Recommends and Suggests + echo 'APT::Install-Recommends "false";' > /etc/apt/apt.conf.d/01Recommends + echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/01Suggests + #ProxyCacheSetting + echo '#CacheServer not set' > /etc/apt/apt.conf.d/01prox +- trigger: post-packages + action: |- + #!/bin/sh + set -eux + + # Disable networkd (unused) + systemctl mask systemd-networkd.service + systemctl mask systemd-networkd.socket + systemctl mask systemd-networkd-wait-online.service + + # Make sure the locale is built and functional + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen + locale-gen en_US.UTF-8 UTF-8 + update-locale LANG=en_US.UTF-8 + + # Cleanup underlying /run + mount -o bind / /mnt + rm -rf /mnt/run/* + umount /mnt + + #Set TimeZone + echo "Europe/Amsterdam" > /etc/timezone + rm /etc/localtime + ln -s /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime + + # Cleanup temporary shadow paths + rm /etc/*- + +mappings: + architecture_map: debian diff --git a/Scripts/UpdateIMGBuildFile-CacheAndRepo.sh b/Scripts/UpdateIMGBuildFile-CacheAndRepo.sh new file mode 100644 index 0000000..19d65c9 --- /dev/null +++ b/Scripts/UpdateIMGBuildFile-CacheAndRepo.sh @@ -0,0 +1,72 @@ +#!/bin/bash +#Allow for external definiton of status of cache +StatusFlag=$1 +ProxyFlag=$2 +#UserSettings +ThisScriptConfigured=no +UseCache=no + +#Cache server if flag not set enable (using apt-cacher-NG) +ConfigProxyServer="192.168.200.11" +#Cache enable (using Official MirrorServers) +DefaultAlpineRepo="http://dl-4.alpinelinux.org/alpine/" +DefaultDebianCore="http://deb.debian.org/debian" + +###Do not Edit underneath### + +if [ -n "$ProxyFlag" ]; then + UseServer="$ProxyFlag" +else + UseServer="$ConfigProxyServer" +fi + +CacheAlpineRepo="http://$UseServer/alpine/" +CacheDebianCache="http://$UseServer:80" +CacheDebianCore="http://$UseServer/deb.debian.org/debian" + +#Check if using StatusFlag if not chek if scipt is configured +if [ -n "$StatusFlag" ]; then + if [ $StatusFlag = "-e" ]; then + UseCache=yes + elif [ $StatusFlag = "-d" ]; then + UseCache=no + fi +elif +[ $ThisScriptConfigured = no ]; then + echo "Script is not configured" + exit +fi + +#Check if using Cache +if [ $UseCache = yes ]; then + echo "Using cache server $UseServer" + AlpineRepo=$CacheAlpineRepo + DebianCache='Acquire::http::Proxy "'$CacheDebianCache'";' + DebianCore=$CacheDebianCore +elif [ $UseCache = no ]; then + echo "Not using cache server" + AlpineRepo=$DefaultAlpineRepo + DebianCache='#CacheServer not set' + DebianCore=$DefaultDebianCore +fi + +#Goto ProjectRoot +cd "$( cd "$( dirname "$0" )" &> /dev/null && pwd )/.." + +#AlpineCoreRepo +## Disabled using the proxy server and will now always use $DefaultAlpineRepo instead of $AlpineRepo. +## This is due to a change in the downloading of the minirootfs for alpine in Distrobuilder [since 22-08-2022] (Note: Distrobuilder will store the image in the tmp folder) +sed -i -e '/#InitDownloadREPO/{n;d}' CT-Build/Alpine.yaml +sed -i -e '/#InitDownloadREPO/a \ url: '$DefaultAlpineRepo'' CT-Build/Alpine.yaml + +#AlpineRepo +sed -i -n '/#StartREPOS/{:a;N;/#EndREPOS/!ba;N;s/.*\n/#HereREPO\n/};p' CT-Build/Alpine.yaml +sed -i -e 's#\#HereREPO#\ \#StartREPOS\n\ '$AlpineRepo'v{{ image.release }}/main\n\ '$AlpineRepo'v{{ image.release }}/community\n\ \#EndREPOS#g' CT-Build/Alpine.yaml + +#DebianBaseRepo +sed -i -e '/#InitDownloadREPO/{n;d}' CT-Build/Debian.yaml +sed -i -e '/#InitDownloadREPO/a \ url: '$DebianCore'' CT-Build/Debian.yaml + +#DebianProxyCache +sed -i -e '/#ProxyCacheSetting/{n;d}' CT-Build/Debian.yaml +sed -i -e "/#ProxyCacheSetting/a \ echo \'$DebianCache\' > /etc/apt/apt.conf.d/01prox" CT-Build/Debian.yaml