name: Backend on: push: branches: - main pull_request: jobs: build: runs-on: ubuntu-24.04 strategy: matrix: goarch: [ amd64, arm64 ] fail-fast: true steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Go uses: actions/setup-go@v5 with: cache: true go-version: 'stable' - name: Install dependencies run: go mod tidy - name: Wait for frontend build uses: lewagon/wait-on-check-action@v1.3.4 with: ref: ${{ github.event.pull_request.head.sha || github.sha }} check-name: 'build (frontend)' repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Download frontend uses: dawidd6/action-download-artifact@v7 with: workflow: frontend.yml name: frontend path: internal/embed/frontend check_artifacts: true - name: Set build info run: | echo "VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo '0.0.0')" >> $GITHUB_ENV echo "BUILD_TIME=$(date -u '+%F %T UTC')" >> $GITHUB_ENV echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV echo "GO_VERSION=$(go version | cut -d' ' -f3)" >> $GITHUB_ENV echo "BUILD_ID=${{ github.run_id }}" >> $GITHUB_ENV echo "BUILD_USER=$(whoami)" >> $GITHUB_ENV echo "BUILD_HOST=$(hostname)" >> $GITHUB_ENV - name: Build ${{ matrix.goarch }} env: CGO_ENABLED: 0 GOOS: linux GOARCH: ${{ matrix.goarch }} run: | LDFLAGS="-s -w --extldflags '-static'" LDFLAGS="${LDFLAGS} -X 'github.com/TheTNB/panel/internal/app.Version=${VERSION}'" LDFLAGS="${LDFLAGS} -X 'github.com/TheTNB/panel/internal/app.BuildTime=${BUILD_TIME}'" LDFLAGS="${LDFLAGS} -X 'github.com/TheTNB/panel/internal/app.CommitHash=${COMMIT_HASH}'" LDFLAGS="${LDFLAGS} -X 'github.com/TheTNB/panel/internal/app.GoVersion=${GO_VERSION}'" LDFLAGS="${LDFLAGS} -X 'github.com/TheTNB/panel/internal/app.BuildID=${BUILD_ID}'" LDFLAGS="${LDFLAGS} -X 'github.com/TheTNB/panel/internal/app.BuildUser=${BUILD_USER}'" LDFLAGS="${LDFLAGS} -X 'github.com/TheTNB/panel/internal/app.BuildHost=${BUILD_HOST}'" go build -ldflags "${LDFLAGS}" -o web-${{ matrix.goarch }} ./cmd/web go build -ldflags "${LDFLAGS}" -o cli-${{ matrix.goarch }} ./cmd/cli - name: Compress ${{ matrix.goarch }} run: | upx --best --lzma web-${{ matrix.goarch }} upx --best --lzma cli-${{ matrix.goarch }} - name: Upload artifact uses: actions/upload-artifact@v4 with: name: ${{ matrix.goarch }} path: | web-${{ matrix.goarch }} cli-${{ matrix.goarch }}