diff --git a/.gitea/workflows/pipeline.yml b/.gitea/workflows/pipeline.yml index 206af92..2079477 100644 --- a/.gitea/workflows/pipeline.yml +++ b/.gitea/workflows/pipeline.yml @@ -1,44 +1,86 @@ -name: docker base image -run-name: ${{ gitea.actor }} is building the docker base image. -on: [push] +# .gitea/workflows/docker-multi-build.yml + +name: Build and Push Multi-Arch Docker Images + +on: + push: + branches: + - main + paths: + - 'buster/Dockerfile' + - 'bullseye/Dockerfile' + - 'bookworm/Dockerfile' + - 'docker-build/Dockerfile' + - 'buster/**' + - 'bullseye/**' + - 'bookworm/**' + - 'docker-build/**' jobs: - docker: - runs-on: cth-test + build: + runs-on: ubuntu-latest + steps: - # - name: Install Docker - # run: curl -fsSL https://get.docker.com | sh + - name: Checkout code + uses: actions/checkout@v3 - # - name: Check out repository code. - # uses: actions/checkout@v4 + - name: Set image tags and names + id: vars + run: | + IMAGE_REGISTRY=gitea.fithwum.tech + IMAGE_ORG=fithwum + IMAGE_REPO=base-image + IMAGE_NAME=debian + + # Set the tag based on the folder name (buster, bullseye, bookworm, docker-build) + IMAGE_TAG_BUSTER=buster + IMAGE_TAG_BULLSEYE=bullseye + IMAGE_TAG_BOOKWORM=bookworm + IMAGE_TAG_DOCKER_BUILD=docker-build - - name: Build Base-image 1. - uses: docker/build-push-action@v5 - run: docker build --pull --rm -f "debian/buster/Dockerfile" -t gitea.fithwum.tech/fithwum/base-image:debian-buster "debian/buster" - - name: publish Base-image 1. - run: docker push -a gitea.fithwum.tech/fithwum/base-image + echo "IMAGE_TAG_BUSTER=${IMAGE_TAG_BUSTER}" >> $GITHUB_ENV + echo "IMAGE_TAG_BULLSEYE=${IMAGE_TAG_BULLSEYE}" >> $GITHUB_ENV + echo "IMAGE_TAG_BOOKWORM=${IMAGE_TAG_BOOKWORM}" >> $GITHUB_ENV + echo "IMAGE_TAG_DOCKER_BUILD=${IMAGE_TAG_DOCKER_BUILD}" >> $GITHUB_ENV + + # Set image names for each subfolder Dockerfile + IMAGE_BUSTER=${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}/${IMAGE_NAME}:${IMAGE_TAG_BUSTER} + IMAGE_BULLSEYE=${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}/${IMAGE_NAME}:${IMAGE_TAG_BULLSEYE} + IMAGE_BOOKWORM=${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}/${IMAGE_NAME}:${IMAGE_TAG_BOOKWORM} + IMAGE_DOCKER_BUILD=${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}/${IMAGE_NAME}:${IMAGE_TAG_DOCKER_BUILD} - - name: Build Base-image 2. - uses: docker/build-push-action@v5 - run: docker build --pull --rm -f "debian/bullseye/Dockerfile" -t gitea.fithwum.tech/fithwum/base-image:debian-bullseye "debian/bullseye" - - name: publish Base-image 2. - run: docker push -a gitea.fithwum.tech/fithwum/base-image + echo "IMAGE_BUSTER=${IMAGE_BUSTER}" >> $GITHUB_ENV + echo "IMAGE_BULLSEYE=${IMAGE_BULLSEYE}" >> $GITHUB_ENV + echo "IMAGE_BOOKWORM=${IMAGE_BOOKWORM}" >> $GITHUB_ENV + echo "IMAGE_DOCKER_BUILD=${IMAGE_DOCKER_BUILD}" >> $GITHUB_ENV - - name: Build Base-image 3. - uses: docker/build-push-action@v5 - run: docker build --pull --rm -f "debian/bookworm/Dockerfile" -t gitea.fithwum.tech/fithwum/base-image:debian-bookworm "debian/bookworm" - - name: publish Base-image 3. - run: docker push -a gitea.fithwum.tech/fithwum/base-image + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - # - run: echo "The job was automatically triggered by a ${{ gitea.event_name }} event." - # - run: echo "This job is now running on a ${{ runner.os }} server hosted by Gitea!" - # - run: echo "The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}." + - name: Log in to Gitea Registry + run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login gitea.fithwum.tech -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin + # Build and Push Docker Images for buster, bullseye, bookworm, docker-build + - name: Build and Push buster Docker Image + run: | + docker buildx build --platform linux/amd64,linux/arm64 \ + --push -t ${IMAGE_BUSTER} \ + ./buster - # - run: echo "The ${{ gitea.repository }} repository has been cloned to the runner." + - name: Build and Push bullseye Docker Image + run: | + docker buildx build --platform linux/amd64,linux/arm64 \ + --push -t ${IMAGE_BULLSEYE} \ + ./bullseye - # - name: List files in the repository - # run: | - # ls ${{ gitea.workspace }} + - name: Build and Push bookworm Docker Image + run: | + docker buildx build --platform linux/amd64,linux/arm64 \ + --push -t ${IMAGE_BOOKWORM} \ + ./bookworm - - run: echo "This job's status is ${{ job.status }}." \ No newline at end of file + - name: Build and Push docker-build Docker Image + run: | + docker buildx build --platform linux/amd64,linux/arm64 \ + --push -t ${IMAGE_DOCKER_BUILD} \ + ./docker-build diff --git a/build-script/debian-docker-build_pt1.sh b/build-script/debian-docker-build_pt1.sh new file mode 100644 index 0000000..8eb82d3 --- /dev/null +++ b/build-script/debian-docker-build_pt1.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# Copyright (c) 2018 fithwum +# All rights reserved + +RELEASE=stable + +echo " " +echo "INFO ! Downloading other parts of the script if needed." +if [ -e /debian-bookworm_pt2.sh ] + then + echo "INFO ! debian-bookworm_pt2.sh found ... will not download." + else + echo " " + echo "WARNING ! debian-bookworm_pt2.sh not found ... will download new copy." + wget --no-cache https://gitea.fithwum.tech/fithwum/base-image/raw/branch/main/build-script/debian-bookworm_pt2.sh -O /debian-bookworm_pt2.sh + chmod +x debian-bookworm_pt2.sh +fi +if [ -e /debian-bookworm_pt3.sh ] + then + echo "INFO ! debian-bookworm_pt3.sh found ... will not download." + else + echo " " + echo "WARNING ! debian-bookworm_pt3.sh not found ... will download new copy." + wget --no-cache https://gitea.fithwum.tech/fithwum/base-image/raw/branch/main/build-script/debian-bookworm_pt3.sh -O /debian-bookworm_pt3.sh + chmod +x debian-bookworm_pt3.sh +fi +sleep 1 +echo " " +echo "INFO ! Getting system updates." +apt-get -y update +apt-get -y upgrade +apt-get -y dist-upgrade +apt autoremove -y +echo " " +echo "INFO ! Installing debootstrap,ftp-upload,bash,dirmngr,curl." +sleep 1 +apt-get install -y debootstrap ftp-upload bash dirmngr curl +sleep 1 +echo " " +echo "INFO ! Downloading debian & selected packages." +debootstrap --force-check-gpg --variant=minbase --components=main,contrib,non-free --include=dirmngr,apt-transport-https,bash,software-properties-common,ca-certificates,wget,curl,nano --arch=amd64 bookworm /debian-bookworm http://deb.debian.org/debian/ +echo " " +echo "INFO ! Filesystem size uncompressed." +sleep 1 +du --human-readable --summarize debian-bookworm +sleep 5 +echo " " +echo "INFO ! Mounting folders for root." +mount --bind /dev debian-bookworm/dev +mount --bind /dev/pts debian-bookworm/dev/pts +mount --bind /proc debian-bookworm/proc +mount --bind /sys debian-bookworm/sys +sleep 1 +cp -v debian-bookworm_pt2.sh /debian-bookworm +echo " " +echo "INFO ! Changeing to new root." +sleep 1 +chroot debian-bookworm +exit diff --git a/build-script/debian-docker-build_pt2.sh b/build-script/debian-docker-build_pt2.sh new file mode 100644 index 0000000..a608c3c --- /dev/null +++ b/build-script/debian-docker-build_pt2.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright (c) 2018 fithwum +# All rights reserved + +echo " " +echo "APT::Get::Assume-Yes \"true\";" | tee /etc/apt/apt.conf.d/10-assume_yes +sleep 1 +echo " " +echo "INFO ! Removeing unnecessary packages." +apt-get remove --allow-remove-essential pinentry-curses whiptail kmod iptables iproute2 dmidecode +sleep 1 +echo " " +echo "INFO ! Cleanup." +apt-get clean +spt --fix-broken install +find /var/lib/apt/lists/ -maxdepth 2 -type f -delete +sleep 1 +echo " " +echo "INFO ! Type "exit" and reboot for final steps." +exit diff --git a/build-script/debian-docker-build_pt3.sh b/build-script/debian-docker-build_pt3.sh new file mode 100644 index 0000000..bcdbf16 --- /dev/null +++ b/build-script/debian-docker-build_pt3.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Copyright (c) 2018 fithwum +# All rights reserved + +echo " " +echo "INFO ! Cleaning up pt2 of script from base image." +rm -frv /debian-bookworm/debian-bookworm_pt2.sh +sleep 1 +echo " " +echo "INFO ! Base image size after cleanup." +du --human-readable --summarize debian-bookworm +sleep 5 +echo " " +echo "INFO ! Creating base image archive." +echo "INFO ! This may take some time." +tar -cjf debian-bookworm.tar.bz2 --directory debian-bookworm . +sleep 1 +echo " " +echo "INFO ! Base image archive." +du --human-readable --summarize debian-bookworm.tar.bz2 +sleep 5 +echo " " +echo "INFO ! Uploading image to ftp server." +ftp-upload -v -h {IP}:{PORT} -u {USER} --password {PASSWORD} -d /mnt/user/FTP debian-bookworm.tar.bz2 +sleep 1 +echo " " +echo "INFO ! Removing temp files." +rm -fr debian-bookworm +rm -frv debian-bookworm.tar.bz2 +echo " " +echo "INFO ! Done." +echo " " +exit diff --git a/build_base.sh b/build_base.sh index 7de4320..d0696e6 100644 --- a/build_base.sh +++ b/build_base.sh @@ -5,6 +5,5 @@ docker build --pull --rm -f "debian/buster/Dockerfile" -t fithwum/base-image:debian-buster "debian/buster" docker build --pull --rm -f "debian/bullseye/Dockerfile" -t fithwum/base-image:debian-bullseye "debian/bullseye" docker build --pull --rm -f "debian/bookworm/Dockerfile" -t fithwum/base-image:debian-bookworm "debian/bookworm" -docker push fithwum/base-image:debian-buster -docker push fithwum/base-image:debian-bullseye -docker push fithwum/base-image:debian-bookworm +docker build --pull --rm -f "debian/bookworm/Dockerfile" -t fithwum/base-image:docker-build "debian/docker-build" +docker push -a fithwum/base-image diff --git a/debian/docker-build/.pipeline.yml b/debian/docker-build/.pipeline.yml new file mode 100644 index 0000000..cc8b4f1 --- /dev/null +++ b/debian/docker-build/.pipeline.yml @@ -0,0 +1,18 @@ +variables: + IMAGE_TAG: "debian-docker-build" + DOCKER_HOST: "" + DOCKER_DRIVER: overlay2 + +build_image: + image: docker:24.0.7 + services: + - docker:24.0.7-dind-rootless + variables: + DOCKER_TLS_CERTDIR: "" + GIT_SSL_NO_VERIFY: true + before_script: + - docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD + script: + - cd "$CI_PROJECT_DIR/debian/docker-build/" + - docker build -t $CI_REGISTRY/fithwum/base-image/$IMAGE_NAME:$IMAGE_TAG . + - docker push -a $CI_REGISTRY/fithwum/base-image/$IMAGE_NAME diff --git a/debian/docker-build/Dockerfile b/debian/docker-build/Dockerfile new file mode 100644 index 0000000..1b7fad3 --- /dev/null +++ b/debian/docker-build/Dockerfile @@ -0,0 +1,4 @@ +FROM scratch +LABEL maintainer "fithwum" +ADD /debian-bookworm.tar.bz2 / +CMD ["/bin/bash"] \ No newline at end of file diff --git a/debian/docker-build/debian-bookworm.tar.bz2 b/debian/docker-build/debian-bookworm.tar.bz2 new file mode 100644 index 0000000..a6db7a1 Binary files /dev/null and b/debian/docker-build/debian-bookworm.tar.bz2 differ