version: '3' vars: APP_NAME: code-server-bridge ENTRY: ./cmd/server OUTPUT_DIR: bin VERSION: sh: git describe --tags --always --dirty 2>/dev/null || echo "dev" BUILD_TIME: sh: date -u '+%Y-%m-%d_%H:%M:%S' GIT_COMMIT: sh: git rev-parse --short HEAD 2>/dev/null || echo "unknown" tasks: default: desc: Build for current platform cmds: - task: build build: desc: Build for current platform vars: LDFLAGS: '-s -w -X "main.Version={{.VERSION}}" -X "main.BuildTime={{.BUILD_TIME}}" -X "main.GitCommit={{.GIT_COMMIT}}"' cmds: - echo "Building {{.APP_NAME}} v{{.VERSION}}..." - go build -ldflags "{{.LDFLAGS}}" -o {{.APP_NAME}} {{.ENTRY}} - echo "Build complete - {{.APP_NAME}}" build-linux: desc: Build for Linux (amd64 arm64) vars: LDFLAGS: '-s -w -X "main.Version={{.VERSION}}" -X "main.BuildTime={{.BUILD_TIME}}" -X "main.GitCommit={{.GIT_COMMIT}}"' cmds: - mkdir -p {{.OUTPUT_DIR}} - echo "Building Linux amd64..." - cmd: GOOS=linux GOARCH=amd64 go build -ldflags "{{.LDFLAGS}}" -o {{.OUTPUT_DIR}}/{{.APP_NAME}}-linux-amd64 {{.ENTRY}} - echo "Building Linux arm64..." - cmd: GOOS=linux GOARCH=arm64 go build -ldflags "{{.LDFLAGS}}" -o {{.OUTPUT_DIR}}/{{.APP_NAME}}-linux-arm64 {{.ENTRY}} - echo "Linux builds complete" build-windows: desc: Build for Windows (amd64) vars: LDFLAGS: '-s -w -X "main.Version={{.VERSION}}" -X "main.BuildTime={{.BUILD_TIME}}" -X "main.GitCommit={{.GIT_COMMIT}}"' cmds: - mkdir -p {{.OUTPUT_DIR}} - echo "Building Windows amd64..." - cmd: GOOS=windows GOARCH=amd64 go build -ldflags "{{.LDFLAGS}}" -o {{.OUTPUT_DIR}}/{{.APP_NAME}}-windows-amd64.exe {{.ENTRY}} - echo "Windows builds complete" build-all: desc: Build for all platforms deps: - build-linux - build-windows cmds: - echo "All platform builds complete" upx: desc: Compress binaries with UPX cmds: - | if command -v upx > /dev/null 2>&1; then for file in {{.OUTPUT_DIR}}/*; do if [ -f "$file" ]; then echo "Compressing $file..." upx --best --lzma "$file" 2>/dev/null || echo "UPX compression failed: $file" fi done echo "UPX compression complete" else echo "UPX not found, skipping compression" echo "Install UPX: https://upx.github.io/" fi package: desc: Build, compress and package releases deps: - build-all - upx cmds: - mkdir -p releases - tar -czf releases/{{.APP_NAME}}-{{.VERSION}}-linux-amd64.tar.gz -C {{.OUTPUT_DIR}} {{.APP_NAME}}-linux-amd64 - tar -czf releases/{{.APP_NAME}}-{{.VERSION}}-linux-arm64.tar.gz -C {{.OUTPUT_DIR}} {{.APP_NAME}}-linux-arm64 - cd {{.OUTPUT_DIR}} && zip -q ../releases/{{.APP_NAME}}-{{.VERSION}}-windows-amd64.zip {{.APP_NAME}}-windows-amd64.exe - echo "Packaging complete - releases/" clean: desc: Clean build artifacts cmds: - rm -rf {{.OUTPUT_DIR}} releases {{.APP_NAME}} {{.APP_NAME}}.exe - echo "Clean complete" dev: desc: Run in development mode cmds: - go run {{.ENTRY}} test: desc: Run tests cmds: - go test -v ./...