| 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 |
| run: | |
| gh release upload ${{ github.event.release.tag_name }} ./${{ steps.package.outputs.name }} |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |