feature test

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

View File

@ -9,80 +9,56 @@ 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 }}
needs: prepare
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- 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; } get() { grep -E "^$1\s*[?:]?=" "$MF" 2>/dev/null | head -1 | sed 's/[^=]*=\s*//' | xargs; }
echo "version=$(get VERSION)" >> "$GITHUB_OUTPUT" VERSION=$(get VERSION)
echo "image=$(get IMAGE || echo 'debian:bookworm-slim')" >> "$GITHUB_OUTPUT" IMAGE=$(get IMAGE); IMAGE="${IMAGE:-debian:bookworm-slim}"
echo "steps=$(get STEPS || echo 'env download build publish')" >> "$GITHUB_OUTPUT" STEPS=$(get STEPS); STEPS="${STEPS:-env download build publish}"
- name: Run stages WORK_DIR="$(pwd)/$PKG"
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 for STEP in $STEPS; do
SCRIPT="$SCRIPTS_DIR/${STEP}.sh" SCRIPT="$WORK_DIR/scripts/${STEP}.sh"
if [[ ! -f "$SCRIPT" ]]; then if [[ ! -f "$SCRIPT" ]]; then
echo "⏭ skip: $STEP (no ${STEP}.sh)" echo "⏭ skip: $STEP"
continue continue
fi fi
echo "▶ run: $STEP" echo "▶ $STEP"
docker run --rm \ docker run --rm \
-v "$WORK_DIR:/pkg" \ -v "$WORK_DIR:/pkg" \
-w /pkg \ -w /pkg \
-e PACKAGE \ -e PACKAGE="$PKG" \
-e VERSION \ -e VERSION \
-e GITEA_URL \ -e GITEA_URL \
-e GITEA_OWNER \ -e GITEA_OWNER \
@ -91,3 +67,4 @@ jobs:
"$IMAGE" \ "$IMAGE" \
bash /pkg/scripts/${STEP}.sh bash /pkg/scripts/${STEP}.sh
done done
done