diff --git a/.gitignore-release b/.gitignore-release
new file mode 100644
index 0000000000000000000000000000000000000000..6da42ed443ed2b2ef686a6b9164e1830a91e2290
--- /dev/null
+++ b/.gitignore-release
@@ -0,0 +1,6 @@
+/*
+
+!/built
+!/tools
+!/elasticsearch
+!/package.json
diff --git a/.travis.yml b/.travis.yml
index a68e72252066cbec2c9dd2c0909d32aa45e8d13f..2f1b1b45a4c82ae3d292dca3215c0d05a27ed389 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,6 +16,19 @@ before_script:
   - cp ./.ci-files/test.yml ./.config
   - npm run build
 
+after_success:
+  - openssl aes-256-cbc -K $encrypted_ceda82069128_key -iv $encrypted_ceda82069128_iv -in travis_rsa.enc -out travis_rsa -d
+  - cp .travis_rsa ~/.ssh/id_rsa
+  - chmod 600 ~/.ssh/id_rsa
+  - echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
+  - git checkout -b release
+  - cp -f .gitignore-release .gitignore
+  - git add --all
+  - git config --global user.email "AyaMorisawa4869@gmail.com"
+  - git config --global user.name "Aya Morisawa"
+  - git commit -m "Release build for $TRAVIS_COMMIT"
+  - if [ $TRAVIS_BRANCH = "master" ]; then git push -f git@github.com:syuilo/misskey release; fi
+
 env:
   - CXX=g++-4.8
 
diff --git a/travis_rsa.enc b/travis_rsa.enc
new file mode 100644
index 0000000000000000000000000000000000000000..ec45f8a6bb0c250543b36b66df083d52328b3d1b
Binary files /dev/null and b/travis_rsa.enc differ