- add Makefile for building

- update installation scripts to allow arm64 building (default to amd64),
- add GitHub Actions workflow for build test
This commit is contained in:
Fukislim 2025-12-05 01:35:34 +01:00
parent 6dac3cd878
commit 45ee0c53fb
5 changed files with 98 additions and 3 deletions

47
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,47 @@
name: Build and Test
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
strategy:
matrix:
arch: [amd64, arm64]
runs-on: ubuntu-${{ matrix.arch == 'arm64' && '22.04-arm' || '24.04' }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Install system dependencies
run: |
sudo apt update
sudo apt install -y wireguard-tools libgtk-3-dev libayatana-appindicator3-dev resolvconf dpkg-dev
- name: Build with shell scripts
run: ./package.sh
env:
ARCH: ${{ matrix.arch }}
- name: Clean build artifacts
run: make clean
- name: Build with Makefile
run: make
env:
ARCH: ${{ matrix.arch }}
- name: Upload .deb artifact
uses: actions/upload-artifact@v4
with:
name: wireguird-${{ matrix.arch }}-deb
path: build/wireguird_${{ matrix.arch }}.deb

32
Makefile Normal file
View File

@ -0,0 +1,32 @@
.PHONY: all deps build package install clean run
ARCH ?= amd64
all: deps build package
deps:
./deps.sh
build:
mkdir -p ./deb/opt/wireguird/
GOMAXPROCS=$$(nproc) go generate
GOMAXPROCS=$$(nproc) GOARCH=$(ARCH) go build -ldflags "-s -w" -trimpath -o ./deb/opt/wireguird/wireguird
package:
cp -r ./Icon/ ./deb/opt/wireguird/
touch ./deb/opt/wireguird/wireguird.settings
mkdir -p ./build/
sed -i "s/Architecture: .*/Architecture: $(ARCH)/" ./deb/DEBIAN/control
dpkg-deb --root-owner-group --build ./deb ./build/wireguird_$(ARCH).deb
install:
sudo dpkg -i ./build/wireguird_$(ARCH).deb
clean:
rm -rf ./build/
rm -rf ./deb/opt/wireguird/
run:
go generate
go build
sudo ./wireguird

View File

@ -36,6 +36,7 @@ sudo dpkg -i ./wireguird_amd64.deb
deb dependencies: `wireguard-tools libgtk-3-dev libayatana-appindicator3-dev golang-go resolvconf`
Using scripts:
```sh
git clone https://github.com/UnnoTed/wireguird
cd wireguird
@ -44,3 +45,14 @@ chmod +x ./*.sh
./package.sh
./install.sh
```
Using make (supports multicore compiling):
```sh
git clone https://github.com/UnnoTed/wireguird
cd wireguird
make deps
make build
make package
make install
```
Or `make all` to run deps, build, and package (install separately).

View File

@ -4,7 +4,8 @@ if [[ -f "/etc/os-release" ]]; then
echo "not supported yet"
#sudo rpm
elif [[ "${ID}" == "ubuntu" ]]; then
sudo dpkg -i ./build/wireguird_amd64.deb
ARCH=${ARCH:-amd64}
sudo dpkg -i ./build/wireguird_${ARCH}.deb
fi
fi

View File

@ -1,6 +1,7 @@
echo "wireguird: cleaning..."
deb_file="./build/wireguird_amd64.deb"
ARCH=${ARCH:-amd64}
deb_file="./build/wireguird_${ARCH}.deb"
if [ -e "$deb_file" ]; then
rm -r "$deb_file"
fi
@ -15,7 +16,7 @@ mkdir -p "$opt_w_dir"
echo "wireguird: building go binary..."
time {
go generate
go build -ldflags "-s -w" -trimpath -o "$opt_w_dir""wireguird"
GOARCH=$ARCH go build -ldflags "-s -w" -trimpath -o "$opt_w_dir""wireguird"
}
echo "wireguird: copying icons..."
@ -29,5 +30,7 @@ if [ ! -d "./build/" ]; then
mkdir ./build/
fi
sed -i "s/Architecture: .*/Architecture: $ARCH/" ./deb/DEBIAN/control
dpkg-deb --root-owner-group --build ./deb $deb_file
echo "wireguird: done"