From 5ea81082107764d211139d0b115b1cb3c59617a7 Mon Sep 17 00:00:00 2001 From: KunoiSayami Date: Tue, 26 Oct 2021 18:57:31 +0800 Subject: feat(docker): Support using docker to build packages Signed-off-by: KunoiSayami --- docker/.gitignore | 2 ++ docker/README.md | 20 ++++++++++++++++++++ docker/aarch64/dockerfile | 1 + docker/docker.env.default | 3 +++ docker/dockerbuild.sh | 41 +++++++++++++++++++++++++++++++++++++++++ docker/dockerfile | 13 +++++++++++++ docker/onekey.sh | 9 +++++++++ docker/x86_64/dockerfile | 1 + 8 files changed, 90 insertions(+) create mode 100644 docker/.gitignore create mode 100644 docker/README.md create mode 100644 docker/aarch64/dockerfile create mode 100644 docker/docker.env.default create mode 100755 docker/dockerbuild.sh create mode 100644 docker/dockerfile create mode 100755 docker/onekey.sh create mode 100644 docker/x86_64/dockerfile (limited to 'docker') diff --git a/docker/.gitignore b/docker/.gitignore new file mode 100644 index 0000000..cb288c2 --- /dev/null +++ b/docker/.gitignore @@ -0,0 +1,2 @@ +docker.env +!docker.env.default diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..463af2c --- /dev/null +++ b/docker/README.md @@ -0,0 +1,20 @@ +## Docker images + +### Usage + +Choose your architecture (such as `aarch64`) + +```plain +$ cd aarch64 +$ sudo docker build . -t repobuildbase +$ cd .. +$ sudo docker build . -t repobuild +``` + +Or you can use `onekey.sh` to build it. + +Then, start image + +```plain +$ sudo docker run -it --rm --env-file docker.env repobuild +``` diff --git a/docker/aarch64/dockerfile b/docker/aarch64/dockerfile new file mode 100644 index 0000000..2ec90e6 --- /dev/null +++ b/docker/aarch64/dockerfile @@ -0,0 +1 @@ +FROM lopsided/archlinux \ No newline at end of file diff --git a/docker/docker.env.default b/docker/docker.env.default new file mode 100644 index 0000000..b8b5667 --- /dev/null +++ b/docker/docker.env.default @@ -0,0 +1,3 @@ +GPG_PRIV_KEY= +REMOTE_PATH= +UPLOAD_TOKEN= diff --git a/docker/dockerbuild.sh b/docker/dockerbuild.sh new file mode 100755 index 0000000..da76650 --- /dev/null +++ b/docker/dockerbuild.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +set -Eeuo pipefail + +#export + +cd /home/build +git clone --depth=1 https://github.com/kunoisayami/repos + + +if [ $UID -eq 0 ]; then + chown -R build:build repos + echo "$TARGET_HOSTS" | base64 -d >> /etc/hosts +else + echo "$TARGET_HOSTS" | base64 -d | sudo tee -a /etc/hosts >/dev/null +fi + +pushd repos +if [ $UID -eq 0 ]; then + su -c "echo $GPG_PRIV_KEY | base64 -d | gpg --import" build + + pushd repo/pod2man + su -c 'makepkg -i -s --noconfirm --needed' build + popd + su -c 'BUILD_ONLY="" ./pkgbuild.sh' build + + su -e -c './ci-upload.sh' build +else + + echo $GPG_PRIV_KEY | base64 -d | gpg --import + + pushd repo/pod2man + makepkg -i -s --noconfirm --needed + popd + BUILD_ONLY='' ./pkgbuild.sh + ./ci-upload.sh + +fi + +popd repos + diff --git a/docker/dockerfile b/docker/dockerfile new file mode 100644 index 0000000..4ae53aa --- /dev/null +++ b/docker/dockerfile @@ -0,0 +1,13 @@ +FROM repobuildbase:latest + +RUN pacman --noconfirm --needed -Syu base-devel gnupg git + +RUN useradd -m build + +RUN echo 'build ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers + +COPY dockerbuild.sh /home/build/ + +USER build + +ENTRYPOINT ["bash", "-c", "/home/build/dockerbuild.sh"] diff --git a/docker/onekey.sh b/docker/onekey.sh new file mode 100755 index 0000000..dcccf93 --- /dev/null +++ b/docker/onekey.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# end up when failed +set -Eeuo pipefail + +pushd "$(uname -a)" || echo "Can't find your architecture" && exit 0 +docker build . -t repobuildbase +popd +docker build . -t repobuild diff --git a/docker/x86_64/dockerfile b/docker/x86_64/dockerfile new file mode 100644 index 0000000..6f7a91e --- /dev/null +++ b/docker/x86_64/dockerfile @@ -0,0 +1 @@ +FROM archlinux \ No newline at end of file -- cgit v1.3.1