Add GitHub release action (#3962)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..6c07480
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,61 @@
+name: Release
+
+on:
+ release:
+ types: [published]
+
+jobs:
+ release:
+ 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]
+ exclude:
+ - goos: darwin
+ goarch: 386
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Set up Go
+ uses: actions/setup-go@v2
+
+ - 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 ::set-output name=name::${PACKAGE_NAME}
+
+ - 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