From 1c6fa0002f745fa66651e4be1c79dd6a725d383d Mon Sep 17 00:00:00 2001 From: Alexander Date: Sat, 26 Apr 2025 23:29:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D1=81=20=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apk-build | 24 +++++++++++------------- build.sh | 10 ++++++++++ v3.16/Dockerfile | 5 +++-- {v.3.21 => v3.21}/Dockerfile | 5 +++-- 4 files changed, 27 insertions(+), 17 deletions(-) create mode 100755 build.sh rename {v.3.21 => v3.21}/Dockerfile (94%) diff --git a/apk-build b/apk-build index 673a17e..fec457a 100644 --- a/apk-build +++ b/apk-build @@ -24,6 +24,7 @@ usage() { : "${PRIVATE_KEY:=}" : "${PUBLIC_KEY:=}" : "${REPODEST_DIR:=}" +: "${NAME_KEY:=builder}" PACKAGES_DIR="/home/builder/packages" NFS_ENABLED=0 @@ -36,6 +37,7 @@ while [ $# -gt 0 ]; do -r) PRIVATE_KEY="$2"; shift 2 ;; -u) PUBLIC_KEY="$2"; shift 2 ;; -d) REPODEST_DIR="$2"; shift 2 ;; + -k) NAME_KEY="$2"; shift 2 ;; *) echo "🚫 Ошибка: Неизвестный флаг $1"; usage ;; esac done @@ -80,49 +82,45 @@ if [ -n "$PRIVATE_KEY" ] || [ -n "$PUBLIC_KEY" ]; then # Создаем директорию .abuild mkdir -p /home/builder/.abuild # Записываем abuild.conf - echo 'PACKAGER_PRIVKEY="/home/builder/.abuild/packager.rsa"' > /home/builder/.abuild/abuild.conf + echo "PACKAGER_PRIVKEY=\"/home/builder/.abuild/$NAME_KEY.rsa\"" > /home/builder/.abuild/abuild.conf if [ $? -ne 0 ]; then echo "🚫 Ошибка при записи abuild.conf" exit 1 fi # Записываем приватный ключ - echo "$PRIVATE_KEY" > /home/builder/.abuild/packager.rsa + echo "$PRIVATE_KEY" > /home/builder/.abuild/$NAME_KEY.rsa if [ $? -ne 0 ]; then echo "🚫 Ошибка при записи приватного ключа" exit 1 fi # Записываем публичный ключ - echo "$PUBLIC_KEY" > /home/builder/.abuild/packager.rsa.pub + echo "$PUBLIC_KEY" > /home/builder/.abuild/$NAME_KEY.rsa.pub if [ $? -ne 0 ]; then echo "🚫 Ошибка при записи публичного ключа" exit 1 fi # Устанавливаем права доступа - chmod 600 /home/builder/.abuild/packager.rsa - chmod 644 /home/builder/.abuild/packager.rsa.pub /home/builder/.abuild/abuild.conf + chmod 600 /home/builder/.abuild/$NAME_KEY.rsa + chmod 644 /home/builder/.abuild/$NAME_KEY.rsa.pub /home/builder/.abuild/abuild.conf + # Копирование ключа для apk менеджера + sudo cp -v /home/builder/.abuild/$NAME_KEY.rsa.pub /etc/apk/keys/ echo "✅ Ключи abuild успешно настроены" else # Если ключи не переданы, проверяем существующие или генерируем новые if [ ! -f "/home/builder/.abuild/abuild.conf" ]; then echo "🔑 Генерирую новые ключи для abuild..." - abuild-keygen -a -i -n + echo "/home/builder/.abuild/$NAME_KEY.rsa" | abuild-keygen -a -i if [ $? -ne 0 ]; then echo "🚫 Ошибка при генерации ключей abuild" exit 1 fi echo "✅ Ключи abuild сгенерированы" else + sudo cp -v /home/builder/.abuild/$NAME_KEY.rsa.pub /etc/apk/keys/ echo "✅ Использую существующие ключи abuild" fi fi -cat /home/builder/.abuild/*.rsa.pub -cat /home/builder/.abuild/*.rsa -cat /home/builder/.abuild/abuild.conf - -# Копирование ключа для apk менеджера -sudo cp -v /home/builder/.abuild/*.rsa.pub /etc/apk/keys/ - # Монтируем NFS-ресурс, если включен if [ "$NFS_ENABLED" -eq 1 ]; then echo "🔌 Монтирую NFS-ресурс $NFS_SERVER:$NFS_PATH в $PACKAGES_DIR..." diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..645dd30 --- /dev/null +++ b/build.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +CUR_SCRIPT="$0" +CUR_DIR="$(dirname "$CUR_SCRIPT")" + +APK_BUILD_SCRIPT="$CUR_DIR/apk-build" + +cp "$APK_BUILD_SCRIPT" "$CUR_DIR/v3.21" +cd "$CUR_DIR/v3.21" +docker build . -t apk-builder:3.21-r1 diff --git a/v3.16/Dockerfile b/v3.16/Dockerfile index c5a46b9..118e359 100644 --- a/v3.16/Dockerfile +++ b/v3.16/Dockerfile @@ -12,10 +12,11 @@ ENV USER=builder \ NFS_PATH= \ PRIVATE_KEY= \ PUBLIC_KEY= \ - REPODEST_DIR= + REPODEST_DIR= \ + NAME_KEY=builder # Копируем скрипт запуска в контейнер -COPY ../apk-build /usr/bin/apk-build +COPY apk-build /usr/bin/apk-build # Устанавливаем необходимые пакеты для сборки APK и NFS RUN echo "http://mirror.yandex.ru/mirrors/alpine/v3.16/main" > /etc/apk/repositories && \ diff --git a/v.3.21/Dockerfile b/v3.21/Dockerfile similarity index 94% rename from v.3.21/Dockerfile rename to v3.21/Dockerfile index 2aee809..885856d 100644 --- a/v.3.21/Dockerfile +++ b/v3.21/Dockerfile @@ -12,10 +12,11 @@ ENV USER=builder \ NFS_PATH= \ PRIVATE_KEY= \ PUBLIC_KEY= \ - REPODEST_DIR= + REPODEST_DIR= \ + NAME_KEY=builder # Копируем скрипт запуска в контейнер -COPY --chmod=0755 ../apk-build /usr/bin/apk-build +COPY --chmod=0755 apk-build /usr/bin/apk-build # Устанавливаем необходимые пакеты для сборки APK и NFS RUN <