feature test
This commit is contained in:
@ -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
|
||||||
Reference in New Issue
Block a user