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