diff --git a/.gitignore b/.gitignore
index f710fdddc18f996fda303510b85613bfadcc5fa0..f3682eba70ade2d1b75e33984233e864795c8b08 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 doc
 _build
+.rebar3
 rebar3
 rebar.lock
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a83cd4b881baa7b398aecfc0539e711f6821b44c..2f85824c2cc75985cdff68a96036cc2d69798990 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,10 +1,9 @@
 cache:
   paths:
-  - .rebar3
+    - .rebar3
 
 before_script:
   - export PATH=${ERL_HOME}/bin:$PATH
-  - rebar3 update
 
 stages:
   - test
@@ -13,6 +12,7 @@ stages:
 test:
   stage: test
   script:
+    - rebar3 update
     - rebar3 as test do eunit --cover --dir=test, cover --verbose
     - coverage.escript _build/test/cover/eunit.coverdata
 
@@ -22,10 +22,9 @@ hex_publish:
     - /^\d+[.]\d+[.]\d+$/ # Only publish HEAD tagged with semantic version
   script:
     - mkdir -p ~/.hex && printf "{key,<<\"$HEX_KEY\">>}.\n{username,<<\"$HEX_USERNAME\">>}.\n" > ~/.hex/hex.config
-    - mkdir -p ~/.config/rebar3 && printf "{plugins, [rebar3_hex]}.\n" > ~/.config/rebar3/rebar.config
     - echo "Y" | rebar3 hex publish
 
-aws_publish:
+aws_s3:
   stage: publish
   only:
     - /^\d+[.]\d+[.]\d+$/ # Only publish HEAD tagged with semantic version
diff --git a/rebar.config b/rebar.config
index 526bffc5395ef0ff5bea3ebff50323533e58a83b..600ee1a44d451ddb031374efc18efae98984a8c2 100644
--- a/rebar.config
+++ b/rebar.config
@@ -1,5 +1,7 @@
 {global_rebar_dir, ".rebar3"}.
 
+{plugins, [rebar3_hex]}.
+
 {relx, [
     {release, {tsuru, semver}, [tsuru]},
     {dev_mode, true},