TEST: Full Claude reword
Some checks failed
Zabbix APK Builder / check-version (push) Successful in 11s
Zabbix APK Builder / update-version (push) Has been skipped
Zabbix APK Builder / build-packages (push) Failing after 5m9s
Zabbix APK Builder / deploy-test (push) Has been skipped

This commit is contained in:
2025-09-04 17:04:47 +02:00
parent 8ab7ff54b9
commit d7f1052305
3 changed files with 83 additions and 38 deletions

View File

@@ -158,26 +158,56 @@ jobs:
chmod +x build.sh
./build.sh
- name: List built packages
- name: Verify and list built packages
run: |
set -euo pipefail
echo "=== Built packages ==="
if [[ -d "zabbix-apk-builder/packages" ]]; then
ls -la zabbix-apk-builder/packages/
echo "=== Package sizes ==="
find zabbix-apk-builder/packages/ -name "*.apk" -exec du -h {} \;
else
echo "ERROR: No packages directory found"
echo "=== Verifying package build ==="
cd zabbix-apk-builder
if [[ ! -d "packages" ]]; then
echo "❌ ERROR: packages directory does not exist"
echo "Current directory contents:"
ls -la .
exit 1
fi
# Check for packages in the standard Alpine directory structure
PACKAGE_DIRS=(
"packages/*.apk"
"packages/builder/x86_64/*.apk"
"packages/x86_64/*.apk"
)
FOUND_PACKAGES=false
for pattern in "${PACKAGE_DIRS[@]}"; do
if ls $pattern >/dev/null 2>&1; then
FOUND_PACKAGES=true
echo "✅ Packages found in: $(dirname $pattern)"
ls -la $pattern
break
fi
done
if [[ "$FOUND_PACKAGES" == "false" ]]; then
echo "❌ ERROR: No packages found in any expected location"
echo "Directory structure:"
find packages -type f -name "*.apk" 2>/dev/null || echo "No .apk files found"
exit 1
fi
echo "=== Package details ==="
find packages -name "*.apk" -exec bash -c 'echo "Package: $(basename "$1")"; echo "Size: $(du -h "$1" | cut -f1)"; echo "---"' _ {} \;
- name: Upload packages as artifacts
uses: actions/upload-artifact@v4
with:
name: zabbix-apk-packages
path: zabbix-apk-builder/packages/*.apk
name: zabbix-apk-packages-${{ gitea.run_number }}
path: |
zabbix-apk-builder/packages/**/*.apk
!zabbix-apk-builder/packages/**/APKINDEX.tar.gz
retention-days: 30
if-no-files-found: error
deploy-test:
needs: [check-version, build-packages]

View File

@@ -36,34 +36,32 @@ COPY --chown=builder:builder . /home/builder/zabbix/
WORKDIR /home/builder/zabbix
# Create build script
# Create build script that just builds packages
USER root
RUN cat > /usr/local/bin/build-and-copy.sh << 'EOF'
RUN cat > /usr/local/bin/build-packages.sh << 'EOF'
#!/bin/sh
set -e
echo "Building packages as builder user..."
sudo -u builder sh -c "
cd /home/builder/zabbix
echo 'Generating checksums...'
abuild checksum
echo 'Building packages...'
abuild -r
"
echo "Copying packages to output..."
find /home/builder/packages -name '*.apk' -exec cp {} /output/ \;
echo "Build complete! Packages built in /home/builder/packages:"
find /home/builder/packages -name "*.apk" -exec ls -la {} \;
# Make files readable and writable by everyone (fixes permission issues)
chmod 666 /output/*.apk 2>/dev/null || true
echo "Setting proper permissions on packages..."
chmod 644 /home/builder/packages/*.apk 2>/dev/null || true
# Also try changing ownership to a generic user ID that should work
# Use UID 1000 which is common for CI runners
chown 1000:1000 /output/*.apk 2>/dev/null || true
echo "Build complete! Packages:"
ls -la /output/
echo "Final package list (excluding APKINDEX):"
find /home/builder/packages -name "*.apk" -exec ls -la {} \;
EOF
RUN chmod +x /usr/local/bin/build-and-copy.sh
RUN chmod +x /usr/local/bin/build-packages.sh
# Set build command
CMD ["/usr/local/bin/build-and-copy.sh"]
CMD ["/usr/local/bin/build-packages.sh"]

View File

@@ -12,29 +12,46 @@ echo "=== Zabbix APK Builder ==="
echo "Project directory: $PROJECT_DIR"
echo "Output directory: $OUTPUT_DIR"
# Clean up any existing containers
# Clean up function
cleanup() {
echo "Cleaning up..."
docker rm -f "$CONTAINER_NAME" 2>/dev/null || true
echo "Cleaning up container..."
docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true
}
trap cleanup EXIT
# Create output directory
# Clean and create output directory
rm -rf "$OUTPUT_DIR"
mkdir -p "$OUTPUT_DIR"
# Build Docker image
echo "Building Docker image..."
docker build -t "$IMAGE_NAME" "$PROJECT_DIR"
# Run the build in container
echo "Running package build..."
docker run --rm \
--name "$CONTAINER_NAME" \
-v "$OUTPUT_DIR:/output" \
"$IMAGE_NAME"
# Run the build in the container
echo "Running package build in container..."
docker run --name "$CONTAINER_NAME" "$IMAGE_NAME"
echo "Build completed successfully!"
echo "To install packages:"
echo " apk add --allow-untrusted $OUTPUT_DIR/zabbix-agent-*.apk"
echo " apk add --allow-untrusted $OUTPUT_DIR/zabbix-proxy-*.apk"
# Copy packages from container to host
echo "Copying packages from container..."
if docker cp "$CONTAINER_NAME:/home/builder/packages/." "$OUTPUT_DIR/"; then
echo "✅ Packages copied successfully"
# Remove APKINDEX files (we only want the .apk packages)
echo "Removing repository index files..."
find "$OUTPUT_DIR" -name "APKINDEX.tar.gz" -delete 2>/dev/null || true
# Fix permissions on copied files
echo "Fixing file permissions..."
find "$OUTPUT_DIR" -name "*.apk" -exec chmod 644 {} \; 2>/dev/null || true
echo "Build completed successfully!"
echo "Packages are in $OUTPUT_DIR:"
find "$OUTPUT_DIR" -name "*.apk" -exec ls -la {} \;
else
echo "❌ Failed to copy packages"
echo "Checking what's in the container..."
docker exec "$CONTAINER_NAME" find /home/builder -name "*.apk" -exec ls -la {} \; 2>/dev/null || true
docker exec "$CONTAINER_NAME" ls -la /home/builder/packages/ 2>/dev/null || true
exit 1
fi