-
Notifications
You must be signed in to change notification settings - Fork 43
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
162 additions
and
108 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 |
---|---|---|
@@ -1,120 +1,130 @@ | ||
name: build | ||
|
||
on: | ||
release: | ||
workflow_dispatch: | ||
|
||
inputs: | ||
version: | ||
description: "Tag name of release" | ||
|
||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
# Include amd64 on all platforms. | ||
goos: [ windows, linux, darwin ] | ||
goarch: [ amd64, 386 ] | ||
goamd64: [ v1, v3 ] | ||
exclude: | ||
# Exclude GOAMD64 v3 on i386 | ||
- goarch: 386 | ||
goamd64: v3 | ||
# Exclude i386 on darwin and dragonfly. | ||
- goarch: 386 | ||
goos: dragonfly | ||
- goarch: 386 | ||
goos: darwin | ||
include: | ||
# BEGIN 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 | ||
- goos: windows | ||
goarch: arm64 | ||
- 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 LOONGARCH | ||
- goos: linux | ||
goarch: loong64 | ||
# END LOONGARCH | ||
# BEGIN S390X | ||
- goos: linux | ||
goarch: s390x | ||
# END S390X | ||
# END Other architectures | ||
matrix: | ||
# Include amd64 on all platforms. | ||
goos: [ windows, linux, darwin ] | ||
goarch: [ amd64, 386 ] | ||
goamd64: [ v1, v3 ] | ||
exclude: | ||
# Exclude GOAMD64 v3 on i386 | ||
- goarch: 386 | ||
goamd64: v3 | ||
# Exclude i386 on darwin and dragonfly. | ||
- goarch: 386 | ||
goos: dragonfly | ||
- goarch: 386 | ||
goos: darwin | ||
include: | ||
# BEGIN 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 | ||
- goos: windows | ||
goarch: arm64 | ||
- 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 LOONGARCH | ||
- goos: linux | ||
goarch: loong64 | ||
# END LOONGARCH | ||
# BEGIN S390X | ||
- goos: linux | ||
goarch: s390x | ||
# END S390X | ||
# END Other architectures | ||
|
||
runs-on: ubuntu-latest | ||
env: | ||
GOOS: ${{ matrix.goos }} | ||
GOARCH: ${{ matrix.goarch }} | ||
GOARM: ${{ matrix.goarm }} | ||
GOAMD64: ${{ matrix.goamd64 }} | ||
CGO_ENABLED: 0 | ||
|
||
BUILD_NAME: ZBProxy-${{ matrix.goos }}-${{ matrix.goarch }}-${{ matrix.goarm }}${{ matrix.goamd64 }}${{ matrix.goos == 'windows' && '.exe' || '' }} | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Set up Go | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version: ^1.20 | ||
check-latest: true | ||
- name: Set up Go | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version: ^1.20 | ||
check-latest: true | ||
|
||
- name: Tidy up Go Modules | ||
run: go mod tidy | ||
- name: Tidy up Go Modules | ||
run: go mod tidy | ||
|
||
- name: Get Git Commit Hash | ||
id: hash | ||
run: echo "git_hash=$(git rev-parse --short HEAD || echo "unknown version")" >> $GITHUB_OUTPUT | ||
- name: Get Git Commit Hash | ||
id: hash | ||
run: echo "git_hash=$(git rev-parse --short HEAD || echo "unknown version")" >> $GITHUB_OUTPUT | ||
|
||
- name: Build | ||
run: go build -v -trimpath -ldflags '-X "github.com/layou233/zbproxy/v3/version.CommitHash=${{ steps.hash.outputs.git_hash }}" -s -w -buildid=' -o ZBProxy-${{ matrix.goos }}-${{ matrix.goarch }}-${{ matrix.goarm }}${{ matrix.goamd64 }} ./cmd/zbproxy | ||
- name: Build | ||
run: go build -v -trimpath -ldflags '-X "github.com/layou233/zbproxy/v3/version.CommitHash=${{ steps.hash.outputs.git_hash }}" -s -w -buildid=' -o $BUILD_NAME ./cmd/zbproxy | ||
|
||
- name: Handle for Windows Build | ||
if: ${{ env.GOOS == 'windows' }} | ||
run: mv ZBProxy-${{ matrix.goos }}-${{ matrix.goarch }}-${{ matrix.goarm }}${{ matrix.goamd64 }} ZBProxy-${{ matrix.goos }}-${{ matrix.goarch }}-${{ matrix.goarm }}${{ matrix.goamd64 }}.exe | ||
- name: Upload Build Artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ${{ env.BUILD_NAME }} | ||
path: ${{ env.BUILD_NAME }} | ||
|
||
- name: Upload a Non-Windows Build Artifact | ||
uses: actions/upload-artifact@v4 | ||
if: ${{ env.GOOS != 'windows' }} | ||
with: | ||
name: ZBProxy-${{ matrix.goos }}-${{ matrix.goarch }}-${{ matrix.goarm }}${{ matrix.goamd64 }} | ||
path: ZBProxy-${{ matrix.goos }}-${{ matrix.goarch }}-${{ matrix.goarm }}${{ matrix.goamd64 }} | ||
Publish: | ||
permissions: write-all | ||
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version }} | ||
needs: [ build ] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/download-artifact@v4 | ||
with: | ||
path: bin/ | ||
merge-multiple: true | ||
|
||
- name: Upload a Windows Build Artifact | ||
uses: actions/upload-artifact@v4 | ||
if: ${{ env.GOOS == 'windows' }} | ||
with: | ||
name: ZBProxy-${{ matrix.goos }}-${{ matrix.goarch }}-${{ matrix.goarm }}${{ matrix.goamd64 }}.exe | ||
path: ZBProxy-${{ matrix.goos }}-${{ matrix.goarch }}-${{ matrix.goarm }}${{ matrix.goamd64 }}.exe | ||
- name: Upload Release | ||
uses: softprops/action-gh-release@v2 | ||
if: ${{ success() }} | ||
with: | ||
tag_name: ${{ github.event.inputs.version }} | ||
files: bin/* | ||
prerelease: 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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package domain | ||
|
||
import "testing" | ||
|
||
func TestMatcher(t *testing.T) { | ||
matcher := NewMatcher( | ||
[]string{ // domain | ||
"example.com", "example.org", | ||
}, []string{ // domain suffix | ||
"example.net", ".example.invalid", | ||
}) | ||
if !matcher.Match("example.com") { | ||
t.Error("example.com is not matched") | ||
} | ||
if !matcher.Match("example.org") { | ||
t.Error("example.org is not matched") | ||
} | ||
if matcher.Match("sub.example.org") { | ||
t.Error("sub.example.org is matched") | ||
} | ||
if !matcher.Match("example.net") { | ||
t.Error("example.net is not matched") | ||
} | ||
if !matcher.Match("any.example.net") { | ||
t.Error("any.example.net is not matched") | ||
} | ||
if !matcher.Match("any.one.example.net") { | ||
t.Error("any.one.one.example.net is not matched") | ||
} | ||
if matcher.Match("example.invalid") { | ||
t.Error("example.invalid is matched") | ||
} | ||
if !matcher.Match("any.example.invalid") { | ||
t.Error("any.example.invalid is not matched") | ||
} | ||
} |
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