name: Build and Release on: push: tags: - 'v*' permissions: contents: write jobs: build: runs-on: ubuntu-latest strategy: matrix: goos: [windows, linux, darwin] goarch: [amd64, arm64] flavour: [core, full] fail-fast: false steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.24.6' - name: Generate Windows resources if: matrix.goos == 'windows' run: | go install github.com/tc-hib/go-winres@latest go-winres simply \ --manifest cli \ --product-name FFWebP \ --original-filename ffwebp.exe \ --icon logo.ico \ --copyright "(c) 2025 coalaura" \ --file-description "Convert any image format into any other image format" \ --file-version "${{ github.ref_name }}" \ --arch "${{ matrix.goarch }}" - name: Build ${{ matrix.goos }}_${{ matrix.goarch }} (${{ matrix.flavour }}) shell: bash run: | mkdir -p build [[ "${{ matrix.goos }}" == "windows" ]] && EXT=".exe" || EXT="" OUT="build/ffwebp_${{ github.ref_name }}_${{ matrix.flavour }}_${{ matrix.goos }}_${{ matrix.goarch }}${EXT}" GOOS=${{ matrix.goos }} \ GOARCH=${{ matrix.goarch }} \ CGO_ENABLED=0 \ go build \ -trimpath \ -buildvcs=false \ -ldflags "-s -w -X 'main.Version=${{ github.ref_name }}'" \ -tags "${{ matrix.flavour }}" \ -o "$OUT" ./cmd/ffwebp - name: Upload artifact uses: actions/upload-artifact@v4 with: name: ffwebp_${{ github.ref_name }}_${{ matrix.flavour }}_${{ matrix.goos }}_${{ matrix.goarch }} path: build/* release: needs: build runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Download all build artifacts uses: actions/download-artifact@v4 with: path: ./build - name: Create GitHub release uses: softprops/action-gh-release@v2 with: files: ./build/** name: "Release ${{ github.ref_name }}" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}