Исправление CI сборок #2
@ -1,9 +1,8 @@
|
||||
name: Build and Package OPKG
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@ -43,10 +42,9 @@ jobs:
|
||||
fetch-tags: true
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
go-version: '1.21'
|
||||
cache: false
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@ -57,10 +55,11 @@ jobs:
|
||||
run: |
|
||||
ARCH=${{ matrix.arch }} GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} GOMIPS=${{ matrix.gomips }} GOARM=${{ matrix.goarm }} make
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
- name: Upload asset to release
|
||||
uses: https://gitea.com/actions/release-action@main
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
name: magitrickle_${{ matrix.arch }}.ipk.zip
|
||||
path: .build/magitrickle_${{ matrix.arch }}.ipk
|
||||
if-no-files-found: error
|
||||
compression-level: 0
|
||||
files: |-
|
||||
.build/magitrickle_*_${{ matrix.arch }}.ipk
|
||||
api_key: '${{secrets.RELEASE_TOKEN}}'
|
18
Makefile
18
Makefile
@ -2,12 +2,16 @@ APP_NAME = magitrickle
|
||||
APP_DESCRIPTION = DNS-based routing application
|
||||
APP_MAINTAINER = Vladimir Avtsenov <vladimir.lsk.cool@gmail.com>
|
||||
|
||||
TAG = $(shell git describe --tags --abbrev=0 2> /dev/null || git rev-parse --short HEAD)
|
||||
COMMIT = $(shell git rev-parse --short HEAD)
|
||||
COMMITS_SINCE_TAG = $(shell git rev-list ${TAG}..HEAD --count || echo "0")
|
||||
VERSION ?= $(TAG)
|
||||
UPSTREAM_VERSION ?= $(shell git describe --tags --abbrev=0 2> /dev/null || echo $(COMMIT))
|
||||
OPKG_REVISION = ~git$(shell date +%Y%m%d).$(COMMIT)-1
|
||||
ifeq ($(shell git rev-parse --abbrev-ref HEAD), main)
|
||||
TAG = $(shell git describe --tags --abbrev=0 2> /dev/null || echo $(COMMIT))
|
||||
COMMITS_SINCE_TAG = $(shell git rev-list ${TAG}..HEAD --count || echo "0")
|
||||
OPKG_REVISION = -$(shell expr $(COMMITS_SINCE_TAG) + 1)
|
||||
endif
|
||||
|
||||
ARCH ?= mipsel
|
||||
ARCH ?= mipsel-3.4
|
||||
GOOS ?= linux
|
||||
GOARCH ?= mipsle
|
||||
GOMIPS ?= softfloat
|
||||
@ -16,7 +20,7 @@ GOARM ?=
|
||||
BUILD_DIR = ./.build
|
||||
PKG_DIR = $(BUILD_DIR)/$(ARCH)
|
||||
BIN_DIR = $(PKG_DIR)/data/opt/bin
|
||||
PARAMS = -v -a -trimpath -ldflags="-X 'magitrickle/constant.Version=$(VERSION)' -X 'magitrickle/constant.Commit=$(COMMIT)' -w -s"
|
||||
PARAMS = -v -a -trimpath -ldflags="-X 'magitrickle/constant.Version=$(UPSTREAM_VERSION)$(OPKG_REVISION)' -X 'magitrickle/constant.Commit=$(COMMIT)' -w -s"
|
||||
|
||||
all: clear build_daemon package
|
||||
|
||||
@ -30,7 +34,7 @@ package:
|
||||
@mkdir -p $(PKG_DIR)/control
|
||||
@echo '2.0' > $(PKG_DIR)/debian-binary
|
||||
@echo 'Package: $(APP_NAME)' > $(PKG_DIR)/control/control
|
||||
@echo 'Version: $(VERSION)-$(COMMITS_SINCE_TAG)' >> $(PKG_DIR)/control/control
|
||||
@echo 'Version: $(UPSTREAM_VERSION)$(OPKG_REVISION)' >> $(PKG_DIR)/control/control
|
||||
@echo 'Architecture: $(ARCH)' >> $(PKG_DIR)/control/control
|
||||
@echo 'Maintainer: $(APP_MAINTAINER)' >> $(PKG_DIR)/control/control
|
||||
@echo 'Description: $(APP_DESCRIPTION)' >> $(PKG_DIR)/control/control
|
||||
@ -40,4 +44,4 @@ package:
|
||||
@cp -r ./opt $(PKG_DIR)/data/
|
||||
@fakeroot sh -c "tar -C $(PKG_DIR)/control -czvf $(PKG_DIR)/control.tar.gz ."
|
||||
@fakeroot sh -c "tar -C $(PKG_DIR)/data -czvf $(PKG_DIR)/data.tar.gz ."
|
||||
@tar -C $(PKG_DIR) -czvf $(BUILD_DIR)/$(APP_NAME)_$(ARCH).ipk ./debian-binary ./control.tar.gz ./data.tar.gz
|
||||
@tar -C $(PKG_DIR) -czvf $(BUILD_DIR)/$(APP_NAME)_$(UPSTREAM_VERSION)$(OPKG_REVISION)_$(ARCH).ipk ./debian-binary ./control.tar.gz ./data.tar.gz
|
||||
|
@ -2,16 +2,16 @@ package models
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestDomain_IsMatch_Plaintext(t *testing.T) {
|
||||
func TestDomain_IsMatch_Domain(t *testing.T) {
|
||||
rule := &Rule{
|
||||
Type: "plaintext",
|
||||
Type: "domain",
|
||||
Rule: "example.com",
|
||||
}
|
||||
if !rule.IsMatch("example.com") {
|
||||
t.Fatal("&Rule{Type: \"plaintext\", Rule: \"example.com\"}.IsMatch(\"example.com\") returns false")
|
||||
t.Fatal("&Rule{Type: \"domain\", Rule: \"example.com\"}.IsMatch(\"example.com\") returns false")
|
||||
}
|
||||
if rule.IsMatch("noexample.com") {
|
||||
t.Fatal("&Rule{Type: \"plaintext\", Rule: \"example.com\"}.IsMatch(\"noexample.com\") returns true")
|
||||
t.Fatal("&Rule{Type: \"domain\", Rule: \"example.com\"}.IsMatch(\"noexample.com\") returns true")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9,8 +9,8 @@ import (
|
||||
|
||||
func TestLoop(t *testing.T) {
|
||||
r := New()
|
||||
r.AddCNameRecord("1", "2", time.Minute)
|
||||
r.AddCNameRecord("2", "1", time.Minute)
|
||||
r.AddCNameRecord("1", "2", 60)
|
||||
r.AddCNameRecord("2", "1", 60)
|
||||
if r.GetARecords("1") != nil {
|
||||
t.Fatal("loop detected")
|
||||
}
|
||||
@ -21,8 +21,8 @@ func TestLoop(t *testing.T) {
|
||||
|
||||
func TestCName(t *testing.T) {
|
||||
r := New()
|
||||
r.AddARecord("example.com", []byte{1, 2, 3, 4}, time.Minute)
|
||||
r.AddCNameRecord("gateway.example.com", "example.com", time.Minute)
|
||||
r.AddARecord("example.com", []byte{1, 2, 3, 4}, 60)
|
||||
r.AddCNameRecord("gateway.example.com", "example.com", 60)
|
||||
records := r.GetARecords("gateway.example.com")
|
||||
if records == nil {
|
||||
t.Fatal("no records")
|
||||
@ -34,7 +34,7 @@ func TestCName(t *testing.T) {
|
||||
|
||||
func TestA(t *testing.T) {
|
||||
r := New()
|
||||
r.AddARecord("example.com", []byte{1, 2, 3, 4}, time.Minute)
|
||||
r.AddARecord("example.com", []byte{1, 2, 3, 4}, 60)
|
||||
records := r.GetARecords("example.com")
|
||||
if records == nil {
|
||||
t.Fatal("no records")
|
||||
@ -46,7 +46,8 @@ func TestA(t *testing.T) {
|
||||
|
||||
func TestDeprecated(t *testing.T) {
|
||||
r := New()
|
||||
r.AddARecord("example.com", []byte{1, 2, 3, 4}, -time.Minute)
|
||||
r.AddARecord("example.com", []byte{1, 2, 3, 4}, 0)
|
||||
time.Sleep(time.Second)
|
||||
records := r.GetARecords("example.com")
|
||||
if records != nil {
|
||||
t.Fatal("deprecated records")
|
||||
@ -63,7 +64,7 @@ func TestNotExistedA(t *testing.T) {
|
||||
|
||||
func TestNotExistedCNameAlias(t *testing.T) {
|
||||
r := New()
|
||||
r.AddCNameRecord("gateway.example.com", "example.com", time.Minute)
|
||||
r.AddCNameRecord("gateway.example.com", "example.com", 60)
|
||||
records := r.GetARecords("gateway.example.com")
|
||||
if records != nil {
|
||||
t.Fatal("not existed records")
|
||||
@ -72,8 +73,8 @@ func TestNotExistedCNameAlias(t *testing.T) {
|
||||
|
||||
func TestReplacing(t *testing.T) {
|
||||
r := New()
|
||||
r.AddCNameRecord("gateway.example.com", "example.com", time.Minute)
|
||||
r.AddARecord("gateway.example.com", []byte{1, 2, 3, 4}, time.Minute)
|
||||
r.AddCNameRecord("gateway.example.com", "example.com", 60)
|
||||
r.AddARecord("gateway.example.com", []byte{1, 2, 3, 4}, 60)
|
||||
records := r.GetARecords("gateway.example.com")
|
||||
if bytes.Compare(records[0].Address, []byte{1, 2, 3, 4}) != 0 {
|
||||
t.Fatal("mismatch")
|
||||
@ -82,11 +83,11 @@ func TestReplacing(t *testing.T) {
|
||||
|
||||
func TestAliases(t *testing.T) {
|
||||
r := New()
|
||||
r.AddARecord("1", []byte{1, 2, 3, 4}, time.Minute)
|
||||
r.AddCNameRecord("2", "1", time.Minute)
|
||||
r.AddCNameRecord("3", "2", time.Minute)
|
||||
r.AddCNameRecord("4", "2", time.Minute)
|
||||
r.AddCNameRecord("5", "1", time.Minute)
|
||||
r.AddARecord("1", []byte{1, 2, 3, 4}, 60)
|
||||
r.AddCNameRecord("2", "1", 60)
|
||||
r.AddCNameRecord("3", "2", 60)
|
||||
r.AddCNameRecord("4", "2", 60)
|
||||
r.AddCNameRecord("5", "1", 60)
|
||||
aliases := r.GetAliases("1")
|
||||
if aliases == nil {
|
||||
t.Fatal("no aliases")
|
||||
|
Loading…
x
Reference in New Issue
Block a user