feature test

This commit is contained in:
paltovkone
2026-03-09 21:49:02 +04:00
parent d525feb6d0
commit 76162f62af
5 changed files with 104 additions and 66 deletions

View File

@ -1,23 +1,93 @@
name: Build packages
name: Build & Publish Packages
on:
push:
branches: [main]
workflow_dispatch:
inputs:
packages:
description: 'Packages to build (comma-separated) or leave empty for all'
required: false
default: ''
jobs:
build:
prepare:
name: Prepare matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- name: Build each package
- name: Build package matrix
id: matrix
shell: bash
run: |
for pkg in */; do
[ -f "${pkg}VERSION" ] || continue
echo "=== Processing $pkg ==="
INPUT="${{ github.event.inputs.packages }}"
if [[ -n "$INPUT" ]]; then
PACKAGES=$(echo "$INPUT" | tr ',' '\n' | xargs | jq -Rrc '[splits(" ")]')
else
PACKAGES=$(find . -maxdepth 2 -name Makefile \
| sed 's|^\./||;s|/Makefile||' \
| grep -v '^_' \
| sort \
| jq -Rsc '[split("\n")[] | select(. != "")]')
fi
echo "matrix={\"package\": $PACKAGES}" >> "$GITHUB_OUTPUT"
build:
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; }
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.GITEA_TOKEN }}
PACKAGE: ${{ matrix.package }}
VERSION: ${{ steps.cfg.outputs.version }}
GITEA_URL: ${{ vars.GITEA_URL }}
GITEA_OWNER: ${{ vars.GITEA_OWNER }}
GITEA_REPO: ${{ vars.GITEA_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 "$PWD/$pkg:/work" \
-w /work \
alpine \
ls -la
done
-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

View File

@ -1,46 +1,3 @@
PORTNAME=v2ray
VERSION=$(shell cat VERSION)
DISTFILE=v2ray-linux-64.zip
MASTER_SITE=https://github.com/v2fly/v2ray-core/releases/download/v$(VERSION)
DISTDIR=dist
GITEA_USER?=andrew
GITEA_URL?=https://git.nakolenke.org
GITEA_ORG?=nakolenke-pub
SUITE?=trixie
all: fetch build
fetch:
@echo ">>> Fetching $(DISTFILE)"
@wget -q "$(MASTER_SITE)/$(DISTFILE)" -O /tmp/$(DISTFILE)
@mkdir -p $(DISTDIR)
@unzip -q /tmp/$(DISTFILE) -d $(DISTDIR)/
@chmod +x $(DISTDIR)/$(PORTNAME)
@rm /tmp/$(DISTFILE)
build:
@echo ">>> Building $(PORTNAME)-$(VERSION).deb"
@docker run --rm \
-v $(CURDIR):/work \
-w /work \
-e VERSION=$(VERSION) \
goreleaser/nfpm package \
--config nfpm.yaml \
--target /work \
--packager deb
publish:
@echo ">>> Publishing $(PORTNAME)-$(VERSION)"
@DEB=$$(ls *.deb | head -1) && \
HTTP_CODE=$$(curl -s -o /tmp/resp.txt -w "%{http_code}" \
--user "$(GITEA_USER):$(GITEA_TOKEN)" \
--upload-file "$$DEB" \
"$(GITEA_URL)/api/packages/$(GITEA_ORG)/debian/pool/$(SUITE)/main/upload") && \
cat /tmp/resp.txt && \
[ "$$HTTP_CODE" = "201" ] || exit 1
clean:
@rm -rf $(DISTDIR) *.deb
.PHONY: all fetch build publish clean
VERSION = 5.16.1
IMAGE = debian:bookworm-slim
STEPS = env download publish

View File

@ -1,7 +1,12 @@
# v2ray/scripts/download.sh
#!/bin/bash
VERSION=$1
wget -q "https://github.com/v2fly/v2ray-core/releases/download/v${VERSION}/v2ray-linux-64.zip"
mkdir -p dist
unzip -q v2ray-linux-64.zip -d dist/
chmod +x dist/v2ray
# # v2ray/scripts/download.sh
# #!/bin/bash
# VERSION=$1
# wget -q "https://github.com/v2fly/v2ray-core/releases/download/v${VERSION}/v2ray-linux-64.zip"
# mkdir -p dist
# unzip -q v2ray-linux-64.zip -d dist/
# chmod +x dist/v2ray
#!/usr/bin/env bash
set -euo pipefail
echo "download: $PACKAGE v$VERSION"

3
v2ray/scripts/env.sh Normal file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
echo "env: $PACKAGE v$VERSION"

3
v2ray/scripts/publish.sh Normal file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
echo "publish: $PACKAGE v$VERSION"