name: Build on: push: paths: - "**/*.go" - "go.mod" - "go.sum" - ".gitea/workflows/*.yml" pull_request: branches: [ main ] types: [ opened, synchronize, reopened ] paths: - "**/*.go" - "go.mod" - "go.sum" jobs: build: runs-on: ubuntu-latest strategy: matrix: GOOS: - linux - windows - darwin GOARCH: - "amd64" - "386" - "arm64" exclude: - GOOS: darwin GOARCH: "386" include: - GOOS: windows BIN_SUFFIX: ".exe" steps: - name: Checkout codebase uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Go 1.23 uses: actions/setup-go@v5 with: go-version: ^1.23 - name: Setup vars id: vars run: | echo "::set-output name=short_sha::$(git rev-parse --short HEAD)" echo "::set-output name=git_tag::$(git describe --tags --always)" - name: Test run: go test -v ./... - name: Build env: GOOS: ${{ matrix.GOOS }} GOARCH: ${{ matrix.GOARCH }} CGO_ENABLED: 0 run: go build -v -trimpath -ldflags="-w -s -X main.AppVersion=${{ steps.vars.outputs.git_tag }}" -o um-${{ matrix.GOOS }}-${{ matrix.GOARCH }}${{ matrix.BIN_SUFFIX }} ./cmd/um - name: Publish artifact uses: christopherhx/gitea-upload-artifact@v4 with: name: um-${{ matrix.GOOS }}-${{ matrix.GOARCH }} path: ./um-${{ matrix.GOOS }}-${{ matrix.GOARCH }}${{ matrix.BIN_SUFFIX }} archive: runs-on: ubuntu-latest needs: build steps: - name: prepare archive run: | mkdir -p dist prepare - name: Download artifacts uses: christopherhx/gitea-download-artifact@v4 with: path: prepare pattern: um-* - name: prepare archive run: | for exe in prepare/*/um-*.exe; do zip -9 -j "dist/$(basename "$exe" .exe).zip" "$exe" rm -f "$exe" done for exe in prepare/*/um-*; do tar \ --sort=name --format=posix \ --pax-option=exthdr.name=%d/PaxHeaders/%f \ --pax-option=delete=atime,delete=ctime \ --clamp-mtime --mtime='1970-01-01T00:00:00Z' \ --numeric-owner --owner=0 --group=0 \ --mode=0755 \ -cv \ -C "$(dirname "$exe")" \ "$(basename "$exe")" \ | gzip -9 > "dist/$(basename "$exe").tar.gz" rm -f "$exe" done - name: Publish all-in-one archive uses: christopherhx/gitea-upload-artifact@v4 with: name: dist-all path: dist