mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2024-12-22 23:57:26 +08:00
chore: workflow
This commit is contained in:
parent
9d8cd036ff
commit
032b6a2cc5
33
.github/workflows/alpha.yml
vendored
33
.github/workflows/alpha.yml
vendored
@ -1,8 +1,13 @@
|
||||
name: alpha
|
||||
on: [push]
|
||||
name: Alpha
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- Alpha
|
||||
pull_request:
|
||||
branches:
|
||||
- Alpha
|
||||
jobs:
|
||||
Build:
|
||||
if: ${{ !contains(github.event.head_commit.message, '[Skip CI]') }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Get latest go version
|
||||
@ -24,9 +29,7 @@ jobs:
|
||||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-go-
|
||||
# - name: Get dependencies, run test
|
||||
# run: |
|
||||
# go test ./...
|
||||
|
||||
- name: Build
|
||||
if: success()
|
||||
env:
|
||||
@ -50,22 +53,10 @@ jobs:
|
||||
|
||||
- name: Upload Alpha
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: ${{ env.GIT_BRANCH != 'Meta' && success() }}
|
||||
if: ${{ success() }}
|
||||
with:
|
||||
tag: ${{ github.ref }}
|
||||
tag: ${{env.GITHUB_REF_NAME}}
|
||||
tag_name: alpha
|
||||
files: bin/*
|
||||
prerelease: true
|
||||
|
||||
# - name: send telegram message on push
|
||||
# uses: appleboy/telegram-action@master
|
||||
# with:
|
||||
# to: ${{ secrets.TTELEGRAM_CHAT_ID }}
|
||||
# token: ${{ secrets.TELEGRAM_TOKEN }}
|
||||
# message: |
|
||||
# ${{ github.actor }} created commit:
|
||||
# Commit message: ${{ github.event.commits[0].message }}
|
||||
#
|
||||
# Repository: ${{ github.repository }}
|
||||
#
|
||||
# See changes: https://github.com/${{ github.repository }}/commit/${{github.sha}}
|
||||
generate_release_notes: true
|
||||
|
64
.github/workflows/beta.yaml
vendored
Normal file
64
.github/workflows/beta.yaml
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
name: Beta
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- Beta
|
||||
pull_request:
|
||||
branches:
|
||||
- Beta
|
||||
jobs:
|
||||
Build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Get latest go version
|
||||
id: version
|
||||
run: |
|
||||
echo ::set-output name=go_version::$(curl -s https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json | grep -oE '"version": "[0-9]{1}.[0-9]{1,}(.[0-9]{1,})?"' | head -1 | cut -d':' -f2 | sed 's/ //g; s/"//g')
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: ${{ steps.version.outputs.go_version }}
|
||||
|
||||
- name: Check out code into the Go module directory
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Cache go module
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/go/pkg/mod
|
||||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-go-
|
||||
- name: Test
|
||||
run: |
|
||||
go test ./...
|
||||
- name: Build
|
||||
if: success()
|
||||
env:
|
||||
NAME: Clash.Meta
|
||||
BINDIR: bin
|
||||
run: make -j releases
|
||||
|
||||
- name: Delete current release assets
|
||||
uses: andreaswilli/delete-release-assets-action@v2.0.0
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
tag: beta
|
||||
deleteOnlyFromDrafts: false
|
||||
|
||||
- name: Tag Repo
|
||||
uses: richardsimko/update-tag@v1
|
||||
with:
|
||||
tag_name: beta
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Upload Alpha
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: ${{ success() }}
|
||||
with:
|
||||
tag: ${{env.GITHUB_REF_NAME}}
|
||||
tag_name: beta
|
||||
files: bin/*
|
||||
prerelease: true
|
||||
generate_release_notes: true
|
21
.github/workflows/docker.yaml
vendored
21
.github/workflows/docker.yaml
vendored
@ -1,11 +1,13 @@
|
||||
name: Docker
|
||||
|
||||
on: [push]
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- Beta
|
||||
tags:
|
||||
- "v*"
|
||||
env:
|
||||
REGISTRY: docker.io
|
||||
IMAGE_NAME: '{{ env.DOCKERHUB_ACCOUNT }}/{{ env.DOCKERHUB_REPO }}'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
@ -23,6 +25,8 @@ jobs:
|
||||
|
||||
- name: Setup Docker buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
with:
|
||||
version: latest
|
||||
|
||||
# Extract metadata (tags, labels) for Docker
|
||||
# https://github.com/docker/metadata-action
|
||||
@ -30,15 +34,15 @@ jobs:
|
||||
id: meta
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
images: ${{ env.REGISTRY }}/${{ secrets.DOCKERHUB_ACCOUNT }}/${{secrets.DOCKERHUB_REPO}}
|
||||
|
||||
- name: Log into registry ${{ env.REGISTRY }}
|
||||
- name: Log into registry
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
username: ${{ secrets.DOCKER_HUB_USER }}
|
||||
password: ${{ secrets.DOCKER_HUB_TOKEN }}
|
||||
|
||||
# Build and push Docker image with Buildx (don't push on PR)
|
||||
# https://github.com/docker/build-push-action
|
||||
@ -47,6 +51,7 @@ jobs:
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
platforms: |
|
||||
linux/386
|
||||
|
44
.github/workflows/release.yaml
vendored
Normal file
44
.github/workflows/release.yaml
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
name: Release
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
jobs:
|
||||
Build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Get latest go version
|
||||
id: version
|
||||
run: |
|
||||
echo ::set-output name=go_version::$(curl -s https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json | grep -oE '"version": "[0-9]{1}.[0-9]{1,}(.[0-9]{1,})?"' | head -1 | cut -d':' -f2 | sed 's/ //g; s/"//g')
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: ${{ steps.version.outputs.go_version }}
|
||||
|
||||
- name: Check out code into the Go module directory
|
||||
uses: actions/checkout@v3
|
||||
- name: Cache go module
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/go/pkg/mod
|
||||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-go-
|
||||
- name: Test
|
||||
run: |
|
||||
go test ./...
|
||||
- name: Build
|
||||
if: success()
|
||||
env:
|
||||
NAME: Clash.Meta
|
||||
BINDIR: bin
|
||||
run: make -j releases
|
||||
|
||||
- name: Upload Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: ${{ success() && startsWith(github.ref, 'refs/tags/')}}
|
||||
with:
|
||||
tag: ${{ github.ref }}
|
||||
files: bin/*
|
||||
generate_release_notes: true
|
31
Dockerfile
31
Dockerfile
@ -1,41 +1,26 @@
|
||||
FROM golang:alpine as builder
|
||||
|
||||
ARG TARGETOS
|
||||
ARG TARGETARCH
|
||||
|
||||
RUN apk add --no-cache make git && \
|
||||
mkdir /clash-config && \
|
||||
wget -O /clash-config/Country.mmdb https://raw.githubusercontent.com/Loyalsoldier/geoip/release/Country.mmdb && \
|
||||
wget -O /clash-config/geosite.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat && \
|
||||
wget -O /clash-config/geoip.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
|
||||
|
||||
WORKDIR /clash-src
|
||||
|
||||
COPY . /clash-src
|
||||
RUN go mod download
|
||||
RUN /bin/ash -c 'set -ex && \
|
||||
if [ "$TARGETARCH" == "amd64" ]; then \
|
||||
GOOS=$TARGETOS GOARCH=$TARGETARCH GOAMD64=v1 make docker && \
|
||||
mv ./bin/Clash.Meta-docker ./bin/clash-amd64v1 && \
|
||||
GOOS=$TARGETOS GOARCH=$TARGETARCH GOAMD64=v2 make docker && \
|
||||
mv ./bin/Clash.Meta-docker ./bin/clash-amd64v2 && \
|
||||
GOOS=$TARGETOS GOARCH=$TARGETARCH GOAMD64=v3 make docker && \
|
||||
mv ./bin/Clash.Meta-docker ./bin/clash-amd64v3 && \
|
||||
ln -s clash-amd64v3 ./bin/clash-amd64v4 && \
|
||||
mv check_amd64.sh ./bin/ && \
|
||||
printf "#!/bin/sh\\nsh ./check_amd64.sh\\nexec ./clash-amd64v\$? \$@" > ./bin/clash && \
|
||||
chmod +x ./bin/check_amd64.sh ./bin/clash; \
|
||||
else \
|
||||
GOOS=$TARGETOS GOARCH=$TARGETARCH make docker && \
|
||||
mv ./bin/Clash.Meta-docker ./bin/clash; \
|
||||
fi'
|
||||
WORKDIR /clash-src
|
||||
RUN go mod download &&\
|
||||
make docker &&\
|
||||
mv ./bin/Clash.Meta-docker /clash
|
||||
|
||||
FROM alpine:latest
|
||||
LABEL org.opencontainers.image.source="https://github.com/MetaCubeX/Clash.Meta"
|
||||
|
||||
RUN apk add --no-cache ca-certificates tzdata
|
||||
|
||||
VOLUME ["/root/.config/clash/"]
|
||||
EXPOSE 7890/tcp
|
||||
|
||||
COPY --from=builder /clash-config/ /root/.config/clash/
|
||||
COPY --from=builder /clash-src/bin/ /
|
||||
COPY --from=builder /clash /clash
|
||||
RUN chmod +x /clash
|
||||
ENTRYPOINT [ "/clash" ]
|
13
Makefile
13
Makefile
@ -1,7 +1,16 @@
|
||||
NAME=Clash.Meta
|
||||
BINDIR=bin
|
||||
BRANCH=$(shell git rev-parse --abbrev-ref HEAD)
|
||||
BRANCH=$(shell git branch --show-current)
|
||||
ifeq ($(BRANCH),Alpha)
|
||||
VERSION=alpha-$(shell git rev-parse --short HEAD)
|
||||
else ifeq ($(BRANCH),Beta)
|
||||
VERSION=beta-$(shell git rev-parse --short HEAD)
|
||||
else ifeq ($(BRANCH),HEAD)
|
||||
VERSION=$(shell git describe --tags)
|
||||
else
|
||||
VERSION=unknown
|
||||
endif
|
||||
|
||||
BUILDTIME=$(shell date -u)
|
||||
GOBUILD=CGO_ENABLED=0 go build -trimpath -ldflags '-X "github.com/Dreamacro/clash/constant.Version=$(VERSION)" \
|
||||
-X "github.com/Dreamacro/clash/constant.BuildTime=$(BUILDTIME)" \
|
||||
@ -43,7 +52,7 @@ all:linux-amd64 linux-arm64\
|
||||
windows-amd64 windows-arm64\
|
||||
|
||||
docker:
|
||||
$(GOBUILD) -o $(BINDIR)/$(NAME)-$@
|
||||
GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
|
||||
|
||||
darwin-amd64v3:
|
||||
GOARCH=amd64 GOOS=darwin GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
|
||||
|
@ -44,7 +44,7 @@ func Start(device io.ReadWriter, gateway, portal, broadcast netip.Addr) (*TCP, *
|
||||
for {
|
||||
n, err := device.Read(buf)
|
||||
if err != nil {
|
||||
log.Warnln("system error:%s", err.Error())
|
||||
log.Errorf("system error:%s", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ func Test_SumNeon(t *testing.T) {
|
||||
}
|
||||
|
||||
compat := SumCompat(bytes[:size])
|
||||
neon := sumNeon(bytes[:size])
|
||||
neon := SumNeon(bytes[:size])
|
||||
|
||||
if compat != neon {
|
||||
t.Errorf("Sum of length=%d mismatched", size)
|
||||
@ -46,6 +46,6 @@ func Benchmark_SumNeon(b *testing.B) {
|
||||
b.ResetTimer()
|
||||
|
||||
for i := 0; i < b.N; i++ {
|
||||
sumNeon(bytes)
|
||||
SumNeon(bytes)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user