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