feature test
This commit is contained in:
@ -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
|
||||
@ -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
|
||||
@ -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
3
v2ray/scripts/env.sh
Normal file
@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
echo "env: $PACKAGE v$VERSION"
|
||||
3
v2ray/scripts/publish.sh
Normal file
3
v2ray/scripts/publish.sh
Normal file
@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
echo "publish: $PACKAGE v$VERSION"
|
||||
Reference in New Issue
Block a user