Update 'CheckServerSettings' message #436
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 x64 & arm64 | |
| if: | | |
| (github.event_name == 'workflow_dispatch' && inputs.release_tag != '') || | |
| (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) | |
| runs-on: ubuntu-24.04 | |
| 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 x64 & arm64 | |
| if: | | |
| (github.event_name == 'workflow_dispatch' && inputs.release_tag != '') || | |
| (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) | |
| runs-on: ubuntu-24.04 | |
| 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 | |
| rpm-riscv64: | |
| name: build and release rpm riscv64 | |
| if: | | |
| (github.event_name == 'workflow_dispatch' && inputs.release_tag != '') || | |
| (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) | |
| runs-on: ubuntu-24.04-riscv | |
| container: rockylinux/rockylinux:10 | |
| 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 | |
| dnf -y makecache | |
| dnf -y install \ | |
| sudo git rpm-build rpmdevtools dnf-plugins-core \ | |
| rsync findutils tar gzip unzip which jq | |
| - name: Checkout repo (for scripts) | |
| shell: bash | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| run: | | |
| set -euo pipefail | |
| rm -rf ./* | |
| git init . | |
| git config --global --add safe.directory "$PWD" | |
| git remote add origin "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" | |
| git fetch --depth=1 origin "${GITHUB_SHA}" | |
| git checkout FETCH_HEAD | |
| git submodule update --init --recursive | |
| - name: Ensure script permissions | |
| run: chmod 755 package-rhel-riscv.sh | |
| - name: Package RPM (RHEL-family) | |
| run: ./package-rhel-riscv.sh "${RELEASE_TAG}" | |
| - name: Collect RPMs into workspace | |
| run: | | |
| mkdir -p "$GITHUB_WORKSPACE/dist/rpm-riscv64" | |
| rsync -av "$HOME/rpmbuild/RPMS/" "$GITHUB_WORKSPACE/dist/rpm-riscv64/" || true | |
| find "$GITHUB_WORKSPACE/dist/rpm-riscv64" -name "*.riscv64.rpm" \ | |
| -exec mv {} "$GITHUB_WORKSPACE/dist/rpm-riscv64/v2rayN-linux-rhel-riscv64.rpm" \; || true | |
| echo "==== Dist tree ====" | |
| ls -R "$GITHUB_WORKSPACE/dist/rpm-riscv64" || true | |
| - name: Upload RPMs to release | |
| shell: bash | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| run: | | |
| set -euo pipefail | |
| shopt -s globstar nullglob | |
| files=(dist/rpm-riscv64/**/*.rpm) | |
| (( ${#files[@]} )) || { echo "No RPMs found."; exit 1; } | |
| api="${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases/tags/${RELEASE_TAG}" | |
| upload_url="$(curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" "$api" | jq -r '.upload_url // empty' | sed 's/{?name,label}//')" | |
| [[ "$upload_url" ]] || { echo "Release upload URL not found: ${RELEASE_TAG}"; exit 1; } | |
| for f in "${files[@]}"; do | |
| echo "Uploading ${f##*/}" | |
| curl -fsSL -X POST \ | |
| -H "Authorization: Bearer ${GITHUB_TOKEN}" \ | |
| -H "Content-Type: application/x-rpm" \ | |
| --data-binary @"$f" \ | |
| "${upload_url}?name=${f##*/}" | |
| done |