chore: dns.google.com should be dns.google according Google recommend… #471
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
name: Build (Main) | |
on: | |
workflow_dispatch: | |
push: | |
branches: [main] | |
paths: | |
- 'src/**' | |
- 'public/**' | |
- .github/workflows/pr-build.yml | |
- install/friendly-filenames.json | |
- Makefile | |
- wing | |
- index.html | |
- vite.config.ts | |
- .npmrc | |
- package.json | |
- pnpm-lock.yaml | |
jobs: | |
checkout-full-src: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '^1.21' | |
- run: go version | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- name: Download wing vendor | |
run: | | |
git submodule update --init --recursive | |
export GOMODCACHE="${PWD}"/go-mod | |
go mod download -modcacherw | |
cd dae-core && go mod download -modcacherw && cd .. | |
find "$GOMODCACHE" -maxdepth 1 ! -name "cache" ! -name "go-mod" -exec rm -rf {} \; | |
sed -i 's/#export GOMODCACHE=$(PWD)\/go-mod/export GOMODCACHE=$(PWD)\/go-mod/' Makefile | |
working-directory: wing | |
- name: Create full source ZIP archive and Signature | |
run: | | |
zip -9vr daed-full-src.zip . -x .git/\* | |
- name: Upload artifact - full source | |
uses: actions/upload-artifact@v4 | |
with: | |
name: daed-full-src.zip | |
path: daed-full-src.zip | |
build-web: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: latest | |
- uses: actions/setup-node@v4 | |
with: | |
cache: pnpm | |
node-version: latest | |
- name: Build | |
run: | | |
pnpm install | |
pnpm build | |
- name: Upload artifact - web | |
uses: actions/upload-artifact@v4 | |
with: | |
name: web | |
path: dist | |
build-bundle: | |
needs: [build-web] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
goos: [linux] | |
goarch: [386, riscv64] | |
include: | |
# BEGIN Linux ARM 5 6 7 64 | |
- goos: linux | |
goarch: arm64 | |
- 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 Linux AMD64 v1 v2 v3 | |
- goos: linux | |
goarch: amd64 | |
goamd64: v1 | |
- goos: linux | |
goarch: amd64 | |
goamd64: v2 | |
- goos: linux | |
goarch: amd64 | |
goamd64: v3 | |
# END Linux AMD64 v1 v2 v3 | |
# BEGIN Linux mips | |
- goos: linux | |
goarch: mips64 | |
cgo_enabled: 1 | |
cc: mips64-linux-gnuabi64-gcc | |
- goos: linux | |
goarch: mips64le | |
cgo_enabled: 1 | |
cc: mips64el-linux-gnuabi64-gcc | |
- goos: linux | |
goarch: mipsle | |
cgo_enabled: 1 | |
cc: mipsel-linux-gnu-gcc | |
- goos: linux | |
goarch: mips | |
cgo_enabled: 1 | |
cc: mips-linux-gnu-gcc | |
# END Linux mips | |
fail-fast: false | |
env: | |
GOOS: ${{ matrix.goos }} | |
GOARCH: ${{ matrix.goarch }} | |
GOARM: ${{ matrix.goarm }} | |
GOAMD64: ${{ matrix.goamd64 }} | |
CGO_ENABLED: ${{ matrix.cgo_enabled || 0 }} | |
CC: ${{ matrix.cc }} | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '^1.21' | |
- run: go version | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Get the version | |
id: get_version | |
env: | |
REF: ${{ github.ref }} | |
run: | | |
if [[ "$REF" == "refs/tags/v"* ]]; then | |
tag=${REF##*/} | |
version=${tag} | |
package_version="${tag:1}" | |
else | |
date=$(git log -1 --format="%cd" --date=short | sed s/-//g) | |
count=$(git rev-list --count HEAD) | |
commit=$(git rev-parse --short HEAD) | |
version="unstable-$date.r${count}.$commit" | |
package_version="$date.r${count}.$commit" | |
fi | |
echo "VERSION=$version" >> $GITHUB_OUTPUT | |
echo "VERSION=$version" >> $GITHUB_ENV | |
echo "PACKAGE_VERSION=$package_version" >> $GITHUB_OUTPUT | |
echo "PACKAGE_VERSION=$package_version" >> $GITHUB_ENV | |
- name: Get the filename | |
id: get_filename | |
run: | | |
export _NAME=$(jq ".[\"$GOOS-$GOARCH$GOARM$GOAMD64\"].friendlyName" -r < install/friendly-filenames.json) | |
echo "GOOS: $GOOS, GOARCH: $GOARCH, RELEASE_NAME: $_NAME" | |
echo "BUNDLE_NAME=daed-$_NAME" >> $GITHUB_OUTPUT | |
- name: Install mips build dependencies | |
if: ${{ startsWith(matrix.goarch, 'mips') }} | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gcc-mips64-linux-gnuabi64 gcc-mips64el-linux-gnuabi64 gcc-mips-linux-gnu gcc-mipsel-linux-gnu | |
- name: Download artifact - web | |
uses: actions/download-artifact@v4 | |
with: | |
name: web | |
path: dist/ | |
- name: make | |
run: | | |
mkdir -p ./bundled/ | |
export VERSION=${{ steps.get_version.outputs.VERSION }} | |
export GOFLAGS="-trimpath -modcacherw" | |
export OUTPUT=bundled/${{ steps.get_filename.outputs.BUNDLE_NAME }} | |
make | |
cp ./install/daed.service ./bundled/ | |
curl -L -o ./bundled/geoip.dat https://github.com/v2rayA/dist-v2ray-rules-dat/raw/master/geoip.dat | |
curl -L -o ./bundled/geosite.dat https://github.com/v2rayA/dist-v2ray-rules-dat/raw/master/geosite.dat | |
- name: Upload artifact - bundle | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.get_filename.outputs.BUNDLE_NAME }} | |
path: bundled/* | |
- name: Smoking test | |
if: matrix.goarch == 'amd64' && matrix.goamd64 == 'v1' | |
run: ./bundled/${{ steps.get_filename.outputs.BUNDLE_NAME }} --version | |
- name: Build Linux packages | |
if: ${{ env.GOARM != '5' && env.GOARM != '6' }} | |
run: | | |
if [ "$GOARM" != '5' ] && [ "$GOARM" != '6' ];then | |
sudo apt install -y libarchive-tools rpm | |
sudo gem install fpm -v 1.15.1 | |
pushd bundled || exit 1 | |
if [ "$GOARCH" == 'mips64' ] || [ "$GOARCH" == 'mips64le' ] || [ "$GOARCH" == 'mipsle' ] || [ "$GOARCH" == 'mips' ];then | |
echo "Skip pacman package build for Arch Linux has never been port to MIPS family, Debian package and RPM package are enough." | |
ARCH_PACMAN='' | |
else | |
ARCH_PACMAN='pacman' | |
fi | |
for package_manager in deb rpm $ARCH_PACMAN; do | |
if [ "$package_manager" == 'pacman' ];then | |
if [ "$GOARCH" == 'arm' ] && [ "$GOARM" == '7' ];then | |
package_arch='arm7hf' | |
elif [ "$GOARCH" == 'arm64' ];then | |
package_arch='aarch64' | |
else | |
package_arch="$GOARCH" | |
fi | |
elif [ "$package_manager" == 'rpm' ];then | |
if [ "$GOARCH" == 'arm' ] && [ "$GOARM" == '7' ];then | |
package_arch='armhfp' | |
elif [ "$GOARCH" == 'arm64' ];then | |
package_arch='aarch64' | |
else | |
package_arch="$GOARCH" | |
fi | |
elif [ "$package_manager" == 'deb' ];then | |
if [ "$GOARCH" == 'arm' ] && [ "$GOARM" == '7' ];then | |
package_arch='armhf' | |
else | |
package_arch="$GOARCH" | |
fi | |
fi | |
fpm -s dir -t "$package_manager" -a $package_arch --version "$PACKAGE_VERSION" \ | |
--url 'https://github.com/daeuniverse/daed' --description "daed, A Modern Dashboard For dae." \ | |
--maintainer "[email protected]" --name daed --license 'MIT AGPL' \ | |
--package daed-linux-$GOARCH$GOAMD64$GOARM.$package_manager \ | |
--after-install ../install/package_after_install.sh \ | |
--after-remove ../install/package_after_remove.sh \ | |
./geoip.dat=/usr/share/daed/geoip.dat ./geosite.dat=/usr/share/daed/geosite.dat \ | |
./daed.service=/usr/lib/systemd/system/daed.service \ | |
./${{ steps.get_filename.outputs.BUNDLE_NAME }}=/usr/bin/daed | |
done | |
popd || exit 1 | |
cp bundled/daed-linux-$GOARCH$GOAMD64$GOARM.deb installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.deb | |
cp bundled/daed-linux-$GOARCH$GOAMD64$GOARM.rpm installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.rpm | |
if [ "$ARCH_PACMAN" == 'pacman' ];then | |
cp bundled/daed-linux-$GOARCH$GOAMD64$GOARM.pacman installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.pkg.tar.zst | |
fi | |
ls | grep -E ".deb|.rpm|.pkg.tar.zst" | |
fi | |
- name: Upload Linux packages | |
if: ${{ env.GOARM != '5' && env.GOARM != '6' && env.GOARCH != 'mips' && env.GOARCH != 'mipsle' && env.GOARCH != 'mips64' && env.GOARCH != 'mips64le' }} | |
uses: nanoufo/[email protected] | |
with: | |
path: | | |
installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.deb | |
installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.rpm | |
installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.pkg.tar.zst | |
- name: Upload Linux packages without Arch Linux package | |
if: ${{ env.GOARCH == 'mips' || env.GOARCH == 'mipsle' || env.GOARCH == 'mips64' || env.GOARCH == 'mips64le' }} | |
uses: nanoufo/[email protected] | |
with: | |
path: | | |
installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.deb | |
installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.rpm |