diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..de83288
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,32 @@
+on:
+  release:
+    types: [created]
+
+jobs:
+  release:
+    name: release ${{ matrix.target }}
+    runs-on: ubuntu-latest
+    if: github.event_name == 'release'
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - target: x86_64-pc-windows-gnu
+            archive: zip
+          - target: x86_64-unknown-linux-musl
+            archive: tar.gz
+          - target: x86_64-apple-darwin
+            archive: zip
+    steps:
+    - uses: actions/checkout@master
+    - name: Compile and release
+      uses: rust-build/rust-build.action@v1.4.4
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+      with:
+        # Output target
+        RUSTTARGET: ${{ matrix.target }}
+        # List of extra files to include in build
+        EXTRA_FILES: "README.md LICENSE"
+        # List of archive types to publish the binaries with, default "zip", supports zip and all tar formats
+        ARCHIVE_TYPES: ${{ matrix.archive }}