From 0f14e9652f95b5d0e753f87ac08ece2ddef97cdc Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 19 Sep 2015 19:05:51 -0400 Subject: [PATCH] Release 0.4.0 --- .gitignore | 1 + HISTORY.md | 72 +++++++++++++++++++++++++++++ README.md | 4 +- contrib/dokku-installer.rb | 2 +- deb.mk | 12 ++--- debian/control | 4 +- debian/postinst | 28 +++++++++++ docs/development/release-process.md | 2 + docs/home.html | 4 +- docs/index.md | 4 +- docs/installation.md | 4 +- 11 files changed, 120 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index c1b47c1e0..555f976e9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ stack.tgz build tmp *.deb +.ruby-version diff --git a/HISTORY.md b/HISTORY.md index fb4cb16ba..b27440084 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,77 @@ # History +## 0.4.0 + +This is our first minor release in almost a year. Many new features and removals have occurred, so here is a neat summary: + +- Plugins are now triggered via `plugn`. Notably, you'll need add a `plugin.toml` to describe the plugin as well as use `plugn trigger` instead of `pluginhook` to trigger plugin callbacks. Please see the [plugin creation documentation](http://progrium.viewdocs.io/dokku/development/plugin-creation/) for more details. +- A few new official plugins have been added to the core, including [image tagging](http://progrium.viewdocs.io/dokku/application-deployment/), [certificate management](http://progrium.viewdocs.io/dokku/deployment/ssl-configuration/), a tar-based deploy solution, and much more. Check out the *New Features* section for more details. +- We've removed a few deprecated plugin callbacks. Please see the [plugin triggers documentation](http://progrium.viewdocs.io/dokku/development/plugin-triggers/) to see what is available. +- [Official datastorage plugins](https://github.com/dokku) have been created for the most commonly used datastores. If you previously used/maintained a community contributed plugin, please check these out. We'll be adding more official plugins as time goes on. + +Thanks to the *many* contributors for making this release our best release so far, and special thanks to both @michaelshobbs and @Flink for pushing along the `0.4.0` release! + +### Deprecations and Removals + +- #1372: @SonicHedgehog Do no longer force-install a default nginx.conf +- #1415: @tilgovi Remove uses of (un)set-norestart +- #1432: @josegonzalez Delete unmaintained AUTHORS file +- #1450: @michaelshobbs Rename event plugin buildstep hooks to buildpack + +### Bug Fixes + +- #1344: @AdamVig Add better error checking on nginx:import-ssl +- #1417: @josegonzalez Expose host and port in vagrant build vm +- #1418: @josegonzalez Use cgroupfs-mount as alternative package to cgroup-lite dependency +- #1419: @u2mejc Fix dokku ps over ssh +- #1422: @josegonzalez Guard against missing VHOST files when listing domains +- #1428: @jimeh Use `$PLUGIN_PATH` instead of `$(dirname $0)/..` +- #1430: @lubert Update vagrant box name to `bento/ubuntu-14.04` +- #1439: @michaelshobbs Fix tar tests by sleeping for 5 seconds +- #1447: @alanjds Properly detect app name in the official cli client +- #1449: @josegonzalez Match herokuish deb with released version number +- #1457: @lukechilds Bashstyle fixes +- #1463: @josegonzalez Update `Xenify Distro` option for linode stackscript +- #1464: @josegonzalez Limit number of log lines when calling `dokku logs -t` +- #1466: @josegonzalez Follow bashstyle conventions where possible +- #1471: @michaelshobbs Make the default scaling logic clearer +- #1475: @josegonzalez Fix issue where restart on failure option overrode existing DOCKER_ARGS + +### New features + +- #1225: @michaelshobbs Add tags plugin to handle image tagging and deployment of tagged app images +- #1228: @michaelshobbs Use plugn instead of pluginhook to trigger plugin hooks +- #1402: @josegonzalez Consolidate configuration management into config plugin +- #1414: @michaelshobbs Add certs plugin for certificate management +- #1420: @josegonzalez Add `dokku enter` for connecting to an app container +- #1421: @basicer Add tar plugin to manage tar-based deployments +- #1423: @josegonzalez Set `DYNO_TYPE_NUMBER` environment variable for each container +- #1431: @josegonzalez Add helper function for inspecting the state of a container +- #1444: @josegonzalez Extract cleanup command into common function +- #1445: @josegonzalez Create CONTRIBUTING.md +- #1455: @michaelshobbs Continue and log an event if/when container retirement fails +- #1458: @michaelshobbs Set Herokuish `TRACE=true` when `DOKKU_TRACE` is set +- #1460: @michaelshobbs Bump herokuish version to 0.3.3 +- #1465: @josegonzalez Set DYNO environment variable to heroku-compatible value +- #1467: @josegonzalez Upgrade dokku installation to use docker-engine +- #1468: @michaelshobbs Clean up semver logic and run install-dependencies after package installation +- #1469: @isundaylee Add nginx:access-logs and nginx:error-logs commands +- #1470: @assaf Add nginx configuration for running behind load balancer +- #1472: @michaelshobbs Use processes defined in `Procfile` when generating `DOKKU_SCALE` file +- #1473: @josegonzalez Handle crashing containers by using restart=on-failure policy +- #1476: @michaelshobbs Support static nginx port when deploying without an application VHOST +- #1476: nginx proxy without VHOST +- #1477: @arthurschreiber Support removing config variables that contain `\n`. + +### Documentation + +- #1407: @ertrzyiks Correct DOKKU_DOCKERFILE_PORT variable name in docs +- #1408: @josegonzalez Add links to official dokku datastorage plugins +- #1426: @henrik Update memcached link to maintained fork +- #1437: @Flink Update compatibility version for several plugins +- #1446: @johnfraney Correct nginx documentation +- #1478: @eljojo Fix naming of herokuish package in installation docs + ## 0.3.26 This release has a few new features, the largest of which is switching from buildstep to herokuish for building containers. Going forward, this should help ensure that built containers are as close to heroku containers as possible, and also allow us to be on the cutting edge of heroku buildpack support. Props to @michaelshobbs for his work on herokuish. diff --git a/README.md b/README.md index 1d9a9600f..3ae8d7173 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ Docker powered mini-Heroku. The smallest PaaS implementation you've ever seen. S To install the latest stable release, you can run the following commands as a user that has access to `sudo`: - wget https://raw.github.com/progrium/dokku/v0.3.26/bootstrap.sh - sudo DOKKU_TAG=v0.3.26 bash bootstrap.sh + wget https://raw.github.com/progrium/dokku/v0.4.0/bootstrap.sh + sudo DOKKU_TAG=v0.4.0 bash bootstrap.sh ### Upgrading diff --git a/contrib/dokku-installer.rb b/contrib/dokku-installer.rb index 05c5676fa..e523f2c00 100755 --- a/contrib/dokku-installer.rb +++ b/contrib/dokku-installer.rb @@ -21,7 +21,7 @@ if ARGV[0] == "onboot" exit end -version = "v0.3.26" +version = "v0.4.0" dokku_root = ENV["DOKKU_ROOT"] || "/home/dokku" admin_keys = `cat /root/.ssh/authorized_keys`.split("\n") hostname = `bash -c '[[ $(dig +short $HOSTNAME) ]] && echo $HOSTNAME || curl icanhazip.com'`.strip diff --git a/deb.mk b/deb.mk index a5e11d4c1..7d7993ddb 100644 --- a/deb.mk +++ b/deb.mk @@ -10,13 +10,13 @@ DOKKU_ARCHITECTURE = amd64 PLUGN_DESCRIPTION = 'Hook system that lets users extend your application with plugins' PLUGN_REPO_NAME ?= progrium/plugn -PLUGN_VERSION ?= 0.1.0 +PLUGN_VERSION ?= 0.2.0 PLUGN_ARCHITECTURE = amd64 PLUGN_PACKAGE_NAME = plugn_$(PLUGN_VERSION)_$(PLUGN_ARCHITECTURE).deb SSHCOMMAND_DESCRIPTION = 'Turn SSH into a thin client specifically for your app' SSHCOMMAND_REPO_NAME ?= progrium/sshcommand -SSHCOMMAND_VERSION ?= 0.0.1 +SSHCOMMAND_VERSION ?= 0.1.0 SSHCOMMAND_ARCHITECTURE = amd64 SSHCOMMAND_PACKAGE_NAME = sshcommand_$(SSHCOMMAND_VERSION)_$(SSHCOMMAND_ARCHITECTURE).deb @@ -86,13 +86,13 @@ deb-dokku: deb-setup cp -r debian /tmp/build/DEBIAN mkdir -p /tmp/build/usr/local/bin - mkdir -p /tmp/build/var/lib/dokku + mkdir -p /tmp/build/var/lib/dokku/core-plugins/available mkdir -p /tmp/build/usr/local/share/man/man1 mkdir -p /tmp/build/usr/local/share/dokku/contrib cp dokku /tmp/build/usr/local/bin - cp -r plugins /tmp/build/var/lib/dokku - find plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read plugin; do touch /tmp/build/var/lib/dokku/plugins/$$plugin/.core; done + cp -r plugins/* /tmp/build/var/lib/dokku/core-plugins/available + find plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read plugin; do touch /tmp/build/var/lib/dokku/core-plugins/available/$$plugin/.core; done $(MAKE) help2man $(MAKE) addman cp /usr/local/share/man/man1/dokku.1 /tmp/build/usr/local/share/man/man1/dokku.1 @@ -128,7 +128,7 @@ deb-plugn: deb-setup mkdir -p /tmp/build/usr/local/bin $(GOPATH) sudo apt-get update -qq > /dev/null sudo apt-get install -qq -y git golang mercurial 2>&1 > /dev/null - export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && go get "golang.org/x/crypto/ssh/terminal" + export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && cd /tmp/tmp/plugn && make deps export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && cd /tmp/tmp/plugn && go build -o plugn mv /tmp/tmp/plugn/plugn /tmp/build/usr/local/bin/plugn diff --git a/debian/control b/debian/control index b73946dac..e162f6181 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Version: 0.3.12 Section: base Priority: optional Architecture: amd64 -Depends: locales, git, make, curl, software-properties-common, docker-engine | lxc-docker, gcc, python-software-properties, man-db, herokuish, sshcommand, plugn -Pre-Depends: nginx, dnsutils, ruby, ruby-dev, rubygem-rack, rubygem-rack-protection, rubygem-sinatra, rubygem-tilt, apparmor, cgroupfs-mount | cgroup-lite +Depends: locales, git, make, curl, software-properties-common, docker-engine | lxc-docker, gcc, python-software-properties, man-db, herokuish, sshcommand +Pre-Depends: nginx, dnsutils, ruby, ruby-dev, rubygem-rack, rubygem-rack-protection, rubygem-sinatra, rubygem-tilt, apparmor, cgroupfs-mount | cgroup-lite, plugn Maintainer: Jose Diaz-Gonzalez Description: Docker powered mini-Heroku in around 100 lines of Bash diff --git a/debian/postinst b/debian/postinst index 07c27fe4e..4218e602a 100755 --- a/debian/postinst +++ b/debian/postinst @@ -16,7 +16,35 @@ case "$1" in sshcommand create dokku /usr/local/bin/dokku egrep -i "^docker" /etc/group || groupadd docker usermod -aG docker dokku + + # setup plugin directories + # should be replaced by `plugn init` + mkdir -p /var/lib/dokku/core-plugins/available /var/lib/dokku/plugins/available + mkdir -p /var/lib/dokku/core-plugins/enabled /var/lib/dokku/plugins/enabled + touch /var/lib/dokku/core-plugins/config.toml /var/lib/dokku/plugins/config.toml + + # migrate old plugins + find /var/lib/dokku/plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read plugin; do + if [ "$plugin" = "available" ] || [ "$plugin" = "enabled" ]; then + continue + elif [ -f /var/lib/dokku/plugins/$plugin/.core ]; then + rm -rf /var/lib/dokku/plugins/$plugin + elif [ ! -d /var/lib/dokku/plugins/available/$plugin ]; then + mv /var/lib/dokku/plugins/$plugin /var/lib/dokku/plugins/available; + fi + done + + # enable all core plugins + find /var/lib/dokku/core-plugins/available -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read plugin; do + if [ ! -d /var/lib/dokku/plugins/available/$plugin ]; then + ln -s /var/lib/dokku/core-plugins/available/$plugin /var/lib/dokku/plugins/available/$plugin; + PLUGIN_PATH=/var/lib/dokku/core-plugins plugn enable $plugin + PLUGIN_PATH=/var/lib/dokku/plugins plugn enable $plugin + fi + done + dokku plugin:install --core + rm -f /home/dokku/VERSION cp /var/lib/dokku/STABLE_VERSION /home/dokku/VERSION diff --git a/docs/development/release-process.md b/docs/development/release-process.md index a50e85303..9182cfeaa 100644 --- a/docs/development/release-process.md +++ b/docs/development/release-process.md @@ -5,6 +5,8 @@ Dokku is released in intervals *at most* three weeks apart, though may be releas To propose a release, the following tasks need to be performed: - The installable version must be changed in the `docs/installation.md` file. +- The installable version must be changed in the `docs/home.html` file +- The installable version must be changed in the `docs/index.md` file - The installable version must be changed in the `README.md` file. - The installable version must be changed in the `contrib/dokku-installer.rb` file. - A list of changes must be made in the `HISTORY.md`. diff --git a/docs/home.html b/docs/home.html index db01d6187..cd631dc73 100644 --- a/docs/home.html +++ b/docs/home.html @@ -64,12 +64,12 @@

~ $ - wget https://raw.github.com/progrium/dokku/v0.3.26/bootstrap.sh + wget https://raw.github.com/progrium/dokku/v0.4.0/bootstrap.sh

~ $ - sudo DOKKU_TAG=v0.3.26 bash bootstrap.sh + sudo DOKKU_TAG=v0.4.0 bash bootstrap.sh

# => Go to your server's IP and follow the web installer diff --git a/docs/index.md b/docs/index.md index 816c5d3ef..ab88cbe31 100644 --- a/docs/index.md +++ b/docs/index.md @@ -15,12 +15,12 @@

~ $ - wget https://raw.github.com/progrium/dokku/v0.3.26/bootstrap.sh + wget https://raw.github.com/progrium/dokku/v0.4.0/bootstrap.sh

~ $ - sudo DOKKU_TAG=v0.3.26 bash bootstrap.sh + sudo DOKKU_TAG=v0.4.0 bash bootstrap.sh

# => Go to your server's IP and follow the web installer diff --git a/docs/installation.md b/docs/installation.md index 2161b6236..83c8ef04c 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -14,8 +14,8 @@ To install the latest stable version of dokku, you can run the following bootstr ```shell # installs dokku via apt-get -wget https://raw.github.com/progrium/dokku/v0.3.26/bootstrap.sh -sudo DOKKU_TAG=v0.3.26 bash bootstrap.sh +wget https://raw.github.com/progrium/dokku/v0.4.0/bootstrap.sh +sudo DOKKU_TAG=v0.4.0 bash bootstrap.sh # By default, this will do cli-based setup, though you may *also* # go to your server's IP and follow the web installer