diff --git a/Centos.yaml b/Centos.yaml new file mode 100644 index 0000000..88e71b2 --- /dev/null +++ b/Centos.yaml @@ -0,0 +1,222 @@ +image: + distribution: centos + release: 8 + #release: 8-Stream + +source: + downloader: centos-http + url: http://192.168.2.83:8181/CentOS/ + variant: boot + keys: + + # RPM-GPG-KEY-CentOS-Official + - |- + -----BEGIN PGP PUBLIC KEY BLOCK----- + + mQINBFzMWxkBEADHrskpBgN9OphmhRkc7P/YrsAGSvvl7kfu+e9KAaU6f5MeAVyn + rIoM43syyGkgFyWgjZM8/rur7EMPY2yt+2q/1ZfLVCRn9856JqTIq0XRpDUe4nKQ + 8BlA7wDVZoSDxUZkSuTIyExbDf0cpw89Tcf62Mxmi8jh74vRlPy1PgjWL5494b3X + 5fxDidH4bqPZyxTBqPrUFuo+EfUVEqiGF94Ppq6ZUvrBGOVo1V1+Ifm9CGEK597c + aevcGc1RFlgxIgN84UpuDjPR9/zSndwJ7XsXYvZ6HXcKGagRKsfYDWGPkA5cOL/e + f+yObOnC43yPUvpggQ4KaNJ6+SMTZOKikM8yciyBwLqwrjo8FlJgkv8Vfag/2UR7 + JINbyqHHoLUhQ2m6HXSwK4YjtwidF9EUkaBZWrrskYR3IRZLXlWqeOi/+ezYOW0m + vufrkcvsh+TKlVVnuwmEPjJ8mwUSpsLdfPJo1DHsd8FS03SCKPaXFdD7ePfEjiYk + nHpQaKE01aWVSLUiygn7F7rYemGqV9Vt7tBw5pz0vqSC72a5E3zFzIIuHx6aANry + Gat3aqU3qtBXOrA/dPkX9cWE+UR5wo/A2UdKJZLlGhM2WRJ3ltmGT48V9CeS6N9Y + m4CKdzvg7EWjlTlFrd/8WJ2KoqOE9leDPeXRPncubJfJ6LLIHyG09h9kKQARAQAB + tDpDZW50T1MgKENlbnRPUyBPZmZpY2lhbCBTaWduaW5nIEtleSkgPHNlY3VyaXR5 + QGNlbnRvcy5vcmc+iQI3BBMBAgAhBQJczFsZAhsDBgsJCAcDAgYVCAIJCgsDFgIB + Ah4BAheAAAoJEAW1VbOEg8ZdjOsP/2ygSxH9jqffOU9SKyJDlraL2gIutqZ3B8pl + Gy/Qnb9QD1EJVb4ZxOEhcY2W9VJfIpnf3yBuAto7zvKe/G1nxH4Bt6WTJQCkUjcs + N3qPWsx1VslsAEz7bXGiHym6Ay4xF28bQ9XYIokIQXd0T2rD3/lNGxNtORZ2bKjD + vOzYzvh2idUIY1DgGWJ11gtHFIA9CvHcW+SMPEhkcKZJAO51ayFBqTSSpiorVwTq + a0cB+cgmCQOI4/MY+kIvzoexfG7xhkUqe0wxmph9RQQxlTbNQDCdaxSgwbF2T+gw + byaDvkS4xtR6Soj7BKjKAmcnf5fn4C5Or0KLUqMzBtDMbfQQihn62iZJN6ZZ/4dg + q4HTqyVpyuzMXsFpJ9L/FqH2DJ4exGGpBv00ba/Zauy7GsqOc5PnNBsYaHCply0X + 407DRx51t9YwYI/ttValuehq9+gRJpOTTKp6AjZn/a5Yt3h6jDgpNfM/EyLFIY9z + V6CXqQQ/8JRvaik/JsGCf+eeLZOw4koIjZGEAg04iuyNTjhx0e/QHEVcYAqNLhXG + rCTTbCn3NSUO9qxEXC+K/1m1kaXoCGA0UWlVGZ1JSifbbMx0yxq/brpEZPUYm+32 + o8XfbocBWljFUJ+6aljTvZ3LQLKTSPW7TFO+GXycAOmCGhlXh2tlc6iTc41PACqy + yy+mHmSv + =kkH7 + -----END PGP PUBLIC KEY BLOCK----- + +targets: + lxc: + create-message: | + You just created a {{ image.description }} container. + config: + - type: all + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/centos.common.conf + + - type: user + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/centos.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: +- name: hostname + path: /etc/hostname + generator: hostname + +- name: hosts + path: /etc/hosts + generator: hosts + +- path: /etc/machine-id + generator: dump + +- path: /var/lib/dbus/machine-id + generator: remove + +- name: ifcfg-eth0 + path: /etc/sysconfig/network-scripts/ifcfg-eth0 + generator: dump + templated: true + content: |- + DEVICE=eth0 + BOOTPROTO=dhcp + ONBOOT=yes + HOSTNAME=LXC_NAME + TYPE=Ethernet + MTU= + DHCP_HOSTNAME=LXC_NAME + releases: + - 8 + - 8-Stream + types: + - container + +- name: ifcfg-eth0.lxd + path: /etc/sysconfig/network-scripts/ifcfg-eth0 + generator: template + content: |- + DEVICE=eth0 + BOOTPROTO=dhcp + ONBOOT=yes + HOSTNAME={{ container.name }} + TYPE=Ethernet + MTU= + DHCP_HOSTNAME={{ container.name }} + IPV6INIT=yes + releases: + - 8 + - 8-Stream + types: + - container + +- name: network-device-down.service + path: /etc/systemd/system/network-device-down.service + generator: dump + content: |- + [Unit] + Description=Turn off network device + Before=NetworkManager.service + + [Service] + ExecStart=-/usr/sbin/ip link set eth0 down + Type=oneshot + RemainAfterExit=true + + [Install] + WantedBy=default.target + types: + - container + releases: + - 8 + - 8-Stream + +- name: 86-nm-unmanaged.rules + path: /etc/udev/rules.d/86-nm-unmanaged.rules + generator: dump + content: |- + ENV{ID_NET_DRIVER}=="veth", ENV{NM_UNMANAGED}="0" + releases: + - 8-Stream + +- name: network + path: /etc/sysconfig/network + generator: dump + templated: true + content: |- + NETWORKING=yes + HOSTNAME=LXC_NAME + +- name: network.lxd + path: /etc/sysconfig/network + generator: template + content: |- + NETWORKING=yes + HOSTNAME={{ container.name }} + +packages: + manager: yum + update: true + cleanup: true + sets: + - packages: + - NetworkManager + - cronie + - cronie-noanacron + - dhclient + - initscripts + - openssh-clients + - passwd + - policycoreutils + - rootfiles + - rsyslog + action: install + - packages: + - curl + - nano + action: install + variants: + - default + +actions: +- trigger: post-unpack + action: |- + #!/bin/sh + #Setup Use of proxy + echo 'proxy=http://192.168.2.83:8080' >> /etc/yum.conf + echo '#proxy=http://192.168.200.60:8080' >> /etc/yum.conf + +- trigger: post-packages + action: |- + #!/bin/sh + set -eux + + # Disable SELinux + mkdir -p /selinux + echo 0 > /selinux/enforce + + # Disable loginuid in PAM stack + sed -i '/^session.*pam_loginuid.so/s/^session/# session/' /etc/pam.d/* + +- trigger: post-files + action: |- + #!/bin/sh + set -eux + + systemctl enable network-device-down.service + types: + - container + releases: + - 8 + - 8-Stream diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..00e1087 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,73 @@ +String[] ImgReleaseList = ['8', '8-Steam'] +String[] ImgVariantList = ['Default-minmal', 'Default-default'] + +pipeline { + agent { label 'LXCBuilder' } + parameters { + booleanParam defaultValue: true, description: 'Builds Default images', name: 'BuildDefault' + booleanParam defaultValue: false, description: 'Builds Extra images', name: 'BuildExtra' + } + 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: 'bin/distrobuilder', fingerprintArtifacts: true, flatten: true, projectName: '/Public/DistroBuilder/BuildConfig=BrampCustom', selector: lastSuccessful() + // Setup Env + sh '''mkdir $WORKSPACE/REL''' + } + } + stage('Image Configs'){ + steps{ + script{ + for(ImgRelease in ImgReleaseList){ + for(ImgVariant in ImgVariantList){ + //ImgTypeTest + if (env.BuildDefault == 'true' && (ImgVariant).startsWith('Default-')) { + BuildThis = true + } else if (env.BuildExtra == 'true' && (ImgVariant).startsWith('Extra-')) { + BuildThis = true + } else { + BuildThis = false + } + //Exclude unwanted conbinatinations + if (ImgRelease == 'edge' && ImgVariant == 'Extra-extended' ){ + BuildThis = false + } + //Check if this combinations shoud be build + if (BuildThis == true) { + env.ImgRelease = ImgRelease + env.ImgVariant = ImgVariant + stage('Build image') { + catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { + sh '''echo "$(date) Do Build for $ImgRelease - $ImgVariant" + ImgVariantName=${ImgVariant#Default-} && ImgVariantName=${ImgVariantName#Extra-} + sudo $WORKSPACE/distrobuilder build-lxc Cenos.yaml $WORKSPACE/REL/$ImgRelease-$ImgVariant/ -o image.release=$ImgRelease -o image.variant=$ImgVariantName + sudo chown jenkins:jenkins -R $WORKSPACE/REL + mv $WORKSPACE/REL/$ImgRelease-$ImgVariant/rootfs.tar.xz Centos-$ImgRelease-$ImgVariant.tar.xz + ''' + } + } + } + } + } + } + } + } + stage('Finish') { + steps { + // Save generated files + archiveArtifacts artifacts: '*.tar.xz', followSymlinks: false + // Cleaning WorkSpace + //cleanWs() + } + } + } +} \ No newline at end of file