Publish prerelease v0.7.0rc1.1 by @wanlce #5
Workflow file for this run
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: Publish Pre-release | |
run-name: Publish prerelease ${{ github.ref_name }} by @${{ github.actor }} | |
on: | |
workflow_dispatch: | |
inputs: | |
tag: | |
type: string | |
required: true | |
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/action-setup@v3.0.0 | |
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: | | |
mkdir -p ./output_packages/ | |
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 "daed@dae.v2raya.org" --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 ./output_packages/installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.deb | |
cp bundled/daed-linux-$GOARCH$GOAMD64$GOARM.rpm ./output_packages/installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.rpm | |
if [ "$ARCH_PACMAN" == 'pacman' ];then | |
cp bundled/daed-linux-$GOARCH$GOAMD64$GOARM.pacman ./output_packages/installer-${{ steps.get_filename.outputs.BUNDLE_NAME }}.pkg.tar.zst | |
fi | |
ls ./output_packages/ | 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/action-upload-artifacts-and-release-assets@v2.0 | |
with: | |
path: | | |
output_packages/* | |
upload-prerelease: | |
needs: [checkout-full-src, build-bundle] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download all artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: release/ | |
- name: Prepare files for upload | |
run: | | |
cp release/*/*.deb ./ | |
cp release/*/*.rpm ./ | |
cp release/*/*.pkg.tar.zst ./ | |
cp release/*/*.zip ./ | |
pushd release | |
zip -9vr ../web.zip web/* | |
for zip_file in $(ls | grep -E "^daed-linux*");do | |
pushd $zip_file | |
zip -9r ../../"$zip_file".zip ./* | |
popd | |
done | |
popd | |
for package in $(ls | grep -E ".deb|.pkg.tar.zst|.rpm|.zip");do | |
echo "$(md5sum $package)"" md5" >> $package.dgst | |
echo "$(shasum -a 1 $package)"" sha1" >> $package.dgst | |
echo "$(shasum -a 256 $package)"" sha256" >> $package.dgst | |
echo "$(shasum -a 512 $package)"" sha512" >> $package.dgst | |
done | |
echo "Show files are going to upload..." | |
ls -lh | grep -E ".deb|.pkg.tar.zst|.rpm|.zip" | |
- name: Delete current release assets | |
uses: 8Mi-Tech/delete-release-assets-action@main | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ github.ref_name }} | |
deleteOnlyFromDrafts: false | |
- name: Upload Prerelease | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: ${{ github.ref_name }} | |
files: | | |
*zip | |
*pkg.tar.zst | |
*deb | |
*rpm | |
*dgst | |
prerelease: true |