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 chmod +x build.sh
./build.sh ./build.sh
- name: List built packages - name: Verify and list built packages
run: | run: |
set -euo pipefail set -euo pipefail
echo "=== Built packages ===" echo "=== Verifying package build ==="
if [[ -d "zabbix-apk-builder/packages" ]]; then cd zabbix-apk-builder
ls -la zabbix-apk-builder/packages/
echo "=== Package sizes ===" if [[ ! -d "packages" ]]; then
find zabbix-apk-builder/packages/ -name "*.apk" -exec du -h {} \; echo "❌ ERROR: packages directory does not exist"
else echo "Current directory contents:"
echo "ERROR: No packages directory found" ls -la .
exit 1 exit 1
fi 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 - name: Upload packages as artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: zabbix-apk-packages name: zabbix-apk-packages-${{ gitea.run_number }}
path: zabbix-apk-builder/packages/*.apk path: |
zabbix-apk-builder/packages/**/*.apk
!zabbix-apk-builder/packages/**/APKINDEX.tar.gz
retention-days: 30 retention-days: 30
if-no-files-found: error
deploy-test: deploy-test:
needs: [check-version, build-packages] needs: [check-version, build-packages]

View File

@@ -36,34 +36,32 @@ COPY --chown=builder:builder . /home/builder/zabbix/
WORKDIR /home/builder/zabbix WORKDIR /home/builder/zabbix
# Create build script # Create build script that just builds packages
USER root USER root
RUN cat > /usr/local/bin/build-and-copy.sh << 'EOF' RUN cat > /usr/local/bin/build-packages.sh << 'EOF'
#!/bin/sh #!/bin/sh
set -e set -e
echo "Building packages as builder user..." echo "Building packages as builder user..."
sudo -u builder sh -c " sudo -u builder sh -c "
cd /home/builder/zabbix cd /home/builder/zabbix
echo 'Generating checksums...'
abuild checksum abuild checksum
echo 'Building packages...'
abuild -r abuild -r
" "
echo "Copying packages to output..." echo "Build complete! Packages built in /home/builder/packages:"
find /home/builder/packages -name '*.apk' -exec cp {} /output/ \; find /home/builder/packages -name "*.apk" -exec ls -la {} \;
# Make files readable and writable by everyone (fixes permission issues) echo "Setting proper permissions on packages..."
chmod 666 /output/*.apk 2>/dev/null || true chmod 644 /home/builder/packages/*.apk 2>/dev/null || true
# Also try changing ownership to a generic user ID that should work echo "Final package list (excluding APKINDEX):"
# Use UID 1000 which is common for CI runners find /home/builder/packages -name "*.apk" -exec ls -la {} \;
chown 1000:1000 /output/*.apk 2>/dev/null || true
echo "Build complete! Packages:"
ls -la /output/
EOF EOF
RUN chmod +x /usr/local/bin/build-and-copy.sh RUN chmod +x /usr/local/bin/build-packages.sh
# Set build command # 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 "Project directory: $PROJECT_DIR"
echo "Output directory: $OUTPUT_DIR" echo "Output directory: $OUTPUT_DIR"
# Clean up any existing containers # Clean up function
cleanup() { cleanup() {
echo "Cleaning up..." echo "Cleaning up container..."
docker rm -f "$CONTAINER_NAME" 2>/dev/null || true docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true
} }
trap cleanup EXIT trap cleanup EXIT
# Create output directory # Clean and create output directory
rm -rf "$OUTPUT_DIR"
mkdir -p "$OUTPUT_DIR" mkdir -p "$OUTPUT_DIR"
# Build Docker image # Build Docker image
echo "Building Docker image..." echo "Building Docker image..."
docker build -t "$IMAGE_NAME" "$PROJECT_DIR" docker build -t "$IMAGE_NAME" "$PROJECT_DIR"
# Run the build in container # Run the build in the container
echo "Running package build..." echo "Running package build in container..."
docker run --rm \ docker run --name "$CONTAINER_NAME" "$IMAGE_NAME"
--name "$CONTAINER_NAME" \
-v "$OUTPUT_DIR:/output" \ # Copy packages from container to host
"$IMAGE_NAME" 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 "Build completed successfully!"
echo "To install packages:" echo "Packages are in $OUTPUT_DIR:"
echo " apk add --allow-untrusted $OUTPUT_DIR/zabbix-agent-*.apk" find "$OUTPUT_DIR" -name "*.apk" -exec ls -la {} \;
echo " apk add --allow-untrusted $OUTPUT_DIR/zabbix-proxy-*.apk" 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