mirror of
https://github.com/2dust/v2rayN.git
synced 2026-04-14 11:35:44 +00:00
180 lines
5.6 KiB
YAML
180 lines
5.6 KiB
YAML
name: release Linux
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
release_tag:
|
|
required: false
|
|
type: string
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build:
|
|
uses: ./.github/workflows/build.yml
|
|
with:
|
|
target: linux
|
|
|
|
release-zip:
|
|
if: inputs.release_tag != ''
|
|
needs: build
|
|
uses: ./.github/workflows/package-zip.yml
|
|
with:
|
|
target: linux
|
|
release_tag: ${{ inputs.release_tag }}
|
|
|
|
deb:
|
|
name: build and release deb
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' && inputs.release_tag != '') ||
|
|
(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/'))
|
|
runs-on: ubuntu-latest
|
|
container: debian:13
|
|
env:
|
|
RELEASE_TAG: ${{ case(inputs.release_tag != '', inputs.release_tag, github.ref_name) }}
|
|
|
|
steps:
|
|
- name: Prepare tools (Debian)
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update
|
|
apt-get install -y sudo git rsync findutils tar gzip unzip which curl jq wget file \
|
|
ca-certificates desktop-file-utils xdg-utils fakeroot dpkg-dev \
|
|
libc6 libgcc-s1 libstdc++6 zlib1g libicu-dev libssl-dev
|
|
|
|
- name: Checkout repo (for scripts)
|
|
uses: actions/checkout@v6.0.2
|
|
with:
|
|
submodules: 'recursive'
|
|
fetch-depth: '0'
|
|
|
|
- name: Ensure script permissions
|
|
run: chmod 755 package-debian.sh
|
|
|
|
- name: Package DEB (Debian-family)
|
|
run: ./package-debian.sh "${RELEASE_TAG}" --arch all
|
|
|
|
- name: Collect DEBs into workspace
|
|
run: |
|
|
mkdir -p "$GITHUB_WORKSPACE/dist/deb"
|
|
rsync -av "$HOME/debbuild/" "$GITHUB_WORKSPACE/dist/deb/" || true
|
|
find "$GITHUB_WORKSPACE/dist/deb" -name "v2rayn_*_amd64.deb" \
|
|
-exec mv {} "$GITHUB_WORKSPACE/dist/deb/v2rayN-linux-64.deb" \; || true
|
|
find "$GITHUB_WORKSPACE/dist/deb" -name "v2rayn_*_arm64.deb" \
|
|
-exec mv {} "$GITHUB_WORKSPACE/dist/deb/v2rayN-linux-arm64.deb" \; || true
|
|
echo "==== Dist tree ===="
|
|
ls -R "$GITHUB_WORKSPACE/dist/deb" || true
|
|
|
|
- name: Upload DEBs to release
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
file: dist/deb/**/*.deb
|
|
tag: ${{ env.RELEASE_TAG }}
|
|
file_glob: true
|
|
prerelease: true
|
|
|
|
rpm:
|
|
name: build and release rpm
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' && inputs.release_tag != '') ||
|
|
(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/'))
|
|
runs-on: ubuntu-latest
|
|
container: registry.access.redhat.com/ubi10/ubi
|
|
env:
|
|
RELEASE_TAG: ${{ case(inputs.release_tag != '', inputs.release_tag, github.ref_name) }}
|
|
|
|
steps:
|
|
- name: Prepare tools (Red Hat)
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
. /etc/os-release
|
|
EL_MAJOR="${VERSION_ID%%.*}"
|
|
echo "EL_MAJOR=${EL_MAJOR}"
|
|
|
|
dnf -y makecache || true
|
|
command -v curl >/dev/null || dnf -y install curl ca-certificates
|
|
|
|
ARCH="$(uname -m)"
|
|
case "$ARCH" in x86_64|aarch64) ;; *) echo "Unsupported arch: $ARCH"; exit 1 ;; esac
|
|
|
|
install_epel_from_dir() {
|
|
local base="$1" rpm
|
|
echo "Try: $base"
|
|
|
|
rpm="$(
|
|
{
|
|
curl -fsSL "$base/Packages/" 2>/dev/null
|
|
curl -fsSL "$base/Packages/e/" 2>/dev/null | sed 's|href="|href="e/|'
|
|
} |
|
|
sed -n 's/.*href="\([^"]*epel-release-[^"]*\.noarch\.rpm\)".*/\1/p' |
|
|
sort -V | tail -n1
|
|
)" || true
|
|
|
|
if [[ -n "$rpm" ]]; then
|
|
dnf -y install "$base/Packages/$rpm"
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
FEDORA="https://dl.fedoraproject.org/pub/epel/epel-release-latest-${EL_MAJOR}.noarch.rpm"
|
|
echo "Try Fedora: $FEDORA"
|
|
|
|
if curl -fsSLI "$FEDORA" >/dev/null; then
|
|
dnf -y install "$FEDORA"
|
|
else
|
|
ROCKY="https://dl.rockylinux.org/pub/rocky/${EL_MAJOR}/extras/${ARCH}/os"
|
|
if install_epel_from_dir "$ROCKY"; then
|
|
:
|
|
else
|
|
ALMA="https://repo.almalinux.org/almalinux/${EL_MAJOR}/extras/${ARCH}/os"
|
|
if install_epel_from_dir "$ALMA"; then
|
|
:
|
|
else
|
|
echo "EPEL bootstrap failed (Fedora/Rocky/Alma)"
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
dnf -y install sudo git rpm-build rpmdevtools dnf-plugins-core \
|
|
rsync findutils tar gzip unzip which
|
|
|
|
dnf repolist | grep -i epel || true
|
|
|
|
- name: Checkout repo (for scripts)
|
|
uses: actions/checkout@v6.0.2
|
|
with:
|
|
submodules: 'recursive'
|
|
fetch-depth: '0'
|
|
|
|
- name: Ensure script permissions
|
|
run: chmod 755 package-rhel.sh
|
|
|
|
- name: Package RPM (RHEL-family)
|
|
run: ./package-rhel.sh "${RELEASE_TAG}" --arch all
|
|
|
|
- name: Collect RPMs into workspace
|
|
run: |
|
|
mkdir -p "$GITHUB_WORKSPACE/dist/rpm"
|
|
rsync -av "$HOME/rpmbuild/RPMS/" "$GITHUB_WORKSPACE/dist/rpm/" || true
|
|
find "$GITHUB_WORKSPACE/dist/rpm" -name "v2rayN-*-1*.x86_64.rpm" -exec mv {} "$GITHUB_WORKSPACE/dist/rpm/v2rayN-linux-rhel-64.rpm" \; || true
|
|
find "$GITHUB_WORKSPACE/dist/rpm" -name "v2rayN-*-1*.aarch64.rpm" -exec mv {} "$GITHUB_WORKSPACE/dist/rpm/v2rayN-linux-rhel-arm64.rpm" \; || true
|
|
echo "==== Dist tree ===="
|
|
ls -R "$GITHUB_WORKSPACE/dist/rpm" || true
|
|
|
|
- name: Upload RPMs to release
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
file: dist/rpm/**/*.rpm
|
|
tag: ${{ env.RELEASE_TAG }}
|
|
file_glob: true
|
|
prerelease: true
|