.gitea/workflows/build-package.yml aktualisiert
Some checks failed
Build Arch Packages / detect-changes (push) Successful in 5s
Build Arch Packages / build-packages (push) Failing after 34s

This commit is contained in:
2025-08-29 15:45:32 +02:00
parent e5ed57483e
commit a100ae4ac0

View File

@@ -1,4 +1,4 @@
name: Build Arch Packages (Enhanced)
name: Build Arch Packages
on:
push:
@@ -12,52 +12,96 @@ jobs:
outputs:
packages: ${{ steps.changes.outputs.packages }}
matrix: ${{ steps.changes.outputs.matrix }}
total: ${{ steps.changes.outputs.total }}
steps:
- uses: actions/checkout@v4
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Debug Repository Structure
run: |
echo "📁 Repository structure:"
find . -name "PKGBUILD" -type f | head -20
echo ""
ls -la
- name: Detect Changed Packages
id: changes
run: |
echo "🔍 Detecting packages..."
# Alle verfügbaren Pakete finden
all_packages=$(find . -name "PKGBUILD" -type f | xargs dirname | sed 's|^\./||' | sort)
# Bei Push: nur geänderte Pakete
echo "Found packages:"
echo "$all_packages"
if [ -z "$all_packages" ]; then
echo "❌ No PKGBUILD files found!"
echo "packages=[]" >> $GITHUB_OUTPUT
echo "matrix=[]" >> $GITHUB_OUTPUT
exit 0
fi
# Bei Push: nur geänderte Pakete (vereinfacht)
if [ "${{ github.event_name }}" = "push" ] && [ "${{ github.event.before }}" != "0000000000000000000000000000000000000000" ]; then
changed_files=$(git diff --name-only ${{ github.event.before }}..${{ github.sha }})
changed_packages=""
echo "Changed files: $changed_files"
packages_to_build=""
for pkg in $all_packages; do
if echo "$changed_files" | grep -q "^$pkg/"; then
changed_packages="$changed_packages $pkg"
packages_to_build="$packages_to_build$pkg"$'\n'
fi
done
packages_to_build=$(echo $changed_packages | tr ' ' '\n' | sort | uniq)
# Falls keine Änderungen in Paketen, trotzdem alle bauen (für ersten Test)
if [ -z "$packages_to_build" ]; then
packages_to_build="$all_packages"
fi
else
# Bei PR oder initial commit: alle Pakete
packages_to_build="$all_packages"
fi
# Leere Zeilen entfernen
packages_to_build=$(echo "$packages_to_build" | grep -v '^$' | sort | uniq)
echo "Packages to build:"
echo "$packages_to_build"
# JSON Arrays erstellen
if [ -n "$packages_to_build" ]; then
packages_json=$(echo "$packages_to_build" | jq -R -s -c 'split("\n") | map(select(length > 0))')
matrix_json=$(echo "$packages_to_build" | jq -R -s -c 'split("\n") | map(select(length > 0)) | map({package: ., name: (. | split("/") | last)})')
total=$(echo "$packages_to_build" | wc -l)
# Korrekte JSON-Erstellung
packages_json="["
matrix_json="["
first=true
while IFS= read -r pkg; do
if [ -n "$pkg" ]; then
if [ "$first" = true ]; then
first=false
else
packages_json="$packages_json,"
matrix_json="$matrix_json,"
fi
packages_json="$packages_json\"$pkg\""
matrix_json="$matrix_json{\"package\":\"$pkg\"}"
fi
done <<< "$packages_to_build"
packages_json="$packages_json]"
matrix_json="$matrix_json]"
else
packages_json="[]"
matrix_json="[]"
total="0"
fi
echo "Final JSON:"
echo "packages=$packages_json"
echo "matrix=$matrix_json"
echo "packages=$packages_json" >> $GITHUB_OUTPUT
echo "matrix=$matrix_json" >> $GITHUB_OUTPUT
echo "total=$total" >> $GITHUB_OUTPUT
echo "📦 Found $total package(s) to build:"
echo "$packages_to_build"
build-packages:
needs: detect-changes
@@ -76,27 +120,63 @@ jobs:
run: |
echo "🔧 Setting up build environment..."
pacman -Syu --noconfirm
pacman -S --noconfirm base-devel git nodejs npm namcap pacman-contrib sudo curl
# Builder user
pacman -S --noconfirm base-devel git nodejs npm namcap pacman-contrib sudo
useradd -m -G wheel builder
echo 'builder ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
echo 'builder:builder' | chpasswd
- name: Checkout Repository
uses: actions/checkout@v4
- name: Debug Matrix Variables
run: |
echo "🐛 Debug Matrix Variables:"
echo "matrix.package: '${{ matrix.package }}'"
echo "Current directory: $(pwd)"
echo "Directory contents:"
ls -la
if [ -n "${{ matrix.package }}" ]; then
echo "Target package directory: ${{ matrix.package }}"
if [ -d "${{ matrix.package }}" ]; then
echo "✅ Directory exists"
ls -la "${{ matrix.package }}"
else
echo "❌ Directory does not exist"
fi
else
echo "❌ matrix.package is empty!"
exit 1
fi
- name: Package Information
run: |
echo "📦 Building package: ${{ matrix.package }}"
cd "${{ matrix.package }}"
package_dir="${{ matrix.package }}"
# PKGBUILD info extrahieren
if [ -z "$package_dir" ]; then
echo "❌ Package directory is empty"
exit 1
fi
if [ ! -d "$package_dir" ]; then
echo "❌ Package directory '$package_dir' does not exist"
exit 1
fi
echo "📦 Building package: $package_dir"
cd "$package_dir"
if [ ! -f "PKGBUILD" ]; then
echo "❌ No PKGBUILD found in $package_dir"
exit 1
fi
# PKGBUILD info
source PKGBUILD
echo "Package name: $pkgname"
echo "Version: $pkgver-$pkgrel"
echo "Description: $pkgdesc"
# Set ownership
chown -R builder:builder /workspace/cseyfferth/repo
- name: Validate PKGBUILD
@@ -105,42 +185,29 @@ jobs:
echo "🔍 Validating PKGBUILD..."
sudo -u builder namcap PKGBUILD
# Dependency check
sudo -u builder makepkg --printsrcinfo > .SRCINFO
cat .SRCINFO
- name: Build Package
run: |
cd "${{ matrix.package }}"
echo "🔨 Building package..."
sudo -u builder makepkg -s --noconfirm --needed
# Build mit verbose output
sudo -u builder makepkg -s --noconfirm --needed -L
# Zeige gebaute Pakete
echo "✅ Successfully built packages:"
echo "✅ Built packages:"
ls -la *.pkg.tar.zst
- name: Test Package
run: |
cd "${{ matrix.package }}"
echo "🧪 Testing built packages..."
echo "🧪 Testing packages..."
for pkg in *.pkg.tar.zst; do
if [ -f "$pkg" ]; then
echo "Testing $pkg..."
sudo -u builder namcap "$pkg" || echo "⚠️ namcap warnings for $pkg"
# Package info
sudo -u builder pacman -Qip "$pkg"
sudo -u builder namcap "$pkg" || true
fi
done
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.name }}-${{ github.sha }}
path: |
${{ matrix.package }}/*.pkg.tar.zst
${{ matrix.package }}/.SRCINFO
name: ${{ matrix.package }}-package
path: ${{ matrix.package }}/*.pkg.tar.zst
retention-days: 30