diff --git a/.ci/Dockerfile b/.ci/Dockerfile
new file mode 100644
index 0000000..2137b3d
--- /dev/null
+++ b/.ci/Dockerfile
@@ -0,0 +1,13 @@
+FROM node:10.15.3-stretch
+
+RUN set -ex \
+ && apt-get update && apt-get install -y build-essential rename \
+ && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/*
+
+WORKDIR /app
+
+COPY build.sh /cont/script/
+RUN set -ex \
+ && chmod +x /cont/script/build.sh
+
+CMD ["/cont/script/build.sh"]
diff --git a/.ci/build.sh b/.ci/build.sh
new file mode 100644
index 0000000..d9d7c85
--- /dev/null
+++ b/.ci/build.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+set -e
+
+yarn
+
+if [ -n "${TRAVIS_TAG}" ]; then
+ yarn build:prod:zip:all
+ rename 's|artifacts/(.*)/(.*)\.zip$|artifacts/$1/$2-$1\.zip|' artifacts/*/*.zip
+else
+ yarn build:all
+fi
diff --git a/.prettierignore b/.prettierignore
index ec6d3cd..f543623 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1 +1,2 @@
package.json
+.travis.yml
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..c095afb
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,26 @@
+jobs:
+ fast_finish: true
+ include:
+ - stage: build
+ install: docker build --tag ci .ci
+ script: docker run --init --rm -e TRAVIS_TAG --mount type=bind,source="${PWD}",target=/app ci
+ os: linux
+ dist: xenial
+ language: generic
+ services:
+ - docker
+
+before_deploy: sha256sum artifacts/*/*
+
+deploy:
+ provider: releases
+ api_key:
+ secure: "uGqy0esvA+f7WZbvkqvDiqXkSMx4c+FDp7LPx3kFlQYnF8pnZjWEqtWXZ3q5c0DuGUtCXqKlDELgmuwa+pBLz5lR4Aiz8N9BC2Pkr81U4X3eBC0dJ9tmB4OaOCFe75hY0WjndFOMZPfuBXCv5rJtc6iD+mXN1I3aGnMklp+k07QEk8XXwhBHBDaG7IbEca0bkmr76/eg3AcBH0J9BSmPYdDjuYOamdiphg55yfIRyYyyCSkyNme8dnnEx2yfj6+ptML5PW4m+x1YY8VKUT0tFZvsvL9vKAnLykA/6sEj0uy2LHi0/QDdIByxYgb7vc8bct3tq01r5/fQ20FLlzbqCjSKNY0sTgEIV1AE1mnUqLpTGgyM2aSvGFHpMvrZr7XUoa1pm2zHUE7CXGobLungHUX6i6xPcR3H/J0zwIsUuIMhORzaBYAxikx1u4qnWVFk6sdedsXC4D1e2aArPuRcxQtTHudQAcCw1CI2fH2U55cEtiUexuKtV+AtoyijXCoQl0BclpIBSqaIPGn1MoBXkEg8G0cazsSX2LOAtcQoSd6unhZPZMgLPGs7DFbr5UO3mECr8N5VCrA6EK5ARXMtbHp12NB1CAMm7VEHMtmjuqsFwnTsnMk+tTbYUnrteYyqpGyeyb6xViD0aNVOHybKV2I82SNNfEQcprO9gkgKIGM="
+ draft: true
+ file: artifacts/*/*
+ file_glob: true
+ overwrite: true
+ skip_cleanup: true
+ body: "Download and install the extension from the [extension store](https://github.com/dessant/buster#readme) of your browser.
Learn more about this release from the [changelog](https://github.com/dessant/buster/blob/master/CHANGELOG.md#changelog).
The assets listed below are not for general use."
+ on:
+ tags: true