feature test

This commit is contained in:
paltovkone
2026-03-09 21:59:44 +04:00
parent be19be7930
commit 427d045482

View File

@ -9,85 +9,62 @@ on:
default: ''
jobs:
prepare:
name: Prepare matrix
build:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- name: Build package matrix
id: matrix
- name: Build packages
shell: bash
env:
GITEA_TOKEN: ${{ secrets.G_TOKEN }}
GITEA_URL: ${{ vars.G_URL }}
GITEA_OWNER: ${{ vars.G_OWNER }}
GITEA_REPO: ${{ vars.G_REPO }}
run: |
INPUT="${{ github.event.inputs.packages }}"
if [[ -n "$INPUT" ]]; then
PACKAGES=$(echo "$INPUT" | tr ',' '\n' | xargs | jq -Rrc '[splits(" ")]')
PACKAGES=$(echo "$INPUT" | tr ',' ' ')
else
PACKAGES=$(find . -maxdepth 2 -name Makefile \
| sed 's|^\./||;s|/Makefile||' \
| grep -v '^_' \
| sort \
| jq -Rsc '[split("\n")[] | select(. != "")]')
| tr '\n' ' ')
fi
echo "matrix={\"package\": $PACKAGES}" >> "$GITHUB_OUTPUT"
for PKG in $PACKAGES; do
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📦 Package: $PKG"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
build:
name: ${{ matrix.package }}
needs: prepare
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.prepare.outputs.matrix) }}
MF="$PKG/Makefile"
get() { grep -E "^$1\s*[?:]?=" "$MF" 2>/dev/null | head -1 | sed 's/[^=]*=\s*//' | xargs; }
steps:
- uses: actions/checkout@v4
VERSION=$(get VERSION)
IMAGE=$(get IMAGE); IMAGE="${IMAGE:-debian:bookworm-slim}"
STEPS=$(get STEPS); STEPS="${STEPS:-env download build publish}"
- name: Read Makefile
id: cfg
shell: bash
run: |
MF="${{ matrix.package }}/Makefile"
get() { grep -E "^$1\s*[?:]?=" "$MF" 2>/dev/null | head -1 | sed 's/[^=]*=\s*//' | xargs; }
WORK_DIR="$(pwd)/$PKG"
echo "version=$(get VERSION)" >> "$GITHUB_OUTPUT"
echo "image=$(get IMAGE || echo 'debian:bookworm-slim')" >> "$GITHUB_OUTPUT"
echo "steps=$(get STEPS || echo 'env download build publish')" >> "$GITHUB_OUTPUT"
- name: Run stages
shell: bash
env:
GITEA_TOKEN: ${{ secrets.G_TOKEN }}
PACKAGE: ${{ matrix.package }}
VERSION: ${{ steps.cfg.outputs.version }}
GITEA_URL: ${{ vars.G_URL }}
GITEA_OWNER: ${{ vars.G_OWNER }}
GITEA_REPO: ${{ vars.G_REPO }}
run: |
SCRIPTS_DIR="$(pwd)/${{ matrix.package }}/scripts"
WORK_DIR="$(pwd)/${{ matrix.package }}"
IMAGE="${{ steps.cfg.outputs.image }}"
STEPS="${{ steps.cfg.outputs.steps }}"
for STEP in $STEPS; do
SCRIPT="$SCRIPTS_DIR/${STEP}.sh"
if [[ ! -f "$SCRIPT" ]]; then
echo "⏭ skip: $STEP (no ${STEP}.sh)"
continue
fi
echo "▶ run: $STEP"
docker run --rm \
-v "$WORK_DIR:/pkg" \
-w /pkg \
-e PACKAGE \
-e VERSION \
-e GITEA_URL \
-e GITEA_OWNER \
-e GITEA_REPO \
-e GITEA_TOKEN \
"$IMAGE" \
bash /pkg/scripts/${STEP}.sh
for STEP in $STEPS; do
SCRIPT="$WORK_DIR/scripts/${STEP}.sh"
if [[ ! -f "$SCRIPT" ]]; then
echo "⏭ skip: $STEP"
continue
fi
echo "▶ $STEP"
docker run --rm \
-v "$WORK_DIR:/pkg" \
-w /pkg \
-e PACKAGE="$PKG" \
-e VERSION \
-e GITEA_URL \
-e GITEA_OWNER \
-e GITEA_REPO \
-e GITEA_TOKEN \
"$IMAGE" \
bash /pkg/scripts/${STEP}.sh
done
done