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:
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user