forked from XTLS/Xray-core
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Chore: Add GitHub Actions (XTLS#251)
Co-authored-by: xinb <[email protected]> Co-authored-by: 秋のかえで <[email protected]> Co-authored-by: Jim Han <[email protected]>
- Loading branch information
1 parent
c345d48
commit ca633fc
Showing
5 changed files
with
296 additions
and
3 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
{ | ||
"android-arm64": { "friendlyName": "android-arm64-v8a"}, | ||
"darwin-amd64": { "friendlyName": "macos-64" }, | ||
"darwin-arm64": { "friendlyName": "macos-arm64-v8a" }, | ||
"dragonfly-amd64": { "friendlyName": "dragonfly-64" }, | ||
"freebsd-386": { "friendlyName": "freebsd-32" }, | ||
"freebsd-amd64": { "friendlyName": "freebsd-64" }, | ||
"freebsd-arm64": { "friendlyName": "freebsd-arm64-v8a" }, | ||
"freebsd-arm7": { "friendlyName": "freebsd-arm32-v7a" }, | ||
"linux-386": { "friendlyName": "linux-32" }, | ||
"linux-amd64": { "friendlyName": "linux-64" }, | ||
"linux-arm5": { "friendlyName": "linux-arm32-v5" }, | ||
"linux-arm64": { "friendlyName": "linux-arm64-v8a" }, | ||
"linux-arm6": { "friendlyName": "linux-arm32-v6" }, | ||
"linux-arm7": { "friendlyName": "linux-arm32-v7a" }, | ||
"linux-mips64le": { "friendlyName": "linux-mips64le" }, | ||
"linux-mips64": { "friendlyName": "linux-mips64" }, | ||
"linux-mipsle": { "friendlyName": "linux-mips32le" }, | ||
"linux-mipslesoftfloat": { "friendlyName": "linux-mips32le-softfloat" }, | ||
"linux-mips": { "friendlyName": "linux-mips32" }, | ||
"linux-mipssoftfloat": { "friendlyName": "linux-mips32-softfloat" }, | ||
"linux-riscv64": { "friendlyName": "linux-riscv64" }, | ||
"linux-ppc64": { "friendlyName": "linux-ppc64" }, | ||
"linux-ppc64le": { "friendlyName": "linux-rppc64le" }, | ||
"linux-s390x": { "friendlyName": "linux-s390x" }, | ||
"openbsd-386": { "friendlyName": "openbsd-32" }, | ||
"openbsd-amd64": { "friendlyName": "openbsd-64" }, | ||
"openbsd-arm64": { "friendlyName": "openbsd-arm64-v8a" }, | ||
"openbsd-arm7": { "friendlyName": "openbsd-arm32-v7a" }, | ||
"windows-amd64": { "friendlyName": "windows-64" }, | ||
"windows-386": { "friendlyName": "windows-32" }, | ||
"windows-arm7": { "friendlyName": "windows-arm32-v7a" } | ||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,212 @@ | ||
name: Build and Release | ||
|
||
on: | ||
workflow_dispatch: | ||
release: | ||
types: [published] | ||
push: | ||
branches: | ||
- main | ||
paths: | ||
- "**/*.go" | ||
- "go.mod" | ||
- "go.sum" | ||
- ".github/workflows/*.yml" | ||
pull_request: | ||
types: [opened, synchronize, reopened] | ||
paths: | ||
- "**/*.go" | ||
- "go.mod" | ||
- "go.sum" | ||
- ".github/workflows/*.yml" | ||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
# Include amd64 on all platforms. | ||
goos: [windows, freebsd, openbsd, linux, dragonfly, darwin] | ||
goarch: [amd64, 386] | ||
exclude: | ||
# Exclude i386 on darwin and dragonfly. | ||
- goarch: 386 | ||
goos: dragonfly | ||
- goarch: 386 | ||
goos: darwin | ||
include: | ||
# BEIGIN MacOS ARM64 | ||
- goos: darwin | ||
goarch: arm64 | ||
# END MacOS ARM64 | ||
# BEGIN Linux ARM 5 6 7 | ||
- goos: linux | ||
goarch: arm | ||
goarm: 7 | ||
- goos: linux | ||
goarch: arm | ||
goarm: 6 | ||
- goos: linux | ||
goarch: arm | ||
goarm: 5 | ||
# END Linux ARM 5 6 7 | ||
# BEGIN Android ARM 8 | ||
- goos: android | ||
goarch: arm64 | ||
# END Android ARM 8 | ||
# Windows ARM 7 | ||
- goos: windows | ||
goarch: arm | ||
goarm: 7 | ||
# BEGIN Other architectures | ||
# BEGIN riscv64 & ARM64 | ||
- goos: linux | ||
goarch: arm64 | ||
- goos: linux | ||
goarch: riscv64 | ||
# END riscv64 & ARM64 | ||
# BEGIN MIPS | ||
- goos: linux | ||
goarch: mips64 | ||
- goos: linux | ||
goarch: mips64le | ||
- goos: linux | ||
goarch: mipsle | ||
- goos: linux | ||
goarch: mips | ||
# END MIPS | ||
# BEGIN PPC | ||
- goos: linux | ||
goarch: ppc64 | ||
- goos: linux | ||
goarch: ppc64le | ||
# END PPC | ||
# BEGIN FreeBSD ARM | ||
- goos: freebsd | ||
goarch: arm64 | ||
- goos: freebsd | ||
goarch: arm | ||
goarm: 7 | ||
# END FreeBSD ARM | ||
# BEGIN S390X | ||
- goos: linux | ||
goarch: s390x | ||
# END S390X | ||
# END Other architectures | ||
# BEGIN OPENBSD ARM | ||
- goos: openbsd | ||
goarch: arm64 | ||
- goos: openbsd | ||
goarch: arm | ||
goarm: 7 | ||
# END OPENBSD ARM | ||
fail-fast: false | ||
#配置编译环境 | ||
runs-on: ubuntu-20.04 | ||
env: | ||
GOOS: ${{ matrix.goos }} | ||
GOARCH: ${{ matrix.goarch }} | ||
GOARM: ${{ matrix.goarm }} | ||
CGO_ENABLED: 0 | ||
steps: | ||
- name: Checkout codebase | ||
uses: actions/checkout@v2 | ||
|
||
- name: Show workflow information | ||
id: get_filename | ||
run: | | ||
export _NAME=$(jq ".[\"$GOOS-$GOARCH$GOARM$GOMIPS\"].friendlyName" -r < .github/build/friendly-filenames.json) | ||
echo "GOOS: $GOOS, GOARCH: $GOARCH, GOARM: $GOARM, GOMIPS: $GOMIPS, RELEASE_NAME: $_NAME" | ||
echo "::set-output name=ASSET_NAME::$_NAME" | ||
echo "ASSET_NAME=$_NAME" >> $GITHUB_ENV | ||
- name: Set up Go | ||
uses: actions/setup-go@v2 | ||
with: | ||
go-version: ^1.16 | ||
|
||
- name: Get project dependencies | ||
run: go mod download | ||
|
||
- name: Replace Custom to Commit ID | ||
if: github.event_name != 'release' | ||
run: | | ||
ID=$(git rev-parse --short ${{ github.sha }}) | ||
if [ "${{ github.event_name }}" == 'pull_request' ] | ||
then | ||
ID=$(git rev-parse --short ${{ github.event.pull_request.head.sha }}) | ||
fi | ||
sed -i '/build/ s/Custom/'$ID'/' ./core/core.go | ||
- name: Build Xray | ||
run: | | ||
mkdir -p build_assets | ||
go build -v -o build_assets/xray -trimpath -ldflags "-s -w -buildid=" ./main | ||
- name: Build Mips softfloat Xray | ||
if: matrix.goarch == 'mips' || matrix.goarch == 'mipsle' | ||
run: | | ||
GOMIPS=softfloat go build -v -o build_assets/xray_softfloat -trimpath -ldflags "-s -w -buildid=" ./main | ||
- name: Rename Windows Xray | ||
if: matrix.goos == 'windows' | ||
run: | | ||
cd ./build_assets || exit 1 | ||
mv xray xray.exe | ||
- name: Prepare to release | ||
run: | | ||
cp ${GITHUB_WORKSPACE}/README.md ./build_assets/README.md | ||
cp ${GITHUB_WORKSPACE}/LICENSE ./build_assets/LICENSE | ||
LIST=('geoip geoip geoip' 'domain-list-community dlc geosite') | ||
for i in "${LIST[@]}" | ||
do | ||
INFO=($(echo $i | awk 'BEGIN{FS=" ";OFS=" "} {print $1,$2,$3}')) | ||
LASTEST_TAG="$(curl -sL "https://api.github.com/repos/v2fly/${INFO[0]}/releases" | jq -r ".[0].tag_name" || echo "latest")" | ||
FILE_NAME="${INFO[2]}.dat" | ||
echo -e "Downloading ${FILE_NAME}..." | ||
curl -L "https://github.com/v2fly/${INFO[0]}/releases/download/${LASTEST_TAG}/${INFO[1]}.dat" -o ./build_assets/${FILE_NAME} | ||
echo -e "Verifying HASH key..." | ||
HASH="$(curl -sL "https://github.com/v2fly/${INFO[0]}/releases/download/${LASTEST_TAG}/${INFO[1]}.dat.sha256sum" | awk -F ' ' '{print $1}')" | ||
[ "$(sha256sum "./build_assets/${FILE_NAME}" | awk -F ' ' '{print $1}')" == "${HASH}" ] || { echo -e "The HASH key of ${FILE_NAME} does not match cloud one."; exit 1; } | ||
done | ||
- name: Create ZIP archive | ||
shell: bash | ||
run: | | ||
pushd build_assets || exit 1 | ||
touch -mt 202101010000 * | ||
zip -9vr ../Xray-$ASSET_NAME.zip . | ||
for CORE in $(ls xray*) | ||
do | ||
COREDGST=$CORE.dgst | ||
for METHOD in {"md5","sha1","sha256","sha512"} | ||
do | ||
openssl dgst -$METHOD $CORE | sed 's/([^)]*)//g' >>$COREDGST | ||
done | ||
done | ||
popd || exit 1 | ||
FILE=./Xray-$ASSET_NAME.zip | ||
DGST=$FILE.dgst | ||
for METHOD in {"md5","sha1","sha256","sha512"} | ||
do | ||
openssl dgst -$METHOD $FILE | sed 's/([^)]*)//g' >>$DGST | ||
done | ||
- name: Change the name | ||
run: | | ||
mv build_assets Xray-$ASSET_NAME | ||
- name: Upload files to Artifacts | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: Xray-${{ steps.get_filename.outputs.ASSET_NAME }} | ||
path: | | ||
./Xray-${{ steps.get_filename.outputs.ASSET_NAME }}/* | ||
- name: Upload binaries to release | ||
uses: svenstaro/upload-release-action@v2 | ||
if: github.event_name == 'release' | ||
with: | ||
repo_token: ${{ secrets.GITHUB_TOKEN }} | ||
file: ./Xray-${{ steps.get_filename.outputs.ASSET_NAME }}.zip* | ||
tag: ${{ github.ref }} | ||
file_glob: true |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
name: Test | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
paths: | ||
- "**/*.go" | ||
- "go.mod" | ||
- "go.sum" | ||
- ".github/workflows/*.yml" | ||
pull_request: | ||
types: [opened, synchronize, reopened] | ||
paths: | ||
- "**/*.go" | ||
- "go.mod" | ||
- "go.sum" | ||
- ".github/workflows/*.yml" | ||
|
||
jobs: | ||
test: | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [windows-latest, ubuntu-latest, macos-latest] | ||
steps: | ||
- name: Set up Go | ||
uses: actions/setup-go@v2 | ||
with: | ||
go-version: ^1.16 | ||
- name: Checkout codebase | ||
uses: actions/checkout@v2 | ||
|
||
- name: Prepare geo*dat | ||
if: ${{ matrix.os != 'windows-latest' }} | ||
run: | | ||
mkdir resources | ||
wget -O ./resources/geoip.dat https://github.com/v2fly/geoip/releases/latest/download/geoip.dat | ||
wget -O ./resources/geosite.dat https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat | ||
- name: Prepare geo*dat for Windows | ||
if: ${{ matrix.os == 'windows-latest' }} | ||
run: | | ||
mkdir resources | ||
Invoke-WebRequest -Uri "https://github.com/v2fly/geoip/releases/latest/download/geoip.dat" -OutFile "./resources/geoip.dat" | ||
Invoke-WebRequest -Uri "https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat" -OutFile "./resources/geosite.dat" | ||
- name: Test | ||
run: go test -timeout 1h -v ./... |
This file contains 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
This file contains 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