diff --git a/.goreleaser.yml b/.goreleaser.yml
new file mode 100644
index 00000000000..1a9fbadb489
--- /dev/null
+++ b/.goreleaser.yml
@@ -0,0 +1,51 @@
+project_name: arduino-cli
+
+release:
+  github:
+    owner: arduino
+    name: arduino-cli
+
+builds:
+  - env:
+      - CGO_ENABLED=0
+    goos:
+      - linux
+      - darwin
+      - windows
+    goarch:
+      - 386
+      - amd64
+      - arm
+      - arm64
+checksum:
+  name_template: '{{ .ProjectName }}-{{ .Version }}-checksums.txt'
+changelog:
+  sort: asc
+  filters:
+    exclude:
+      - '^docs:'
+      - '^test:'
+      - '^dev:'
+      - 'README'
+      - Merge pull request
+      - Merge branch
+git:
+  short_hash: true
+
+archive:
+  format: tar.gz
+  name_template: '{{ .ProjectName }}-{{ .Version }}-{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
+  replacements:
+    darwin: osx
+    linux: linux
+    windows: windows
+    386: 32bit
+    amd64: 64bit
+  format_overrides:
+    - goos: windows
+      format: zip
+    - goos: darwin
+      format: zip
+  files:
+    - README.md
+    - LICENSE.txt
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index 5b54277f75c..851f8272513 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -34,6 +34,15 @@ script:
 after_success:
   - bash <(curl -s https://codecov.io/bash)
 
+# calls goreleaser
+deploy:
+  - provider: script
+    skip_cleanup: true
+    script: curl -sL https://git.io/goreleaser | bash
+    on:
+      tags: true
+      condition: $TRAVIS_OS_NAME = linux
+
 cache:
   directories:
     - $GOPATH/pkg/dep
\ No newline at end of file