diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 72eed4a..0c099f7 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -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 \ No newline at end of file