Initial commit
This commit is contained in:
commit
ad4d73c503
4
README.md
Normal file
4
README.md
Normal file
@ -0,0 +1,4 @@
|
||||
Example for single build
|
||||
`buildah build -f builder-x86.dockerfile -t builderx86:latest`
|
||||
|
||||
Build all containers and push by executing `create-containers.sh`
|
18
builder-arm.dockerfile
Normal file
18
builder-arm.dockerfile
Normal file
@ -0,0 +1,18 @@
|
||||
FROM docker.io/menci/archlinuxarm:base-devel
|
||||
|
||||
# install dependencies
|
||||
RUN pacman -Syu --noconfirm \
|
||||
sudo \
|
||||
git
|
||||
|
||||
# allow sudo for all users
|
||||
RUN echo '%wheel ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/wheel
|
||||
|
||||
# add builder user
|
||||
RUN useradd builder -s /bin/bash -G wheel
|
||||
|
||||
# copy builder script
|
||||
COPY --chmod=755 builder.sh /
|
||||
|
||||
# execute builder script
|
||||
ENTRYPOINT [ "/builder.sh" ]
|
18
builder-x86.dockerfile
Normal file
18
builder-x86.dockerfile
Normal file
@ -0,0 +1,18 @@
|
||||
FROM docker.io/archlinux:base-devel
|
||||
|
||||
# install dependencies
|
||||
RUN pacman -Syu --noconfirm \
|
||||
sudo \
|
||||
git
|
||||
|
||||
# allow sudo for all users
|
||||
RUN echo '%wheel ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/wheel
|
||||
|
||||
# add builder user
|
||||
RUN useradd builder -s /bin/bash -G wheel
|
||||
|
||||
# copy builder script
|
||||
COPY --chmod=755 builder.sh /
|
||||
|
||||
# execute builder script
|
||||
ENTRYPOINT [ "/builder.sh" ]
|
30
builder.sh
Executable file
30
builder.sh
Executable file
@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env sh
|
||||
set -euo pipefail
|
||||
|
||||
# check if one argument is present
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Pass the AUR package name you want to build"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# relaunch script as builder user
|
||||
if [ "$(whoami)" != "builder" ]; then
|
||||
sudo -u builder bash "$0" "$@"
|
||||
exit
|
||||
fi
|
||||
|
||||
echo "MAKEFLAGS=\"-j$(nproc)\"" | sudo tee -a /etc/makepkg.conf
|
||||
|
||||
export TMPDIR=$(mktemp -d)
|
||||
|
||||
cd "$TMPDIR"
|
||||
|
||||
git clone https://aur.archlinux.org/"$1".git
|
||||
|
||||
cd "$TMPDIR/$1"
|
||||
|
||||
makepkg -As --noconfirm
|
||||
|
||||
sudo mkdir -p /out
|
||||
|
||||
sudo cp ./*".pkg.tar.zst" /out
|
34
create-containers.sh
Executable file
34
create-containers.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# read variables from file
|
||||
eval "$(cat variables)"
|
||||
|
||||
# Create a multi-architecture manifest
|
||||
buildah manifest create ${MANIFEST_NAME}
|
||||
|
||||
# Build your amd64 architecture container
|
||||
buildah bud \
|
||||
--tag "${REGISTRY}/${USER}/${IMAGE_NAME}:${IMAGE_TAG}" \
|
||||
--tag "${REGISTRY}/${USER}/${IMAGE_NAME}:latest" \
|
||||
--manifest ${MANIFEST_NAME} \
|
||||
--file ${AMD64_FILE} \
|
||||
--arch amd64
|
||||
|
||||
# Build your arm64 architecture container
|
||||
buildah bud \
|
||||
--tag "${REGISTRY}/${USER}/${IMAGE_NAME}:${IMAGE_TAG}" \
|
||||
--tag "${REGISTRY}/${USER}/${IMAGE_NAME}:latest" \
|
||||
--manifest ${MANIFEST_NAME} \
|
||||
--file ${ARM64_FILE} \
|
||||
--arch arm64
|
||||
|
||||
# Push the full manifest, with both CPU Architectures
|
||||
buildah manifest push --all \
|
||||
${MANIFEST_NAME} \
|
||||
"docker://${REGISTRY}/${USER}/${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
buildah manifest push --all \
|
||||
${MANIFEST_NAME} \
|
||||
"docker://${REGISTRY}/${USER}/${IMAGE_NAME}:latest"
|
||||
|
||||
# remove manifest
|
||||
buildah manifest rm ${MANIFEST_NAME}
|
Reference in New Issue
Block a user