diff --git a/.travis.yml b/.travis.yml
index dc0283b15..ea7537e9b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,6 +4,9 @@ go:
 - 1.9
 services:
 - docker
+before_install:
+  - pip install --user awscli
+  - export PATH=$PATH:$HOME/.local/bin
 jobs:
   include:
   - stage: Check generated contents are up to date and code is formatted.
@@ -18,3 +21,5 @@ jobs:
     script: ./scripts/travis-e2e.sh
   - stage: E2e helm
     script: ./scripts/travis-e2e-helm.sh
+  - stage: helm update
+    script: 'if [ "$TRAVIS_BRANCH" == "master" ]; then make helm-packages; fi'
diff --git a/Makefile b/Makefile
index dec2310c7..90ff7c839 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,6 @@ PROMU := $(GOPATH)/bin/promu
 PREFIX ?= $(shell pwd)
 
 pkgs = $(shell go list ./... | grep -v /vendor/ | grep -v /test/)
-HELM_BUCKET_NAME=coreos-charts
 
 all: check-license format build test
 
@@ -77,16 +76,14 @@ jsonnet:
 jsonnet-docker:
 	docker build -f scripts/jsonnet/Dockerfile -t po-jsonnet .
 
-helm-package:
-	mkdir -p /tmp/helm
-	(cd $(CURDIR)/helm && helm package $(HELM_PACKAGES)  -d /tmp/helm && cd -)
-	helm repo index /tmp/helm --url https://s3-eu-west-1.amazonaws.com/$(HELM_BUCKET_NAME)/stable/ --debug
-	aws s3 sync --acl public-read /tmp/helm/ s3://$(HELM_BUCKET_NAME)/stable/
 
 helm-packages:
-	make helm-package HELM_PACKAGES=exporter-*
-	make helm-package HELM_PACKAGES="alertmanager grafana prometheus prometheus-operator"
-	(cd $(CURDIR)/helm/'kube-prometheus' && helm dep update && cd -)
-	make helm-package HELM_PACKAGES='kube-prometheus'
+
+	helm/hack/helm-package.sh "alertmanager grafana prometheus prometheus-operator exporter-kube-api \
+		exporter-kube-dns exporter-kube-scheduler exporter-kubelets exporter-node \
+		exporter-kube-controller-manager exporter-kube-etcd exporter-kube-state exporter-kubernetes"
+	helm/hack/sync-repo.sh
+	helm/hack/helm-package.sh kube-prometheus
+	helm/hack/sync-repo.sh
 
 .PHONY: all build crossbuild test format check-license container e2e-test e2e-status e2e clean-e2e embedmd apidocgen docs
diff --git a/helm/hack/helm-package.sh b/helm/hack/helm-package.sh
index 5db55ce12..faff002c2 100755
--- a/helm/hack/helm-package.sh
+++ b/helm/hack/helm-package.sh
@@ -37,3 +37,4 @@ do
 done
 
 helm repo index ${HELM_CHARTS_PACKAGED_DIR} --url https://s3-eu-west-1.amazonaws.com/${HELM_BUCKET_NAME}/stable/ --debug
+
diff --git a/helm/hack/sync-repo.sh b/helm/hack/sync-repo.sh
new file mode 100755
index 000000000..28007bc4a
--- /dev/null
+++ b/helm/hack/sync-repo.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+set -o errexit
+set -o nounset
+set -o pipefail
+set -o xtrace
+
+HELM_BUCKET_NAME="coreos-charts"
+HELM_CHARTS_PACKAGED_DIR=${1:-"/tmp/helm-packaged"}
+aws s3 sync --acl public-read ${HELM_CHARTS_PACKAGED_DIR} s3://${HELM_BUCKET_NAME}/stable/
\ No newline at end of file
diff --git a/helm/kube-prometheus/requirements.yaml b/helm/kube-prometheus/requirements.yaml
index b5760cca7..d1e0b13de 100644
--- a/helm/kube-prometheus/requirements.yaml
+++ b/helm/kube-prometheus/requirements.yaml
@@ -4,6 +4,14 @@ dependencies:
     #e2e-repository: file://../alertmanager
     repository: https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/
 
+  - name: prometheus-operator
+    version: 0.0.7
+    repository: https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/
+    
+  - name: grafana
+    version: 0.0.4
+    repository: https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/
+    
   - name: prometheus
     version: 0.0.5
     #e2e-repository: file://../prometheus