Private
Public Access
1
0

merge: PR #8 - fix Alpine abuild key generation

- Force HOME=/root in build-alpine.sh for consistent key location
- Use find instead of ls for key discovery (handles dash-prefixed filenames)
- Search multiple paths for generated keys
- Copy keys from KEY_DIR to builduser home directory
- Set env.HOME=/root in Alpine container spec
- Remove separate abuild-keygen step (handled by build-alpine.sh)
- Add error exit if no signing key found

Co-authored-by: git-echo <git-echo@moon-dragon.us>
This commit is contained in:
Draco Lunaris
2026-05-31 16:13:49 -05:00
committed by GitHub
parent a3b299b116
commit 80f8f4fed2
2 changed files with 27 additions and 10 deletions

View File

@ -244,6 +244,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: alpine:latest image: alpine:latest
env:
HOME: /root
steps: steps:
- name: Install prerequisites for actions/checkout - name: Install prerequisites for actions/checkout
run: apk add --no-cache bash git curl tar run: apk add --no-cache bash git curl tar
@ -258,8 +260,6 @@ jobs:
run: rustup target add x86_64-unknown-linux-musl run: rustup target add x86_64-unknown-linux-musl
- name: Build release binary (musl target) - name: Build release binary (musl target)
run: cargo build --release --target x86_64-unknown-linux-musl run: cargo build --release --target x86_64-unknown-linux-musl
- name: Generate abuild signing keys
run: abuild-keygen -a -n
- name: Build Alpine package - name: Build Alpine package
run: | run: |
chmod +x build-alpine.sh chmod +x build-alpine.sh

View File

@ -22,10 +22,22 @@ fi
# Generate abuild signing keys # Generate abuild signing keys
echo "Generating abuild signing keys..." echo "Generating abuild signing keys..."
apk add --no-cache abuild apk add --no-cache abuild
# Force HOME to /root for consistent key generation location
export HOME=/root
mkdir -p "$HOME/.abuild"
abuild-keygen -a -n 2>&1 | tee /tmp/keygen.log abuild-keygen -a -n 2>&1 | tee /tmp/keygen.log
KEYFILE=$(ls /root/.abuild/*.rsa 2>/dev/null | head -1)
# Find the generated key using find (ls fails on dash-prefixed filenames)
KEYFILE=$(find "$HOME/.abuild" -name "*.rsa" ! -name "*.pub" -type f 2>/dev/null | head -1)
if [ -z "$KEYFILE" ]; then if [ -z "$KEYFILE" ]; then
KEYFILE=$(ls /root/.abuild/-*.rsa 2>/dev/null | head -1) # Fallback: check other common locations where keys might end up
KEYFILE=$(find /github/home/.abuild -name "*.rsa" ! -name "*.pub" -type f 2>/dev/null | head -1)
fi
if [ -z "$KEYFILE" ]; then
echo "ERROR: No abuild signing key found!"
echo "Searched: $HOME/.abuild, /github/home/.abuild"
exit 1
fi fi
echo "Found key: $KEYFILE" echo "Found key: $KEYFILE"
echo "PACKAGER_PRIVKEY=\"$KEYFILE\"" > /etc/abuild.conf echo "PACKAGER_PRIVKEY=\"$KEYFILE\"" > /etc/abuild.conf
@ -117,6 +129,10 @@ EOF
# Build APK package # Build APK package
echo "Building APK package..." echo "Building APK package..."
# Determine the directory where abuild keys were generated
KEY_DIR=$(dirname "$KEYFILE" 2>/dev/null || echo "$HOME/.abuild")
echo "Key directory: $KEY_DIR"
# For CI environments where we may run as root or as a build user # For CI environments where we may run as root or as a build user
if [ "$(id -u)" = "0" ]; then if [ "$(id -u)" = "0" ]; then
echo "Running as root - creating build user for abuild..." echo "Running as root - creating build user for abuild..."
@ -127,17 +143,18 @@ if [ "$(id -u)" = "0" ]; then
chown -R builduser:builduser "$WORKSPACE_DIR" chown -R builduser:builduser "$WORKSPACE_DIR"
# Set up builduser home directory for abuild # Set up builduser home directory for abuild
# Copy keys from wherever abuild-keygen put them (KEY_DIR)
mkdir -p /home/builduser/.abuild mkdir -p /home/builduser/.abuild
cp /root/.abuild/* /home/builduser/.abuild/ 2>/dev/null || true cp "$KEY_DIR"/* /home/builduser/.abuild/ 2>/dev/null || true
chown -R builduser:builduser /home/builduser/.abuild chown -R builduser:builduser /home/builduser/.abuild
KEYFILE=$(ls /home/builduser/.abuild/*.rsa 2>/dev/null | head -1) BUILDUSER_KEYFILE=$(ls /home/builduser/.abuild/*.rsa 2>/dev/null | head -1)
if [ -z "$KEYFILE" ]; then if [ -z "$BUILDUSER_KEYFILE" ]; then
KEYFILE=$(ls /home/builduser/.abuild/-*.rsa 2>/dev/null | head -1) BUILDUSER_KEYFILE=$(ls /home/builduser/.abuild/-*.rsa 2>/dev/null | head -1)
fi fi
echo "Key file: $KEYFILE" echo "Builduser key file: $BUILDUSER_KEYFILE"
echo "PACKAGER_PRIVKEY=\"$KEYFILE\"" > /home/builduser/.abuild/abuild.conf echo "PACKAGER_PRIVKEY=\"$BUILDUSER_KEYFILE\"" > /home/builduser/.abuild/abuild.conf
chown builduser:builduser /home/builduser/.abuild/abuild.conf chown builduser:builduser /home/builduser/.abuild/abuild.conf
# Install public key BEFORE abuild (fixes UNTRUSTED signature) # Install public key BEFORE abuild (fixes UNTRUSTED signature)