# Git(tea) Actions workflow: Build and publish standalone binaries **plus** bundled `static/` assets # ──────────────────────────────────────────────────────────────────── # ✧ Builds the Go‑based WoL server for four targets **and** packt das Verzeichnis # `static` zusammen mit der Binary, sodass es relativ zur ausführbaren Datei # liegt (wichtig für die eingebauten Bootstrap‑Assets & favicon). # # • linux/amd64 → wol-server-linux-amd64.tar.gz # • linux/arm64 → wol-server-linux-arm64.tar.gz # • linux/arm/v7 → wol-server-linux-armv7.tar.gz # • windows/amd64 → wol-server-windows-amd64.zip # # ✧ Artefakte landen im Workflow und – bei Tag‑Push (vX.Y.Z) – als Release‑Assets. # # Secrets/variables: # GITEA_TOKEN – optional, falls default token keine Release‑Rechte hat. # ──────────────────────────────────────────────────────────────────── name: build-binaries on: push: branches: [ "main" ] tags: [ "v*" ] jobs: build: if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-fast strategy: matrix: include: - goos: linux goarch: amd64 ext: "" - goos: linux goarch: arm64 ext: "" - goos: linux goarch: arm goarm: "7" ext: "" - goos: windows goarch: amd64 ext: ".exe" env: GO_VERSION: "1.24" BINARY_NAME: trading-server steps: - name: Checkout source uses: actions/checkout@v3 - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} cache: true - name: Build ${{ matrix.goos }}/${{ matrix.goarch }}${{ matrix.goarm && format('/v{0}', matrix.goarm) || '' }} shell: bash run: | set -e mkdir -p dist/package if [ -n "${{ matrix.goarm }}" ]; then export GOARM=${{ matrix.goarm }}; fi CGO_ENABLED=0 GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} go build -trimpath -ldflags "-s -w" \ -o "dist/package/${BINARY_NAME}${{ matrix.ext }}" . # Assets: statisches Verzeichnis beilegen cp -r static dist/package/ - name: Package archive with static assets shell: bash run: | set -e cd dist if [ "${{ matrix.goos }}" == "windows" ]; then ZIP_NAME="${BINARY_NAME}-windows-amd64.zip" (cd package && zip -r "../$ZIP_NAME" .) else ARCH_SUFFIX="${{ matrix.goarch }}" if [ "${{ matrix.goarch }}" == "arm" ]; then ARCH_SUFFIX="armv${{ matrix.goarm }}"; fi TAR_NAME="${BINARY_NAME}-${{ matrix.goos }}-${ARCH_SUFFIX}.tar.gz" tar -czf "$TAR_NAME" -C package . fi - name: Upload workflow artifact uses: actions/upload-artifact@v3 with: name: ${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.goarm && format('v{0}', matrix.goarm) || '' }} path: dist/*.tar.gz if-no-files-found: ignore - uses: actions/upload-artifact@v3 with: name: windows-amd64 path: dist/*.zip if-no-files-found: ignore # Release Schritt für Tag‑Pushes release: if: startsWith(github.ref, 'refs/tags/') needs: build runs-on: ubuntu-fast permissions: contents: write steps: - name: Download artifacts uses: actions/download-artifact@v3 with: path: ./dist - name: Create / Update release uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITEA_TOKEN || github.token }} with: name: "Release ${{ github.ref_name }}" tag_name: ${{ github.ref_name }} draft: false prerelease: false files: | dist/**/trading-server-*.tar.gz dist/**/trading-server-*.zip