feature test
This commit is contained in:
@ -1,23 +1,93 @@
|
|||||||
name: Build packages
|
name: Build & Publish Packages
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
workflow_dispatch:
|
||||||
branches: [main]
|
inputs:
|
||||||
|
packages:
|
||||||
|
description: 'Packages to build (comma-separated) or leave empty for all'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
prepare:
|
||||||
|
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 each package
|
- name: Build package matrix
|
||||||
|
id: matrix
|
||||||
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
for pkg in */; do
|
INPUT="${{ github.event.inputs.packages }}"
|
||||||
[ -f "${pkg}VERSION" ] || continue
|
|
||||||
echo "=== Processing $pkg ==="
|
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 \
|
docker run --rm \
|
||||||
-v "$PWD/$pkg:/work" \
|
-v "$WORK_DIR:/pkg" \
|
||||||
-w /work \
|
-w /pkg \
|
||||||
alpine \
|
-e PACKAGE \
|
||||||
ls -la
|
-e VERSION \
|
||||||
done
|
-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 = 5.16.1
|
||||||
VERSION=$(shell cat VERSION)
|
IMAGE = debian:bookworm-slim
|
||||||
DISTFILE=v2ray-linux-64.zip
|
STEPS = env download publish
|
||||||
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
|
|
||||||
@ -1,7 +1,12 @@
|
|||||||
# v2ray/scripts/download.sh
|
# # v2ray/scripts/download.sh
|
||||||
#!/bin/bash
|
# #!/bin/bash
|
||||||
VERSION=$1
|
# VERSION=$1
|
||||||
wget -q "https://github.com/v2fly/v2ray-core/releases/download/v${VERSION}/v2ray-linux-64.zip"
|
# wget -q "https://github.com/v2fly/v2ray-core/releases/download/v${VERSION}/v2ray-linux-64.zip"
|
||||||
mkdir -p dist
|
# mkdir -p dist
|
||||||
unzip -q v2ray-linux-64.zip -d dist/
|
# unzip -q v2ray-linux-64.zip -d dist/
|
||||||
chmod +x dist/v2ray
|
# 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