name: Release on: release: types: [published] permissions: contents: read jobs: release: permissions: contents: write # to upload release asset (actions/upload-release-asset) name: Release cmd/protoc-gen-go-grpc runs-on: ubuntu-latest if: startsWith(github.event.release.tag_name, 'cmd/protoc-gen-go-grpc/') strategy: matrix: goos: [linux, darwin, windows] goarch: [386, amd64, arm64] exclude: - goos: darwin goarch: 386 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 - name: Download dependencies run: | cd cmd/protoc-gen-go-grpc go mod download - name: Prepare build directory run: | mkdir -p build/ cp README.md build/ cp LICENSE build/ - name: Build env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} run: | cd cmd/protoc-gen-go-grpc go build -trimpath -o $GITHUB_WORKSPACE/build - name: Create package id: package run: | PACKAGE_NAME=protoc-gen-go-grpc.${GITHUB_REF#refs/tags/cmd/protoc-gen-go-grpc/}.${{ matrix.goos }}.${{ matrix.goarch }}.tar.gz tar -czvf $PACKAGE_NAME -C build . echo "name=${PACKAGE_NAME}" >> $GITHUB_OUTPUT - name: Upload asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} asset_path: ./${{ steps.package.outputs.name }} asset_name: ${{ steps.package.outputs.name }} asset_content_type: application/gzip