#498 - feat(config): add form field @add_field:027bd5563d3da54e670911cd9e95f729c4ad342f #374
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: PR Build (Preview) | |
run-name: '#${{ github.event.pull_request.number }} - ${{ github.event.pull_request.title }} @${{ github.event.pull_request.head.ref }}:${{ github.event.pull_request.head.sha }}' | |
on: | |
workflow_dispatch: | |
pull_request: | |
types: [opened, synchronize, reopened, ready_for_review] | |
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: | |
context: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Dump GitHub context | |
env: | |
GITHUB_CONTEXT: ${{ toJson(github) }} | |
run: | | |
echo "$GITHUB_CONTEXT" | |
instantiate-check-runs: | |
if: startsWith(github.event.pull_request.head.repo.full_name, github.repository_owner) | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
id: ['checkout-full-src', 'build-web', 'build-bundle', 'build-passed'] | |
steps: | |
- name: Instantiate required check runs | |
uses: daeuniverse/ci-seed-jobs/core/daed/instantiate-check-runs@master | |
with: | |
app_id: ${{ secrets.GH_APP_ID }} | |
private_key: ${{ secrets.GH_APP_PRIVATE_KEY }} | |
id: 'dae-bot[bot]/${{ matrix.id }}' | |
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 . | |
FILE=./daed-full-src.zip | |
DGST=$FILE.dgst | |
md5sum $FILE >>$DGST | |
shasum -a 1 $FILE >>$DGST | |
shasum -a 256 $FILE >>$DGST | |
shasum -a 512 $FILE >>$DGST | |
- name: Upload artifact - full source | |
uses: actions/upload-artifact@v4 | |
with: | |
name: daed-full-src.zip | |
path: daed-full-src.zip | |
- name: Report result | |
if: always() && startsWith(github.event.pull_request.head.repo.full_name, github.repository_owner) | |
uses: daeuniverse/ci-seed-jobs/core/daed/report-check-run@master | |
with: | |
app_id: ${{ secrets.GH_APP_ID }} | |
private_key: ${{ secrets.GH_APP_PRIVATE_KEY }} | |
id: 'dae-bot[bot]/checkout-full-src' | |
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 | |
- name: Report result | |
if: always() && startsWith(github.event.pull_request.head.repo.full_name, github.repository_owner) | |
uses: daeuniverse/ci-seed-jobs/core/daed/report-check-run@master | |
with: | |
app_id: ${{ secrets.GH_APP_ID }} | |
private_key: ${{ secrets.GH_APP_PRIVATE_KEY }} | |
id: 'dae-bot[bot]/build-web' | |
build-bundle: | |
needs: build-web | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
goos: [linux] | |
goarch: [arm64, amd64] | |
include: | |
# BEGIN Linux ARM 5 6 7 | |
- goos: linux | |
goarch: arm | |
goarm: 7 | |
- goos: linux | |
goarch: arm | |
goarm: 6 | |
- goos: linux | |
goarch: arm | |
goarm: 5 | |
# END Linux ARM 5 6 7 | |
fail-fast: false | |
env: | |
GOOS: ${{ matrix.goos }} | |
GOARCH: ${{ matrix.goarch }} | |
GOARM: ${{ matrix.goarm }} | |
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: Smoking test | |
if: matrix.goarch == 'amd64' | |
run: ./bundled/${{ steps.get_filename.outputs.BUNDLE_NAME }} --version | |
- name: Create binary ZIP archive and Signature | |
run: | | |
pushd bundled || exit 1 | |
zip -9vr ../${{ steps.get_filename.outputs.BUNDLE_NAME }}.zip . | |
popd || exit 1 | |
FILE=./${{ steps.get_filename.outputs.BUNDLE_NAME }}.zip | |
DGST=$FILE.dgst | |
md5sum $FILE >>$DGST | |
shasum -a 1 $FILE >>$DGST | |
shasum -a 256 $FILE >>$DGST | |
shasum -a 512 $FILE >>$DGST | |
- name: Upload artifact - bundle | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.get_filename.outputs.BUNDLE_NAME }} | |
path: bundled/* | |
- name: Report result | |
if: always() && startsWith(github.event.pull_request.head.repo.full_name, github.repository_owner) | |
uses: daeuniverse/ci-seed-jobs/core/daed/report-check-run@master | |
with: | |
app_id: ${{ secrets.GH_APP_ID }} | |
private_key: ${{ secrets.GH_APP_PRIVATE_KEY }} | |
id: 'dae-bot[bot]/build-bundle' | |
conclusion: | |
if: always() && startsWith(github.event.pull_request.head.repo.full_name, github.repository_owner) | |
needs: [build-bundle] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Report workflow run result | |
uses: daeuniverse/ci-seed-jobs/core/daed/report-workflow-run@master | |
with: | |
app_id: ${{ secrets.GH_APP_ID }} | |
private_key: ${{ secrets.GH_APP_PRIVATE_KEY }} | |
id: 'dae-bot[bot]/build-passed' | |
conclusion: ${{ needs.build-bundle.result }} |